PIVX Core  5.6.99
P2P Digital Currency
Public Types | Public Member Functions | Private Attributes | List of all members
llmq::CDKGPendingMessages Class Reference

Acts as a FIFO queue for incoming DKG messages. More...

#include <quorums_dkgsessionhandler.h>

Collaboration diagram for llmq::CDKGPendingMessages:
[legend]

Public Types

typedef std::pair< NodeId, std::shared_ptr< CDataStream > > BinaryMessage
 

Public Member Functions

 CDKGPendingMessages (size_t _maxMessagesPerNode)
 
void PushPendingMessage (NodeId from, CDataStream &vRecv, int invType)
 
std::list< BinaryMessagePopPendingMessages (size_t maxCount)
 
bool HasSeen (const uint256 &hash) const
 
void Clear ()
 
template<typename Message >
void PushPendingMessage (NodeId from, Message &msg, int invType)
 
template<typename Message >
std::vector< std::pair< NodeId, std::shared_ptr< Message > > > PopAndDeserializeMessages (size_t maxCount)
 

Private Attributes

RecursiveMutex cs
 
size_t maxMessagesPerNode
 
std::list< BinaryMessagependingMessages
 
std::map< NodeId, size_t > messagesPerNode
 
std::set< uint256seenMessages
 

Detailed Description

Acts as a FIFO queue for incoming DKG messages.

The reason we need this is that deserialization of these messages is too slow to be processed in the main message handler thread. So, instead of processing them directly from the main handler thread, we push them into a CDKGPendingMessages object and later pop+deserialize them in the DKG phase handler thread.

Each message type has it's own instance of this class.

Definition at line 35 of file quorums_dkgsessionhandler.h.

Member Typedef Documentation

◆ BinaryMessage

typedef std::pair<NodeId, std::shared_ptr<CDataStream> > llmq::CDKGPendingMessages::BinaryMessage

Definition at line 38 of file quorums_dkgsessionhandler.h.

Constructor & Destructor Documentation

◆ CDKGPendingMessages()

llmq::CDKGPendingMessages::CDKGPendingMessages ( size_t  _maxMessagesPerNode)
explicit

Definition at line 21 of file quorums_dkgsessionhandler.cpp.

Member Function Documentation

◆ Clear()

void llmq::CDKGPendingMessages::Clear ( )

Definition at line 77 of file quorums_dkgsessionhandler.cpp.

Here is the caller graph for this function:

◆ HasSeen()

bool llmq::CDKGPendingMessages::HasSeen ( const uint256 hash) const

Definition at line 71 of file quorums_dkgsessionhandler.cpp.

◆ PopAndDeserializeMessages()

template<typename Message >
std::vector<std::pair<NodeId, std::shared_ptr<Message> > > llmq::CDKGPendingMessages::PopAndDeserializeMessages ( size_t  maxCount)
inline

Definition at line 65 of file quorums_dkgsessionhandler.h.

Here is the call graph for this function:

◆ PopPendingMessages()

std::list< CDKGPendingMessages::BinaryMessage > llmq::CDKGPendingMessages::PopPendingMessages ( size_t  maxCount)

Definition at line 58 of file quorums_dkgsessionhandler.cpp.

Here is the caller graph for this function:

◆ PushPendingMessage() [1/2]

void llmq::CDKGPendingMessages::PushPendingMessage ( NodeId  from,
CDataStream vRecv,
int  invType 
)
Todo:
ban?

Definition at line 26 of file quorums_dkgsessionhandler.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PushPendingMessage() [2/2]

template<typename Message >
void llmq::CDKGPendingMessages::PushPendingMessage ( NodeId  from,
Message msg,
int  invType 
)
inline

Definition at line 56 of file quorums_dkgsessionhandler.h.

Member Data Documentation

◆ cs

RecursiveMutex llmq::CDKGPendingMessages::cs
mutableprivate

Definition at line 41 of file quorums_dkgsessionhandler.h.

◆ maxMessagesPerNode

size_t llmq::CDKGPendingMessages::maxMessagesPerNode
private

Definition at line 42 of file quorums_dkgsessionhandler.h.

◆ messagesPerNode

std::map<NodeId, size_t> llmq::CDKGPendingMessages::messagesPerNode
private

Definition at line 44 of file quorums_dkgsessionhandler.h.

◆ pendingMessages

std::list<BinaryMessage> llmq::CDKGPendingMessages::pendingMessages
private

Definition at line 43 of file quorums_dkgsessionhandler.h.

◆ seenMessages

std::set<uint256> llmq::CDKGPendingMessages::seenMessages
private

Definition at line 45 of file quorums_dkgsessionhandler.h.


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