My Project 2.4.4
C++ Distributed Hash Table
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dht::DhtProxyClient Class Referencefinal
Inheritance diagram for dht::DhtProxyClient:
Inheritance graph
[legend]
Collaboration diagram for dht::DhtProxyClient:
Collaboration graph
[legend]

Public Member Functions

 DhtProxyClient (std::shared_ptr< crypto::Certificate > serverCA, crypto::Identity clientIdentity, std::function< void()> loopSignal, const std::string &serverHost, const std::string &pushClientId="", std::shared_ptr< Logger > logger={})
 
void setHeaderFields (http::Request &request)
 
virtual void setPushNotificationToken (const std::string &token) override
 
const InfoHashgetNodeId () const override
 
NodeStatus getStatus (sa_family_t af) const override
 
NodeStatus getStatus () const override
 
void shutdown (ShutdownCallback cb, bool) override
 
bool isRunning (sa_family_t af=0) const override
 
virtual void get (const InfoHash &key, GetCallback cb, DoneCallback donecb={}, Value::Filter &&f={}, Where &&w={}) override
 
virtual void get (const InfoHash &key, GetCallback cb, DoneCallbackSimple donecb={}, Value::Filter &&f={}, Where &&w={}) override
 
virtual void get (const InfoHash &key, GetCallbackSimple cb, DoneCallback donecb={}, Value::Filter &&f={}, Where &&w={}) override
 
virtual void get (const InfoHash &key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter &&f={}, Where &&w={}) override
 
void put (const InfoHash &key, Sp< Value >, DoneCallback cb=nullptr, time_point created=time_point::max(), bool permanent=false) override
 
void put (const InfoHash &key, const Sp< Value > &v, DoneCallbackSimple cb, time_point created=time_point::max(), bool permanent=false) override
 
void put (const InfoHash &key, Value &&v, DoneCallback cb=nullptr, time_point created=time_point::max(), bool permanent=false) override
 
void put (const InfoHash &key, Value &&v, DoneCallbackSimple cb, time_point created=time_point::max(), bool permanent=false) override
 
NodeStats getNodesStats (sa_family_t af) const override
 
std::vector< SockAddrgetPublicAddress (sa_family_t family=0) override
 
virtual size_t listen (const InfoHash &, ValueCallback, Value::Filter={}, Where={}) override
 
virtual size_t listen (const InfoHash &key, GetCallback cb, Value::Filter f={}, Where w={}) override
 
virtual size_t listen (const InfoHash &key, GetCallbackSimple cb, Value::Filter f={}, Where w={}) override
 
virtual bool cancelListen (const InfoHash &key, size_t token) override
 
void pushNotificationReceived (const std::map< std::string, std::string > &notification) override
 
time_point periodic (const uint8_t *, size_t, SockAddr, const time_point &now) override
 
time_point periodic (const uint8_t *buf, size_t buflen, const sockaddr *from, socklen_t fromlen, const time_point &now) override
 
virtual void query (const InfoHash &, QueryCallback, DoneCallback={}, Query &&={}) override
 
virtual void query (const InfoHash &key, QueryCallback cb, DoneCallbackSimple done_cb={}, Query &&q={}) override
 
std::vector< Sp< Value > > getPut (const InfoHash &) const override
 
Sp< ValuegetPut (const InfoHash &, const Value::Id &) const override
 
bool cancelPut (const InfoHash &, const Value::Id &) override
 
void pingNode (SockAddr, DoneCallbackSimple &&={}) override
 
virtual void registerType (const ValueType &type) override
 
const ValueTypegetType (ValueType::Id type_id) const override
 
std::vector< Sp< Value > > getLocal (const InfoHash &k, const Value::Filter &filter) const override
 
Sp< ValuegetLocalById (const InfoHash &k, Value::Id id) const override
 
void insertNode (const InfoHash &, const SockAddr &) override
 
void insertNode (const NodeExport &) override
 
std::pair< size_t, size_t > getStoreSize () const override
 
std::vector< NodeExportexportNodes () const override
 
std::vector< ValuesExport > exportValues () const override
 
void importValues (const std::vector< ValuesExport > &) override
 
std::string getStorageLog () const override
 
std::string getStorageLog (const InfoHash &) const override
 
std::string getRoutingTablesLog (sa_family_t) const override
 
std::string getSearchesLog (sa_family_t) const override
 
std::string getSearchLog (const InfoHash &, sa_family_t) const override
 
void dumpTables () const override
 
std::vector< unsigned > getNodeMessageStats (bool) override
 
void setStorageLimit (size_t) override
 
virtual size_t getStorageLimit () const
 
