The Session class.
More...
#include <Session.h>
|
| Session (SessionCapabilities caps, std::unique_ptr< RLPXFrameCoder > _io, std::shared_ptr< RLPXSocket > _s, std::shared_ptr< Peer > _n, PeerSessionInfo _info, std::optional< DisconnectReason > immediate_disconnect_reason={}) |
|
void | disconnect_ (DisconnectReason _reason) |
|
void | ping_ () |
|
void | sealAndSend_ (RLPStream &_s) |
|
std::shared_ptr< Peer > | peer () const |
|
void | send_ (bytes _msg, std::function< void()> on_done={}) |
|
void | drop (DisconnectReason _r) |
| Drop the connection for the reason _r. More...
|
|
void | doRead () |
| Perform a read on the socket. More...
|
|
bool | checkRead (std::size_t expected, boost::system::error_code ec, std::size_t length) |
| Check error code after reading and drop peer if error code. More...
|
|
void | write (uint16_t sequence_id=0, uint32_t sent_size=0) |
|
void | splitAndPack (uint16_t &sequence_id, uint32_t &sent_size) |
|
void | readPacket (unsigned _t, RLP const &_r) |
| Deliver RLPX packet to Session or PeerCapability for interpretation. More...
|
|
void | interpretP2pPacket (P2pPacketType _t, RLP const &_r) |
| Interpret an incoming Session packet. More...
|
|
std::optional< SessionCapability > | capabilityFor (unsigned _packetType) const |
|
std::string | capabilityPacketTypeToString (unsigned _packetType) const |
|
The Session class.
- Todo:
- Document fully.
◆ dev::p2p::Session::SendRequest
struct dev::p2p::Session::SendRequest |
Class Members |
function< void()> |
on_done |
|
bytes |
payload |
|
◆ Session()
◆ ~Session()
◆ capabilityFor()
std::optional< SessionCapability > Session::capabilityFor |
( |
unsigned |
_packetType | ) |
const |
|
private |
◆ capabilityPacketTypeToString() [1/2]
std::string Session::capabilityPacketTypeToString |
( |
std::optional< SessionCapability > const & |
cap, |
|
|
unsigned |
_packetType |
|
) |
| |
|
staticprivate |
◆ capabilityPacketTypeToString() [2/2]
std::string Session::capabilityPacketTypeToString |
( |
unsigned |
_packetType | ) |
const |
|
private |
◆ checkPacket()
- Returns
- true iff the _msg forms a valid message for sending or receiving on the network.
◆ checkRead()
bool Session::checkRead |
( |
std::size_t |
expected, |
|
|
boost::system::error_code |
ec, |
|
|
std::size_t |
length |
|
) |
| |
|
private |
Check error code after reading and drop peer if error code.
◆ disconnect()
◆ disconnect_()
◆ doRead()
Perform a read on the socket.
read padded frame and mac
◆ drop()
Drop the connection for the reason _r.
◆ id()
NodeID dev::p2p::Session::id |
( |
| ) |
const |
|
inline |
◆ info()
◆ interpretP2pPacket()
Interpret an incoming Session packet.
◆ isConnected()
bool dev::p2p::Session::isConnected |
( |
| ) |
const |
|
inline |
◆ make()
◆ peer()
std::shared_ptr<Peer> dev::p2p::Session::peer |
( |
| ) |
const |
|
inlineprivate |
◆ ping()
void dev::p2p::Session::ping |
( |
| ) |
|
|
inline |
◆ ping_()
◆ prep()
◆ readPacket()
void Session::readPacket |
( |
unsigned |
_t, |
|
|
RLP const & |
_r |
|
) |
| |
|
private |
Deliver RLPX packet to Session or PeerCapability for interpretation.
◆ sealAndSend_()
◆ send()
void dev::p2p::Session::send |
( |
std::string |
capability_name, |
|
|
unsigned |
packet_type, |
|
|
bytes |
payload, |
|
|
std::function< void()> && |
on_done = {} |
|
) |
| |
|
inline |
◆ send_()
void Session::send_ |
( |
bytes |
_msg, |
|
|
std::function< void()> |
on_done = {} |
|
) |
| |
|
private |
◆ splitAndPack()
void Session::splitAndPack |
( |
uint16_t & |
sequence_id, |
|
|
uint32_t & |
sent_size |
|
) |
| |
|
private |
◆ write()
void Session::write |
( |
uint16_t |
sequence_id = 0 , |
|
|
uint32_t |
sent_size = 0 |
|
) |
| |
|
private |
Perform a single round of the write operation. This could end up calling itself asynchronously.
◆ immediate_disconnect_reason_
◆ m_capabilities
The peer's capability set.
◆ m_capLogger
◆ m_capLoggerDetail
◆ m_data
std::vector<byte> dev::p2p::Session::m_data |
|
private |
Buffer for ingress packet data.
◆ m_dropped
bool dev::p2p::Session::m_dropped = false |
|
private |
If true, we've already divested ourselves of this peer. We're just waiting for the reads & writes to fail before the shared_ptr goes OOS and the destructor kicks in.
◆ m_info
Dynamic information about this peer.
◆ m_io
Transport over which packets are sent.
◆ m_logSuffix
std::string dev::p2p::Session::m_logSuffix |
|
private |
◆ m_multiData
std::vector<byte> dev::p2p::Session::m_multiData |
|
private |
Buffer for multipacket data.
◆ m_netLogger
◆ m_netLoggerDetail
◆ m_netLoggerError
◆ m_out
bytes dev::p2p::Session::m_out |
|
private |
◆ m_peer
std::shared_ptr<Peer> dev::p2p::Session::m_peer |
|
private |
◆ m_ping
std::chrono::steady_clock::time_point dev::p2p::Session::m_ping |
|
private |
◆ m_socket
std::shared_ptr<RLPXSocket> dev::p2p::Session::m_socket |
|
private |
Socket of peer's connection.
◆ m_writeQueue
std::deque<SendRequest> dev::p2p::Session::m_writeQueue |
|
private |
◆ muted_
std::atomic<bool> dev::p2p::Session::muted_ = false |
|
private |
◆ x_info
std::shared_mutex dev::p2p::Session::x_info |
|
mutableprivate |
The documentation for this struct was generated from the following files: