class Ciri::P2P::ProtocolContext
ProtocolContext
is used to manuaplate
Attributes
peer[R]
protocol[R]
protocol_io[R]
Public Class Methods
new(network_state, peer: nil, protocol: nil, protocol_io: nil)
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 39 def initialize(network_state, peer: nil, protocol: nil, protocol_io: nil) @network_state = network_state @peer = peer @protocol = protocol @protocol_io = protocol_io end
Public Instance Methods
find_peer(raw_node_id)
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 58 def find_peer(raw_node_id) @network_state.peers[raw_node_id] end
peers()
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 54 def peers @network_state.peers.values end
raw_local_node_id()
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 50 def raw_local_node_id @raw_local_node_id ||= local_node_id.to_bytes end
send_data(code, data, peer: self.peer, protocol: self.protocol.name)
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 46 def send_data(code, data, peer: self.peer, protocol: self.protocol.name) ensure_peer(peer).find_protocol_io(protocol).send_data(code, data) end
Private Instance Methods
ensure_peer(peer)
click to toggle source
# File lib/ciri/p2p/protocol_context.rb, line 64 def ensure_peer(peer) return peer if peer.is_a?(P2P::Peer) @network_state.peers[peer] end