void connectivityChanged (sa_family_t) override
 
void connectivityChanged () override
 
- Public Member Functions inherited from dht::DhtInterface
 DhtInterface (const Logger &l)
 
 DhtInterface (const std::shared_ptr< Logger > &l)
 
virtual NodeStatus updateStatus (sa_family_t af)
 
virtual NodeStatus getStatus (sa_family_t af) const =0
 
virtual NodeStatus getStatus () const =0
 
void addOnConnectedCallback (std::function< void()> cb)
 
virtual net::DatagramSocketgetSocket () const
 
virtual const InfoHashgetNodeId () const =0
 
virtual void shutdown (ShutdownCallback cb, bool stop=false)=0
 
virtual bool isRunning (sa_family_t af=0) const =0
 
virtual void registerType (const ValueType &type)=0
 
virtual const ValueTypegetType (ValueType::Id type_id) const =0
 
virtual void addBootstrap (const std::string &, const std::string &)
 
virtual void clearBootstrap ()
 
virtual void insertNode (const InfoHash &id, const SockAddr &)=0
 
virtual void insertNode (const NodeExport &n)=0
 
virtual void pingNode (SockAddr, DoneCallbackSimple &&cb={})=0
 
virtual time_point periodic (const uint8_t *buf, size_t buflen, SockAddr, const time_point &now)=0
 
virtual time_point periodic (const uint8_t *buf, size_t buflen, const sockaddr *from, socklen_t fromlen, const time_point &now)=0
 
virtual void get (const InfoHash &key, GetCallback cb, DoneCallback donecb={}, Value::Filter &&f={}, Where &&w={})=0
 
virtual void get (const InfoHash &key, GetCallback cb, DoneCallbackSimple donecb={}, Value::Filter &&f={}, Where &&w={})=0
 
virtual void get (const InfoHash &key, GetCallbackSimple cb, DoneCallback donecb={}, Value::Filter &&f={}, Where &&w={})=0
 
virtual void get (const InfoHash &key, GetCallbackSimple cb, DoneCallbackSimple donecb, Value::Filter &&f={}, Where &&w={})=0
 
virtual void query (const InfoHash &key, QueryCallback cb, DoneCallback done_cb={}, Query &&q={})=0
 
virtual void query (const InfoHash &key, QueryCallback cb, DoneCallbackSimple done_cb={}, Query &&q={})=0
 
virtual std::vector< Sp< Value > > getLocal (const InfoHash &key, const Value::Filter &f={}) const =0
 
virtual Sp< ValuegetLocalById (const InfoHash &key, Value::Id vid) const =0
 
virtual void put (const InfoHash &key, Sp< Value >, DoneCallback cb=nullptr, time_point created=time_point::max(), bool permanent=false)=0
 
virtual void put (const InfoHash &key, const Sp< Value > &v, DoneCallbackSimple cb, time_point created=time_point::max(), bool permanent=false)=0
 
virtual void put (const InfoHash &key, Value &&v, DoneCallback cb=nullptr, time_point created=time_point::max(), bool permanent=false)=0
 
virtual void put (const InfoHash &key, Value &&v, DoneCallbackSimple cb, time_point created=time_point::max(), bool permanent=false)=0
 
virtual std::vector< Sp< Value > > getPut (const InfoHash &) const =0
 
virtual Sp< ValuegetPut (const InfoHash &, const Value::Id &) const =0
 
virtual bool cancelPut (const InfoHash &, const Value::Id &)=0
 
virtual size_t listen (const InfoHash &, GetCallback, Value::Filter={}, Where w={})=0
 
virtual size_t listen (const InfoHash &key, GetCallbackSimple cb, Value::Filter f={}, Where w={})=0
 
virtual size_t listen (const InfoHash &, ValueCallback, Value::Filter={}, Where w={})=0
 
virtual bool cancelListen (const InfoHash &, size_t token)=0
 
virtual void connectivityChanged (sa_family_t)=0
 
virtual void connectivityChanged ()=0
 
virtual std::vector< NodeExportexportNodes () const =0
 
virtual std::vector< ValuesExport > exportValues () const =0
 
virtual void importValues (const std::vector< ValuesExport > &)=0
 
virtual NodeStats getNodesStats (sa_family_t af) const =0
 
virtual std::string getStorageLog () const =0
 
virtual std::string getStorageLog (const InfoHash &) const =0
 
virtual std::string getRoutingTablesLog (sa_family_t) const =0
 
virtual std::string getSearchesLog (sa_family_t) const =0
 
virtual std::string getSearchLog (const InfoHash &, sa_family_t af=AF_UNSPEC) const =0
 
virtual void dumpTables () const =0
 
