My Project 3.2.0
C++ Distributed Hash Table
|
Namespaces | |
namespace | crypto |
namespace | log |
Typedefs | |
using | ValuesExport = std::pair<InfoHash, Blob> |
using | QueryCallback = std::function<bool(const std::vector<std::shared_ptr<FieldValueIndex>>& fields)> |
using | GetCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values)> |
using | ValueCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values, bool expired)> |
using | GetCallbackSimple = std::function<bool(std::shared_ptr<Value> value)> |
using | ShutdownCallback = std::function<void()> |
using | IdentityAnnouncedCb = std::function<void(bool)> |
using | PublicAddressChangedCb = std::function<void(std::vector<SockAddr>)> |
using | CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto::Certificate>>(const InfoHash& pk_id)> |
using | DoneCallback = std::function<void(bool success, const std::vector<std::shared_ptr<Node>>& nodes)> |
using | DoneCallbackSimple = std::function<void(bool success)> |
typedef bool(* | GetCallbackRaw) (std::shared_ptr< Value >, void *user_data) |
typedef bool(* | ValueCallbackRaw) (std::shared_ptr< Value >, bool expired, void *user_data) |
typedef void(* | DoneCallbackRaw) (bool, std::vector< std::shared_ptr< Node > > *, void *user_data) |
typedef void(* | ShutdownCallbackRaw) (void *user_data) |
typedef void(* | DoneCallbackSimpleRaw) (bool, void *user_data) |
typedef bool(* | FilterRaw) (const Value &, void *user_data) |
using | RestRouter = restinio::router::express_router_t<> |
using | RequestStatus = restinio::request_handling_status_t |
using | byte = uint8_t |
using | InfoHash = Hash<HASH_LEN> |
using | h256 = Hash<32> |
using | PkId = h256 |
using | Logger = log::Logger |
using | Tid = uint32_t |
using | SocketCb = std::function<void(const Sp<Node>&, net::RequestAnswer&&)> |
using | NetId = uint32_t |
using | want_t = int_fast8_t |
template<class T> | |
using | Sp = std::shared_ptr<T> |
using | clock = std::chrono::steady_clock |
using | system_clock = std::chrono::system_clock |
using | time_point = clock::time_point |
using | duration = clock::duration |
using | Blob = std::vector<uint8_t> |
using | StorePolicy = std::function<bool(InfoHash key, std::shared_ptr<Value>& value, const InfoHash& from, const SockAddr& addr)> |
using | EditPolicy = std::function<bool(InfoHash key, const std::shared_ptr<Value>& old_val, std::shared_ptr<Value>& new_val, const InfoHash& from, const SockAddr& addr)> |
Enumerations | |
enum class | NodeStatus { Disconnected , Connecting , Connected } |
enum class | ImStatus : uint8_t { NONE = 0 , TYPING , RECEIVED , READ } |
enum class | PushType { None = 0 , Android , iOS , UnifiedPush } |
Functions | |
constexpr const char * | statusToStr (NodeStatus status) |
OPENDHT_PUBLIC GetCallbackSimple | bindGetCb (GetCallbackRaw raw_cb, void *user_data) |
OPENDHT_PUBLIC GetCallback | bindGetCb (GetCallbackSimple cb) |
OPENDHT_PUBLIC ValueCallback | bindValueCb (ValueCallbackRaw raw_cb, void *user_data) |
OPENDHT_PUBLIC ShutdownCallback | bindShutdownCb (ShutdownCallbackRaw shutdown_cb_raw, void *user_data) |
OPENDHT_PUBLIC DoneCallback | bindDoneCb (DoneCallbackSimple donecb) |
OPENDHT_PUBLIC DoneCallback | bindDoneCb (DoneCallbackRaw raw_cb, void *user_data) |
OPENDHT_PUBLIC DoneCallbackSimple | bindDoneCbSimple (DoneCallbackSimpleRaw raw_cb, void *user_data) |
OPENDHT_PUBLIC Value::Filter | bindFilterRaw (FilterRaw raw_filter, void *user_data) |
template<size_t N> | |
std::ostream & | operator<< (std::ostream &s, const Hash< N > &h) |
template<size_t N> | |
std::istream & | operator>> (std::istream &s, Hash< N > &h) |
std::string | toHex (const uint8_t *data, size_t size) |
std::string | toHex (const std::vector< uint8_t > &data) |
OPENDHT_PUBLIC void | print_addr (std::ostream &os, const sockaddr *sa, socklen_t slen) |
OPENDHT_PUBLIC std::string | print_addr (const sockaddr *sa, socklen_t slen) |
OPENDHT_PUBLIC std::string | print_addr (const sockaddr_storage &ss, socklen_t sslen) |
OPENDHT_PUBLIC bool | operator== (const SockAddr &a, const SockAddr &b) |
OPENDHT_PUBLIC const char * | version () |
template<typename Key, typename Item, typename Condition> | |
void | erase_if (std::map< Key, Item > &map, const Condition &condition) |
OPENDHT_PUBLIC std::pair< std::string, std::string > | splitPort (const std::string &s) |
time_point | from_time_t (std::time_t t) |
std::time_t | to_time_t (time_point t) |
std::string | to_str (double d) |
template<class DT> | |
static double | print_dt (DT d) |
template<class DT> | |
static std::string | print_duration (DT d) |
template<class TimePoint> | |
static std::string | print_time_relative (TimePoint now, TimePoint d) |
OPENDHT_PUBLIC Blob | unpackBlob (const msgpack::object &o) |
template<typename Type> | |
Blob | packMsg (const Type &t) |
template<typename Type> | |
Type | unpackMsg (Blob b) |
msgpack::unpacked | unpackMsg (Blob b) |
msgpack::object * | findMapValue (const msgpack::object &map, const char *key, size_t length) |
msgpack::object * | findMapValue (const msgpack::object &map, const char *key) |
msgpack::object * | findMapValue (const msgpack::object &map, std::string_view key) |
static constexpr auto | VALUE_KEY_ID ("id") |
static const std::string | VALUE_KEY_DAT ("dat") |
static const std::string | VALUE_KEY_PRIO ("p") |
static const std::string | VALUE_KEY_SIGNATURE ("sig") |
static const std::string | VALUE_KEY_SEQ ("seq") |
static const std::string | VALUE_KEY_DATA ("data") |
static const std::string | VALUE_KEY_OWNER ("owner") |
static const std::string | VALUE_KEY_TYPE ("type") |
static const std::string | VALUE_KEY_TO ("to") |
static const std::string | VALUE_KEY_BODY ("body") |
static const std::string | VALUE_KEY_USERTYPE ("utype") |
template<typename T, typename std::enable_if< std::is_base_of< Value::SerializableBase, T >::value, T >::type * = nullptr> | |
Value::Filter | getFilterSet (Value::Filter f) |
template<typename T, typename std::enable_if< std::is_base_of< Value::SerializableBase, T >::value, T >::type * = nullptr> | |
Value::Filter | getFilterSet () |
template<class T> | |
std::vector< T > | unpackVector (const std::vector< std::shared_ptr< Value > > &vals) |
Variables | |
static constexpr size_t | DEFAULT_STORAGE_LIMIT {1024 * 1024 * 64} |
OPENDHT_PUBLIC const std::array< std::reference_wrapper< const ValueType >, 5 > | DEFAULT_TYPES |
OPENDHT_PUBLIC const std::array< std::reference_wrapper< const ValueType >, 1 > | DEFAULT_INSECURE_TYPES |
OPENDHT_PUBLIC const HexMap | hex_map |
static constexpr unsigned | TARGET_NODES {8} |
const ValueType | CERTIFICATE_TYPE |
static constexpr const size_t | MAX_VALUE_SIZE {1024 * 64} |
OpenDHT C++ namespace
using dht::Blob = std::vector<uint8_t> |
using dht::byte = uint8_t |
Definition at line 54 of file infohash.h.
using dht::CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto::Certificate>>(const InfoHash& pk_id)> |
Definition at line 178 of file callbacks.h.
using dht::DoneCallback = std::function<void(bool success, const std::vector<std::shared_ptr<Node>>& nodes)> |
Definition at line 179 of file callbacks.h.
typedef void(* dht::DoneCallbackRaw) (bool, std::vector< std::shared_ptr< Node > > *, void *user_data) |
Definition at line 184 of file callbacks.h.
using dht::DoneCallbackSimple = std::function<void(bool success)> |
Definition at line 180 of file callbacks.h.
typedef void(* dht::DoneCallbackSimpleRaw) (bool, void *user_data) |
Definition at line 186 of file callbacks.h.
using dht::EditPolicy = std::function<bool(InfoHash key, const std::shared_ptr<Value>& old_val, std::shared_ptr<Value>& new_val, const InfoHash& from, const SockAddr& addr)> |
An edition policy is applied once to every incoming value storage requests, if a value already exists for this key and value id. If the policy returns false, the edition request is ignored. The default behavior is to deny edition (see {ValueType::DEFAULT_EDIT_POLICY}). Some {ValueType}s may override this behavior (e.g. SignedValue).
key | the key where the value is stored. |
old_val | the previously stored value. |
new_val | the new value to be stored. The value can be edited by the edit policy. |
from | id of the requesting node. |
form_addr | network address of the incoming request. |
from_len | network address lendth of the incoming request. |
typedef bool(* dht::FilterRaw) (const Value &, void *user_data) |
Definition at line 187 of file callbacks.h.
using dht::GetCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values)> |
Definition at line 171 of file callbacks.h.
typedef bool(* dht::GetCallbackRaw) (std::shared_ptr< Value >, void *user_data) |
Definition at line 182 of file callbacks.h.
using dht::GetCallbackSimple = std::function<bool(std::shared_ptr<Value> value)> |
Definition at line 173 of file callbacks.h.
Definition at line 284 of file infohash.h.
using dht::IdentityAnnouncedCb = std::function<void(bool)> |
Definition at line 175 of file callbacks.h.
using dht::InfoHash = Hash<HASH_LEN> |
Definition at line 283 of file infohash.h.
using dht::Logger = log::Logger |
Definition at line 285 of file infohash.h.
using dht::PublicAddressChangedCb = std::function<void(std::vector<SockAddr>)> |
Definition at line 176 of file callbacks.h.
using dht::QueryCallback = std::function<bool(const std::vector<std::shared_ptr<FieldValueIndex>>& fields)> |
Definition at line 170 of file callbacks.h.
using dht::RequestStatus = restinio::request_handling_status_t |
Definition at line 63 of file dht_proxy_server.h.
using dht::RestRouter = restinio::router::express_router_t<> |
Definition at line 62 of file dht_proxy_server.h.
using dht::ShutdownCallback = std::function<void()> |
Definition at line 174 of file callbacks.h.
typedef void(* dht::ShutdownCallbackRaw) (void *user_data) |
Definition at line 185 of file callbacks.h.
using dht::SocketCb = std::function<void(const Sp<Node>&, net::RequestAnswer&&)> |
using dht::StorePolicy = std::function<bool(InfoHash key, std::shared_ptr<Value>& value, const InfoHash& from, const SockAddr& addr)> |
A storage policy is applied once to every incoming value storage requests. If the policy returns false, the value is dropped.
key | the key where the storage is requested. |
value | the value to be stored. The value can be edited by the storage policy. |
from | id of the requesting node. |
form_addr | network address of the incoming request. |
from_len | network address lendth of the incoming request. |
using dht::ValueCallback = std::function<bool(const std::vector<std::shared_ptr<Value>>& values, bool expired)> |
Definition at line 172 of file callbacks.h.
typedef bool(* dht::ValueCallbackRaw) (std::shared_ptr< Value >, bool expired, void *user_data) |
Definition at line 183 of file callbacks.h.
Definition at line 168 of file callbacks.h.
|
strong |
Definition at line 25 of file default_types.h.
|
strong |
Current status of a DHT node.
Definition at line 42 of file callbacks.h.
|
strong |
Definition at line 40 of file dht_proxy_server.h.
void dht::erase_if | ( | std::map< Key, Item > & | map, |
const Condition & | condition ) |
|
inline |
|
inline |
Value::Filter dht::getFilterSet | ( | ) |
Value::Filter dht::getFilterSet | ( | Value::Filter | f | ) |
std::ostream & dht::operator<< | ( | std::ostream & | s, |
const Hash< N > & | h ) |
Definition at line 288 of file infohash.h.
std::istream & dht::operator>> | ( | std::istream & | s, |
Hash< N > & | h ) |
Definition at line 295 of file infohash.h.
|
static |
|
static |
|
static |
OPENDHT_PUBLIC std::pair< std::string, std::string > dht::splitPort | ( | const std::string & | s | ) |
Split "[host]:port" or "host:port" to pair<"host", "port">.
|
inlineconstexpr |
Definition at line 49 of file callbacks.h.
|
inline |
Definition at line 373 of file infohash.h.
|
inline |
Definition at line 362 of file infohash.h.
OPENDHT_PUBLIC Blob dht::unpackBlob | ( | const msgpack::object & | o | ) |
Provides backward compatibility with msgpack 1.0
std::vector< T > dht::unpackVector | ( | const std::vector< std::shared_ptr< Value > > & | vals | ) |
const ValueType dht::CERTIFICATE_TYPE |
Definition at line 377 of file securedht.h.
|
staticconstexpr |
Definition at line 166 of file callbacks.h.
|
staticconstexpr |
Definition at line 26 of file routing_table.h.