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