virtual std::vector< unsigned > getNodeMessageStats (bool in=false)=0
 
virtual void setStorageLimit (size_t limit=DEFAULT_STORAGE_LIMIT)=0
 
virtual size_t getStorageLimit () const =0
 
virtual std::pair< size_t, size_t > getStoreSize () const =0
 
virtual std::vector< SockAddrgetPublicAddress (sa_family_t family=0)=0
 
virtual void setLoggers (LogMethod error={}, LogMethod warn={}, LogMethod debug={})
 
virtual void setLogger (const Logger &l)
 
virtual void setLogger (const std::shared_ptr< Logger > &l)
 
virtual void setLogFilter (const InfoHash &f)
 
virtual void setPushNotificationToken (const std::string &)
 
virtual void pushNotificationReceived (const std::map< std::string, std::string > &data)=0
 

Additional Inherited Members

- Public Types inherited from dht::DhtInterface
using Status = NodeStatus
 
using NodeExport = dht::NodeExport
 
- Protected Attributes inherited from dht::DhtInterface
std::shared_ptr< Loggerlogger_ {}
 
std::queue< std::function< void()> > onConnectCallbacks_ {}
 

Detailed Description

Definition at line 50 of file dht_proxy_client.h.

Member Function Documentation

◆ cancelListen()

virtual bool dht::DhtProxyClient::cancelListen ( const InfoHash key,
size_t  token 
)
overridevirtual

Implements dht::DhtInterface.

◆ cancelPut()

bool dht::DhtProxyClient::cancelPut ( const InfoHash ,
const Value::Id &   
)
overridevirtual

Stop any put/announce operation at the given location, for the value with the given id.

Implements dht::DhtInterface.

◆ connectivityChanged() [1/2]

void dht::DhtProxyClient::connectivityChanged ( )
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 270 of file dht_proxy_client.h.

◆ connectivityChanged() [2/2]

void dht::DhtProxyClient::connectivityChanged ( sa_family_t  )
inlineoverridevirtual

Inform the DHT of lower-layer connectivity changes. This will cause the DHT to assume a public IP address change. The DHT will recontact neighbor nodes, re-register for listen ops etc.

Implements dht::DhtInterface.

Definition at line 267 of file dht_proxy_client.h.

◆ dumpTables()

