C++ Distributed Hash Table
Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
dht::Node Struct Reference
Collaboration diagram for dht::Node:
Collaboration graph
[legend]

Public Member Functions

 Node (const InfoHash &id, const SockAddr &addr, bool client=false)
 
 Node (const InfoHash &id, const sockaddr *sa, socklen_t salen)
 
InfoHash getId () const
 
const SockAddrgetAddr () const
 
std::string getAddrStr () const
 
bool isClient () const
 
bool isIncoming ()
 
const time_point & getTime () const
 
const time_point & getReplyTime () const
 
void setTime (const time_point &t)
 
void authError ()
 
void authSuccess ()
 
bool isExpired () const
 
bool isGood (time_point now) const
 
bool isPendingMessage () const
 
size_t getPendingMessageCount () const
 
bool isOld (const time_point &now) const
 
bool isRemovable (const time_point &now) const
 
NodeExport exportNode () const
 
sa_family_t getFamily () const
 
void update (const SockAddr &)
 
void requested (const Sp< net::Request > &req)
 
void received (time_point now, const Sp< net::Request > &req)
 
Sp< net::Request > getRequest (Tid tid)
 
void cancelRequest (const Sp< net::Request > &req)
 
void setExpired ()
 
Tid openSocket (SocketCb &&cb)
 
Sp< SocketgetSocket (Tid id)
 
void closeSocket (Tid id)
 
void reset ()
 
Tid getNewTid ()
 
std::string toString () const
 

Public Attributes

const InfoHash id
 

Static Public Attributes

static constexpr const std::chrono::minutes NODE_GOOD_TIME {120}
 
static constexpr const std::chrono::minutes NODE_EXPIRE_TIME {10}
 
static constexpr const std::chrono::seconds MAX_RESPONSE_TIME {1}
 

Friends

OPENDHT_PUBLIC friend std::ostream & operator<< (std::ostream &s, const Node &h)
 

Detailed Description

Definition at line 47 of file node.h.

Member Function Documentation

◆ authError()

void dht::Node::authError ( )
inline

Makes notice about an additionnal authentication error with this node. Up to MAX_AUTH_ERRORS errors are accepted in order to let the node recover. Upon this limit, the node expires.

Definition at line 73 of file node.h.

◆ closeSocket()

void dht::Node::closeSocket ( Tid  id)

Closes a socket so that no further data will be red on that socket.

Parameters
socketThe socket to close.

◆ getNewTid()

Tid dht::Node::getNewTid ( )
inline

Generates a new request id, skipping the invalid id.

Returns
the new id.

Definition at line 139 of file node.h.

◆ openSocket()

Tid dht::Node::openSocket ( SocketCb &&  cb)

Opens a socket on which a node will be able allowed to write for further additionnal updates following the response to a previous request.

Parameters
nodeThe node which will be allowed to write on this socket.
cbThe callback to execute once updates arrive on the socket.
Returns
the socket.

◆ reset()

void dht::Node::reset ( )
inline

Resets the state of the node so it's not expired anymore.

Definition at line 132 of file node.h.


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