mirror of
https://github.com/status-im/realm-js.git
synced 2025-01-12 07:14:23 +00:00
Merge pull request #34 from realm/al-android
Support compilation for android with gcc/remove apple specific code
This commit is contained in:
commit
d163d68b83
2
external/pegtl
vendored
2
external/pegtl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 49a5b0a49e154b362ef9cf1e756dd8673ddd4efe
|
Subproject commit 3c4128a7e7e1288eb746418ea60c41477358f26a
|
@ -199,6 +199,22 @@ void RealmCoordinator::clear_cache()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RealmCoordinator::clear_all_caches()
|
||||||
|
{
|
||||||
|
std::vector<std::weak_ptr<RealmCoordinator>> to_clear;
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(s_coordinator_mutex);
|
||||||
|
for (auto iter : s_coordinators_per_path) {
|
||||||
|
to_clear.push_back(iter.second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (auto weak_coordinator : to_clear) {
|
||||||
|
if (auto coordinator = weak_coordinator.lock()) {
|
||||||
|
coordinator->clear_cache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RealmCoordinator::send_commit_notifications()
|
void RealmCoordinator::send_commit_notifications()
|
||||||
{
|
{
|
||||||
REALM_ASSERT(!m_config.read_only);
|
REALM_ASSERT(!m_config.read_only);
|
||||||
|
@ -66,6 +66,9 @@ public:
|
|||||||
// cached instances will have odd results
|
// cached instances will have odd results
|
||||||
static void clear_cache();
|
static void clear_cache();
|
||||||
|
|
||||||
|
// Clears all caches on existing coordinators
|
||||||
|
static void clear_all_caches();
|
||||||
|
|
||||||
// Explicit constructor/destructor needed for the unique_ptrs to forward-declared types
|
// Explicit constructor/destructor needed for the unique_ptrs to forward-declared types
|
||||||
RealmCoordinator();
|
RealmCoordinator();
|
||||||
~RealmCoordinator();
|
~RealmCoordinator();
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
class IndexSet {
|
class IndexSet {
|
||||||
|
@ -17,10 +17,9 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "list.hpp"
|
#include "list.hpp"
|
||||||
|
|
||||||
#include "results.hpp"
|
#include "results.hpp"
|
||||||
#include "shared_realm.hpp"
|
|
||||||
|
|
||||||
|
#include <realm/util/to_string.hpp>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
using namespace realm;
|
using namespace realm;
|
||||||
@ -45,8 +44,8 @@ void List::verify_valid_row(size_t row_ndx, bool insertion) const
|
|||||||
{
|
{
|
||||||
size_t size = m_link_view->size();
|
size_t size = m_link_view->size();
|
||||||
if (row_ndx > size || (!insertion && row_ndx == size)) {
|
if (row_ndx > size || (!insertion && row_ndx == size)) {
|
||||||
throw std::out_of_range("Index " + std::to_string(row_ndx) + " is outside of range 0..." +
|
throw std::out_of_range("Index " + util::to_string(row_ndx) + " is outside of range 0..." +
|
||||||
std::to_string(size) + ".");
|
util::to_string(size) + ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,20 @@
|
|||||||
/* Copyright 2015 Realm Inc - All Rights Reserved
|
////////////////////////////////////////////////////////////////////////////
|
||||||
* Proprietary and Confidential
|
//
|
||||||
*/
|
// Copyright 2016 Realm Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef REALM_OBJECT_ACCESSOR_HPP
|
#ifndef REALM_OBJECT_ACCESSOR_HPP
|
||||||
#define REALM_OBJECT_ACCESSOR_HPP
|
#define REALM_OBJECT_ACCESSOR_HPP
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "object_schema.hpp"
|
#include "object_schema.hpp"
|
||||||
|
|
||||||
#include "object_store.hpp"
|
#include "object_store.hpp"
|
||||||
#include "property.hpp"
|
#include "property.hpp"
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
class Group;
|
class Group;
|
||||||
struct Property;
|
class Property;
|
||||||
|
|
||||||
class ObjectSchema {
|
class ObjectSchema {
|
||||||
public:
|
public:
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <realm/table.hpp>
|
#include <realm/table.hpp>
|
||||||
#include <realm/table_view.hpp>
|
#include <realm/table_view.hpp>
|
||||||
#include <realm/util/assert.hpp>
|
#include <realm/util/assert.hpp>
|
||||||
|
#include <realm/util/to_string.hpp>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@ -504,7 +505,7 @@ bool ObjectStore::is_empty(const Group *group) {
|
|||||||
InvalidSchemaVersionException::InvalidSchemaVersionException(uint64_t old_version, uint64_t new_version) :
|
InvalidSchemaVersionException::InvalidSchemaVersionException(uint64_t old_version, uint64_t new_version) :
|
||||||
m_old_version(old_version), m_new_version(new_version)
|
m_old_version(old_version), m_new_version(new_version)
|
||||||
{
|
{
|
||||||
m_what = "Provided schema version " + std::to_string(old_version) + " is less than last set version " + std::to_string(new_version) + ".";
|
m_what = "Provided schema version " + util::to_string(old_version) + " is less than last set version " + util::to_string(new_version) + ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
DuplicatePrimaryKeyValueException::DuplicatePrimaryKeyValueException(std::string const& object_type, Property const& property) :
|
DuplicatePrimaryKeyValueException::DuplicatePrimaryKeyValueException(std::string const& object_type, Property const& property) :
|
||||||
@ -573,7 +574,7 @@ MismatchedPropertiesException::MismatchedPropertiesException(std::string const&
|
|||||||
m_what = "Target object type for property '" + old_property.name + "' do not match. Old type '" + old_property.object_type + "', new type '" + new_property.object_type + "'";
|
m_what = "Target object type for property '" + old_property.name + "' do not match. Old type '" + old_property.object_type + "', new type '" + new_property.object_type + "'";
|
||||||
}
|
}
|
||||||
else if (new_property.is_nullable != old_property.is_nullable) {
|
else if (new_property.is_nullable != old_property.is_nullable) {
|
||||||
m_what = "Nullability for property '" + old_property.name + "' has changed from '" + std::to_string(old_property.is_nullable) + "' to '" + std::to_string(new_property.is_nullable) + "'.";
|
m_what = "Nullability for property '" + old_property.name + "' has changed from '" + util::to_string(old_property.is_nullable) + "' to '" + util::to_string(new_property.is_nullable) + "'.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#ifndef REALM_OBJECT_STORE_HPP
|
#ifndef REALM_OBJECT_STORE_HPP
|
||||||
#define REALM_OBJECT_STORE_HPP
|
#define REALM_OBJECT_STORE_HPP
|
||||||
|
|
||||||
#include "object_schema.hpp"
|
#include "schema.hpp"
|
||||||
#include "property.hpp"
|
#include "property.hpp"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
@ -27,6 +27,8 @@
|
|||||||
#include <realm/group.hpp>
|
#include <realm/group.hpp>
|
||||||
#include <realm/link_view.hpp>
|
#include <realm/link_view.hpp>
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
class ObjectSchemaValidationException;
|
class ObjectSchemaValidationException;
|
||||||
class Schema;
|
class Schema;
|
||||||
|
@ -227,7 +227,7 @@ template<> struct action< or_op >
|
|||||||
template<> struct action< rule > { \
|
template<> struct action< rule > { \
|
||||||
static void apply( const input & in, ParserState & state ) { \
|
static void apply( const input & in, ParserState & state ) { \
|
||||||
DEBUG_PRINT_TOKEN(in.string()); \
|
DEBUG_PRINT_TOKEN(in.string()); \
|
||||||
state.add_expression(Expression{type, in.string()}); }};
|
state.add_expression(Expression(type, in.string())); }};
|
||||||
|
|
||||||
EXPRESSION_ACTION(dq_string_content, Expression::Type::String)
|
EXPRESSION_ACTION(dq_string_content, Expression::Type::String)
|
||||||
EXPRESSION_ACTION(sq_string_content, Expression::Type::String)
|
EXPRESSION_ACTION(sq_string_content, Expression::Type::String)
|
||||||
|
@ -30,6 +30,7 @@ struct Expression
|
|||||||
{
|
{
|
||||||
enum class Type { None, Number, String, KeyPath, Argument, True, False } type;
|
enum class Type { None, Number, String, KeyPath, Argument, True, False } type;
|
||||||
std::string s;
|
std::string s;
|
||||||
|
Expression(Type t = Type::None, std::string s = "") : type(t), s(s) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Predicate
|
struct Predicate
|
||||||
|
@ -29,6 +29,17 @@ namespace realm {
|
|||||||
namespace query_builder {
|
namespace query_builder {
|
||||||
using namespace parser;
|
using namespace parser;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T stot(const std::string s) {
|
||||||
|
std::istringstream iss(s);
|
||||||
|
T value;
|
||||||
|
iss >> value;
|
||||||
|
if (iss.fail()) {
|
||||||
|
throw std::invalid_argument("Cannot convert string '" + s + "'");
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
// check a precondition and throw an exception if it is not met
|
// check a precondition and throw an exception if it is not met
|
||||||
// this should be used iff the condition being false indicates a bug in the caller
|
// this should be used iff the condition being false indicates a bug in the caller
|
||||||
// of the function checking its preconditions
|
// of the function checking its preconditions
|
||||||
@ -272,12 +283,12 @@ void add_link_constraint_to_query(realm::Query &query,
|
|||||||
|
|
||||||
auto link_argument(const PropertyExpression &propExpr, const parser::Expression &argExpr, Arguments &args)
|
auto link_argument(const PropertyExpression &propExpr, const parser::Expression &argExpr, Arguments &args)
|
||||||
{
|
{
|
||||||
return args.object_index_for_argument(std::stoi(argExpr.s));
|
return args.object_index_for_argument(stot<int>(argExpr.s));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto link_argument(const parser::Expression &argExpr, const PropertyExpression &propExpr, Arguments &args)
|
auto link_argument(const parser::Expression &argExpr, const PropertyExpression &propExpr, Arguments &args)
|
||||||
{
|
{
|
||||||
return args.object_index_for_argument(std::stoi(argExpr.s));
|
return args.object_index_for_argument(stot<int>(argExpr.s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -299,7 +310,7 @@ struct ValueGetter<DateTime, TableGetter> {
|
|||||||
if (value.type != parser::Expression::Type::Argument) {
|
if (value.type != parser::Expression::Type::Argument) {
|
||||||
throw std::runtime_error("You must pass in a date argument to compare");
|
throw std::runtime_error("You must pass in a date argument to compare");
|
||||||
}
|
}
|
||||||
DateTime dt = args.datetime_for_argument(std::stoi(value.s));
|
DateTime dt = args.datetime_for_argument(stot<int>(value.s));
|
||||||
return dt.get_datetime();
|
return dt.get_datetime();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -309,7 +320,7 @@ struct ValueGetter<bool, TableGetter> {
|
|||||||
static bool convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static bool convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.bool_for_argument(std::stoi(value.s));
|
return args.bool_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
if (value.type != parser::Expression::Type::True && value.type != parser::Expression::Type::False) {
|
if (value.type != parser::Expression::Type::True && value.type != parser::Expression::Type::False) {
|
||||||
throw std::runtime_error("Attempting to compare bool property to a non-bool value");
|
throw std::runtime_error("Attempting to compare bool property to a non-bool value");
|
||||||
@ -323,9 +334,9 @@ struct ValueGetter<Double, TableGetter> {
|
|||||||
static Double convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static Double convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.double_for_argument(std::stoi(value.s));
|
return args.double_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
return std::stod(value.s);
|
return stot<double>(value.s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -334,9 +345,9 @@ struct ValueGetter<Float, TableGetter> {
|
|||||||
static Float convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static Float convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.float_for_argument(std::stoi(value.s));
|
return args.float_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
return std::stof(value.s);
|
return stot<float>(value.s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -345,9 +356,9 @@ struct ValueGetter<Int, TableGetter> {
|
|||||||
static Int convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static Int convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.long_for_argument(std::stoi(value.s));
|
return args.long_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
return std::stoll(value.s);
|
return stot<long long>(value.s);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -356,7 +367,7 @@ struct ValueGetter<String, TableGetter> {
|
|||||||
static std::string convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static std::string convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.string_for_argument(std::stoi(value.s));
|
return args.string_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
if (value.type != parser::Expression::Type::String) {
|
if (value.type != parser::Expression::Type::String) {
|
||||||
throw std::runtime_error("Attempting to compare String property to a non-String value");
|
throw std::runtime_error("Attempting to compare String property to a non-String value");
|
||||||
@ -370,7 +381,7 @@ struct ValueGetter<Binary, TableGetter> {
|
|||||||
static std::string convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
static std::string convert(TableGetter&&, const parser::Expression & value, Arguments &args)
|
||||||
{
|
{
|
||||||
if (value.type == parser::Expression::Type::Argument) {
|
if (value.type == parser::Expression::Type::Argument) {
|
||||||
return args.binary_for_argument(std::stoi(value.s));
|
return args.binary_for_argument(stot<int>(value.s));
|
||||||
}
|
}
|
||||||
throw std::runtime_error("Binary properties must be compared against a binary argument.");
|
throw std::runtime_error("Binary properties must be compared against a binary argument.");
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#define REALM_QUERY_BUILDER_HPP
|
#define REALM_QUERY_BUILDER_HPP
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <realm/util/to_string.hpp>
|
||||||
#include "parser.hpp"
|
#include "parser.hpp"
|
||||||
#include "object_accessor.hpp"
|
#include "object_accessor.hpp"
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ class ArgumentConverter : public Arguments
|
|||||||
|
|
||||||
ValueType &argument_at(size_t index) {
|
ValueType &argument_at(size_t index) {
|
||||||
if (index >= m_arguments.size()) {
|
if (index >= m_arguments.size()) {
|
||||||
throw std::out_of_range((std::string)"Argument index " + std::to_string(index) + " out of range 0.." + std::to_string(m_arguments.size()-1));
|
throw std::out_of_range((std::string)"Argument index " + util::to_string(index) + " out of range 0.." + util::to_string(m_arguments.size()-1));
|
||||||
}
|
}
|
||||||
return m_arguments[index];
|
return m_arguments[index];
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <realm/table_view.hpp>
|
#include <realm/table_view.hpp>
|
||||||
#include <realm/table.hpp>
|
#include <realm/table.hpp>
|
||||||
#include <realm/util/optional.hpp>
|
#include <realm/util/optional.hpp>
|
||||||
|
#include <realm/util/to_string.hpp>
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
template<typename T> class BasicRowExpr;
|
template<typename T> class BasicRowExpr;
|
||||||
@ -161,8 +162,8 @@ public:
|
|||||||
struct OutOfBoundsIndexException : public std::out_of_range
|
struct OutOfBoundsIndexException : public std::out_of_range
|
||||||
{
|
{
|
||||||
OutOfBoundsIndexException(size_t r, size_t c) :
|
OutOfBoundsIndexException(size_t r, size_t c) :
|
||||||
std::out_of_range((std::string)"Requested index " + std::to_string(r) +
|
std::out_of_range((std::string)"Requested index " + util::to_string(r) +
|
||||||
" greater than max " + std::to_string(c)),
|
" greater than max " + util::to_string(c)),
|
||||||
requested(r), valid_count(c) {}
|
requested(r), valid_count(c) {}
|
||||||
const size_t requested;
|
const size_t requested;
|
||||||
const size_t valid_count;
|
const size_t valid_count;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#ifndef REALM_SCHEMA_HPP
|
#ifndef REALM_SCHEMA_HPP
|
||||||
#define REALM_SCHEMA_HPP
|
#define REALM_SCHEMA_HPP
|
||||||
|
|
||||||
|
#include "object_schema.hpp"
|
||||||
#include "property.hpp"
|
#include "property.hpp"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -81,6 +81,9 @@ void Realm::open_with_config(const Config& config,
|
|||||||
read_only_group = std::make_unique<Group>(config.path, config.encryption_key.data(), Group::mode_ReadOnly);
|
read_only_group = std::make_unique<Group>(config.path, config.encryption_key.data(), Group::mode_ReadOnly);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (config.encryption_key.data() && config.encryption_key.size() != 64) {
|
||||||
|
throw InvalidEncryptionKeyException();
|
||||||
|
}
|
||||||
history = realm::make_client_history(config.path, config.encryption_key.data());
|
history = realm::make_client_history(config.path, config.encryption_key.data());
|
||||||
SharedGroup::DurabilityLevel durability = config.in_memory ? SharedGroup::durability_MemOnly :
|
SharedGroup::DurabilityLevel durability = config.in_memory ? SharedGroup::durability_MemOnly :
|
||||||
SharedGroup::durability_Full;
|
SharedGroup::durability_Full;
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
#ifndef REALM_REALM_HPP
|
#ifndef REALM_REALM_HPP
|
||||||
#define REALM_REALM_HPP
|
#define REALM_REALM_HPP
|
||||||
|
|
||||||
|
#include "schema.hpp"
|
||||||
|
|
||||||
#include <realm/handover_defs.hpp>
|
#include <realm/handover_defs.hpp>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -26,6 +28,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
namespace realm {
|
namespace realm {
|
||||||
class BindingContext;
|
class BindingContext;
|
||||||
@ -33,7 +36,6 @@ namespace realm {
|
|||||||
class Group;
|
class Group;
|
||||||
class Realm;
|
class Realm;
|
||||||
class RealmDelegate;
|
class RealmDelegate;
|
||||||
class Schema;
|
|
||||||
class SharedGroup;
|
class SharedGroup;
|
||||||
typedef std::shared_ptr<Realm> SharedRealm;
|
typedef std::shared_ptr<Realm> SharedRealm;
|
||||||
typedef std::weak_ptr<Realm> WeakRealm;
|
typedef std::weak_ptr<Realm> WeakRealm;
|
||||||
@ -229,6 +231,11 @@ namespace realm {
|
|||||||
public:
|
public:
|
||||||
UnitializedRealmException(std::string message) : std::runtime_error(message) {}
|
UnitializedRealmException(std::string message) : std::runtime_error(message) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class InvalidEncryptionKeyException : public std::runtime_error {
|
||||||
|
public:
|
||||||
|
InvalidEncryptionKeyException() : std::runtime_error("Encryption key must be 64 bytes.") {}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* defined(REALM_REALM_HPP) */
|
#endif /* defined(REALM_REALM_HPP) */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user