void dht::DhtProxyClient::dumpTables ( ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 263 of file dht_proxy_client.h.

◆ exportNodes()

std::vector< NodeExport > dht::DhtProxyClient::exportNodes ( ) const
inlineoverridevirtual

Get the list of good nodes for local storage saving purposes The list is ordered to minimize the back-to-work delay.

Implements dht::DhtInterface.

Definition at line 255 of file dht_proxy_client.h.

◆ exportValues()

std::vector< ValuesExport > dht::DhtProxyClient::exportValues ( ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 256 of file dht_proxy_client.h.

◆ get() [1/4]

virtual void dht::DhtProxyClient::get ( const InfoHash key,
GetCallback  cb,
DoneCallback  donecb = {},
Value::Filter &&  f = {},
Where &&  w = {} 
)
overridevirtual

Get a value by asking the proxy and call the provided get callback when values are found at key. The operation will start as soon as the node is connected to the network.

Parameters
cba function called when new values are found on the network. It should return false to stop the operation.
donecba function called when the operation is complete. cb and donecb won't be called again afterward.
fa filter function used to prefilter values.

Implements dht::DhtInterface.

◆ get() [2/4]

virtual void dht::DhtProxyClient::get ( const InfoHash key,
GetCallback  cb,
DoneCallbackSimple  donecb = {},
Value::Filter &&  f = {},
Where &&  w = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 109 of file dht_proxy_client.h.

◆ get() [3/4]

virtual void dht::DhtProxyClient::get ( const InfoHash key,
GetCallbackSimple  cb,
DoneCallback  donecb = {},
Value::Filter &&  f = {},
Where &&  w = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 112 of file dht_proxy_client.h.

◆ get() [4/4]

virtual void dht::DhtProxyClient::get ( const InfoHash key,
GetCallbackSimple  cb,
DoneCallbackSimple  donecb,
Value::Filter &&  f = {},
Where &&  w = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 115 of file dht_proxy_client.h.

◆ getLocal()

std::vector< Sp< Value > > dht::DhtProxyClient::getLocal ( const InfoHash key,
const Value::Filter f 
) const
overridevirtual

Get locally stored data for the given hash.

Implements dht::DhtInterface.

◆ getLocalById()

Sp< Value > dht::DhtProxyClient::getLocalById ( const InfoHash key,
Value::Id  vid 
) const
overridevirtual

Get locally stored data for the given key and value id.

Implements dht::DhtInterface.

◆ getNodeId()

const InfoHash & dht::DhtProxyClient::getNodeId ( ) const
inlineoverridevirtual

Get the ID of the node.

Implements dht::DhtInterface.

Definition at line 75 of file dht_proxy_client.h.

◆ getNodeMessageStats()

std::vector< unsigned > dht::DhtProxyClient::getNodeMessageStats ( bool  )
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 264 of file dht_proxy_client.h.

◆ getNodesStats()

NodeStats dht::DhtProxyClient::getNodesStats ( sa_family_t  af) const
overridevirtual
Parameters
afthe socket family
Returns
node stats from the proxy

Implements dht::DhtInterface.

◆ getPublicAddress()

std::vector< SockAddr > dht::DhtProxyClient::getPublicAddress ( sa_family_t  family = 0)
overridevirtual
Parameters
familythe socket family
Returns
public address

Implements dht::DhtInterface.

◆ getPut() [1/2]

std::vector< Sp< Value > > dht::DhtProxyClient::getPut ( const InfoHash ) const
overridevirtual

Get data currently being put at the given hash.

Implements dht::DhtInterface.

◆ getPut() [2/2]

Sp< Value > dht::DhtProxyClient::getPut ( const InfoHash ,
const Value::Id &   
) const
overridevirtual

Get data currently being put at the given hash with the given id.

Implements dht::DhtInterface.

◆ getRoutingTablesLog()

std::string dht::DhtProxyClient::getRoutingTablesLog ( sa_family_t  ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 260 of file dht_proxy_client.h.

◆ getSearchesLog()

std::string dht::DhtProxyClient::getSearchesLog ( sa_family_t  ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 261 of file dht_proxy_client.h.

◆ getSearchLog()

std::string dht::DhtProxyClient::getSearchLog ( const InfoHash ,
sa_family_t   
) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 262 of file dht_proxy_client.h.

◆ getStatus() [1/2]

NodeStatus dht::DhtProxyClient::getStatus ( ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 81 of file dht_proxy_client.h.

◆ getStatus() [2/2]

NodeStatus dht::DhtProxyClient::getStatus ( sa_family_t  af) const
overridevirtual

Get the current status of the node for the given family.

Implements dht::DhtInterface.

◆ getStorageLimit()

virtual size_t dht::DhtProxyClient::getStorageLimit ( ) const
inlinevirtual

Implements dht::DhtInterface.

Definition at line 266 of file dht_proxy_client.h.

◆ getStorageLog() [1/2]

std::string dht::DhtProxyClient::getStorageLog ( ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 258 of file dht_proxy_client.h.

◆ getStorageLog() [2/2]

std::string dht::DhtProxyClient::getStorageLog ( const InfoHash ) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 259 of file dht_proxy_client.h.

◆ getStoreSize()

std::pair< size_t, size_t > dht::DhtProxyClient::getStoreSize ( ) const
inlineoverridevirtual

Returns the total memory usage of stored values and the number of stored values.

Implements dht::DhtInterface.

Definition at line 254 of file dht_proxy_client.h.

◆ getType()

const ValueType & dht::DhtProxyClient::getType ( ValueType::Id  type_id) const
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 241 of file dht_proxy_client.h.

◆ importValues()

void dht::DhtProxyClient::importValues ( const std::vector< ValuesExport > &  )
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 257 of file dht_proxy_client.h.

◆ insertNode() [1/2]

void dht::DhtProxyClient::insertNode ( const InfoHash ,
const SockAddr  
)
inlineoverridevirtual

NOTE: The following methods will not be implemented because the DhtProxyClient doesn't have any storage nor synchronization process

Implements dht::DhtInterface.

Definition at line 252 of file dht_proxy_client.h.

◆ insertNode() [2/2]

void dht::DhtProxyClient::insertNode ( const NodeExport )
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 253 of file dht_proxy_client.h.

◆ isRunning()

bool dht::DhtProxyClient::isRunning ( sa_family_t  af = 0) const
overridevirtual

Returns true if the node is running (have access to an open socket).

af: address family. If non-zero, will return true if the node is running for the provided family.

Implements dht::DhtInterface.

◆ listen() [1/3]

virtual size_t dht::DhtProxyClient::listen ( const InfoHash ,
ValueCallback  ,
Value::Filter  = {},
Where  = {} 
)
overridevirtual

Listen on the network for any changes involving a specified hash. The node will register to receive updates from relevent nodes when new values are added or removed.

Returns
a token to cancel the listener later.

Implements dht::DhtInterface.

◆ listen() [2/3]

virtual size_t dht::DhtProxyClient::listen ( const InfoHash ,
GetCallback  ,
Value::Filter  = {},
Where  w = {} 
)
inlineoverridevirtual

Listen on the network for any changes involving a specified hash. The node will register to receive updates from relevent nodes when new values are added or removed.

Returns
a token to cancel the listener later.

Implements dht::DhtInterface.

Definition at line 178 of file dht_proxy_client.h.

◆ listen() [3/3]

virtual size_t dht::DhtProxyClient::listen ( const InfoHash key,
GetCallbackSimple  cb,
Value::Filter  f = {},
Where  w = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 185 of file dht_proxy_client.h.

◆ periodic() [1/2]

time_point dht::DhtProxyClient::periodic ( const uint8_t *  ,
size_t  ,
SockAddr  ,
const time_point &  now 
)
overridevirtual

Implements dht::DhtInterface.

◆ periodic() [2/2]

time_point dht::DhtProxyClient::periodic ( const uint8_t *  buf,
size_t  buflen,
const sockaddr *  from,
socklen_t  fromlen,
const time_point &  now 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 201 of file dht_proxy_client.h.

◆ pingNode()

void dht::DhtProxyClient::pingNode ( SockAddr  ,
DoneCallbackSimple &&  = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 236 of file dht_proxy_client.h.

◆ pushNotificationReceived()

void dht::DhtProxyClient::pushNotificationReceived ( const std::map< std::string, std::string > &  notification)
overridevirtual

Call linked callback with a push notification

Parameters
notificationto process

Implements dht::DhtInterface.

◆ put() [1/4]

void dht::DhtProxyClient::put ( const InfoHash key,
const Sp< Value > &  v,
DoneCallbackSimple  cb,
time_point  created = time_point::max(),
bool  permanent = false 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 131 of file dht_proxy_client.h.

◆ put() [2/4]

void dht::DhtProxyClient::put ( const InfoHash key,
Sp< Value ,
DoneCallback  cb = nullptr,
time_point  created = time_point::max(),
bool  permanent = false 
)
overridevirtual

Announce a value on all available protocols (IPv4, IPv6).

The operation will start as soon as the node is connected to the network. The done callback will be called once, when the first announce succeeds, or fails. NOTE: For now, created parameter is ignored.

Implements dht::DhtInterface.

◆ put() [3/4]

void dht::DhtProxyClient::put ( const InfoHash key,
Value &&  v,
DoneCallback  cb = nullptr,
time_point  created = time_point::max(),
bool  permanent = false 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 140 of file dht_proxy_client.h.

◆ put() [4/4]

void dht::DhtProxyClient::put ( const InfoHash key,
Value &&  v,
DoneCallbackSimple  cb,
time_point  created = time_point::max(),
bool  permanent = false 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 148 of file dht_proxy_client.h.

◆ query() [1/2]

virtual void dht::DhtProxyClient::query ( const InfoHash ,
QueryCallback  ,
DoneCallback  = {},
Query &&  = {} 
)
inlineoverridevirtual

Similar to Dht::get, but sends a Query to filter data remotely.

Parameters
keythe key for which to query data for.
cba function called when new values are found on the network. It should return false to stop the operation.
done_cba function called when the operation is complete. cb and done_cb won't be called again afterward.
qa query used to filter values on the remotes before they send a response.

Implements dht::DhtInterface.

Definition at line 215 of file dht_proxy_client.h.

◆ query() [2/2]

virtual void dht::DhtProxyClient::query ( const InfoHash key,
QueryCallback  cb,
DoneCallbackSimple  done_cb = {},
Query &&  q = {} 
)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 216 of file dht_proxy_client.h.

◆ registerType()

virtual void dht::DhtProxyClient::registerType ( const ValueType type)
inlineoverridevirtual

Implements dht::DhtInterface.

Definition at line 238 of file dht_proxy_client.h.

◆ setPushNotificationToken()

virtual void dht::DhtProxyClient::setPushNotificationToken ( const std::string &  token)
inlineoverridevirtual

Reimplemented from dht::DhtInterface.

Definition at line 62 of file dht_proxy_client.h.

◆ setStorageLimit()

void dht::DhtProxyClient::setStorageLimit ( size_t  limit)
inlineoverridevirtual

Set the in-memory storage limit in bytes

Implements dht::DhtInterface.

Definition at line 265 of file dht_proxy_client.h.

◆ shutdown()

void dht::DhtProxyClient::shutdown ( ShutdownCallback  cb,
bool   
)
overridevirtual

Performs final operations before quitting.

Implements dht::DhtInterface.


The documentation for this class was generated from the following file: