| 
    rippled
    
   | 
 
Slot is associated with a specific validator via validator's public key. More...
#include <Slot.h>

Classes | |
| struct | PeerInfo | 
| Data maintained for each peer.  More... | |
Private Types | |
| using | id_t = Peer::id_t | 
| using | time_point = typename clock_type::time_point | 
| using | ignored_squelch_callback = std::function< void()> | 
Private Member Functions | |
| Slot (SquelchHandler const &handler, beast::Journal journal, uint16_t maxSelectedPeers) | |
| Constructor.   | |
| void | update (PublicKey const &validator, id_t id, protocol::MessageType type, ignored_squelch_callback callback) | 
| Update peer info.   | |
| void | deletePeer (PublicKey const &validator, id_t id, bool erase) | 
| Handle peer deletion when a peer disconnects.   | |
| time_point const & | getLastSelected () const | 
| Get the time of the last peer selection round.   | |
| std::uint16_t | inState (PeerState state) const | 
| Return number of peers in state.   | |
| std::uint16_t | notInState (PeerState state) const | 
| Return number of peers not in state.   | |
| SlotState | getState () const | 
| Return Slot's state.   | |
| std::set< id_t > | getSelected () const | 
| Return selected peers.   | |
| std::unordered_map< id_t, std::tuple< PeerState, uint16_t, uint32_t, uint32_t > > | getPeers () const | 
| Get peers info.   | |
| void | deleteIdlePeer (PublicKey const &validator) | 
| Check if peers stopped relaying messages.   | |
| std::chrono::seconds | getSquelchDuration (std::size_t npeers) | 
| Get random squelch duration between MIN_UNSQUELCH_EXPIRE and min(max(MAX_UNSQUELCH_EXPIRE_DEFAULT, SQUELCH_PER_PEER * npeers),
    MAX_UNSQUELCH_EXPIRE_PEERS)   | |
| void | resetCounts () | 
| Reset counts of peers in Selected or Counting state.   | |
| void | initCounting () | 
| Initialize slot to Counting state.   | |
Private Attributes | |
| std::unordered_map< id_t, PeerInfo > | peers_ | 
| std::unordered_set< id_t > | considered_ | 
| std::uint16_t | reachedThreshold_ | 
| clock_type::time_point | lastSelected_ | 
| SlotState | state_ | 
| SquelchHandler const & | handler_ | 
| beast::Journal const | journal_ | 
| uint16_t const | maxSelectedPeers_ | 
Friends | |
| class | Slots< clock_type > | 
Slot is associated with a specific validator via validator's public key.
Slot counts messages from a validator, selects peers to be the source of the messages, and communicates the peers to be squelched. Slot can be in the following states: 1) Counting. This is the peer selection state when Slot counts the messages and selects the peers; 2) Selected. Slot doesn't count messages in Selected state. A message received from unsquelched, disconnected peer, or idling peer may transition Slot to Counting state.
Definition at line 86 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 90 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 91 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 94 of file overlay/Slot.h.
      
  | 
  private | 
Constructor.
| journal | Journal for logging | 
| handler | Squelch/Unsquelch implementation | 
| maxSelectedPeers | the maximum number of peers to be selected as validator message source | 
Definition at line 102 of file overlay/Slot.h.
      
  | 
  private | 
Update peer info.
If the message is from a new peer or from a previously expired squelched peer then switch the peer's and slot's state to Counting. If time of last selection round is > 2 * MAX_UNSQUELCH_EXPIRE_DEFAULT then switch the slot's state to Counting. If the number of messages for the peer is > MIN_MESSAGE_THRESHOLD then add peer to considered peers pool. If the number of considered peers who reached MAX_MESSAGE_THRESHOLD is maxSelectedPeers_ then randomly select maxSelectedPeers_ from considered peers, and call squelch handler for each peer, which is not selected and not already in Squelched state. Set the state for those peers to Squelched and reset the count of all peers. Set slot's state to Selected. Message count is not updated when the slot is in Selected state.
| validator | Public key of the source validator | 
| id | Peer id which received the message | 
| type | Message type (Validation and Propose Set only, others are ignored, future use) | 
| callback | A callback to report ignored squelches | 
Definition at line 268 of file overlay/Slot.h.
      
  | 
  private | 
Handle peer deletion when a peer disconnects.
If the peer is in Selected state then call unsquelch handler for every peer in squelched state and reset every peer's state to Counting. Switch Slot's state to Counting.
| validator | Public key of the source validator | 
| id | Deleted peer id | 
| erase | If true then erase the peer. The peer is not erased when the peer when is idled. The peer is deleted when it disconnects | 
Definition at line 425 of file overlay/Slot.h.
      
  | 
  private | 
Get the time of the last peer selection round.
Definition at line 156 of file overlay/Slot.h.
      
  | 
  private | 
Return number of peers in state.
Definition at line 495 of file overlay/Slot.h.
      
  | 
  private | 
Return number of peers not in state.
Definition at line 504 of file overlay/Slot.h.
      
  | 
  private | 
Return Slot's state.
Definition at line 171 of file overlay/Slot.h.
      
  | 
  private | 
Return selected peers.
Definition at line 513 of file overlay/Slot.h.
      
  | 
  private | 
Get peers info.
Return map of peer's state, count, squelch expiration milsec, and last message time milsec.
Definition at line 526 of file overlay/Slot.h.
      
  | 
  private | 
Check if peers stopped relaying messages.
If a peer is selected peer then call unsquelch handler for all currently squelched peers and switch the slot to Counting state.
| validator | Public key of the source validator | 
Definition at line 245 of file overlay/Slot.h.
      
  | 
  private | 
Get random squelch duration between MIN_UNSQUELCH_EXPIRE and min(max(MAX_UNSQUELCH_EXPIRE_DEFAULT, SQUELCH_PER_PEER * npeers), MAX_UNSQUELCH_EXPIRE_PEERS)
| npeers | number of peers that can be squelched in the Slot | 
Definition at line 409 of file overlay/Slot.h.
      
  | 
  private | 
Reset counts of peers in Selected or Counting state.
Definition at line 474 of file overlay/Slot.h.
      
  | 
  private | 
Initialize slot to Counting state.
Definition at line 485 of file overlay/Slot.h.
      
  | 
  friend | 
Definition at line 72 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 222 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 226 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 229 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 232 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 234 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 235 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 236 of file overlay/Slot.h.
      
  | 
  private | 
Definition at line 240 of file overlay/Slot.h.