class BitcoinNode::P2p::Client::Parser
Public Class Methods
new(command, payload)
click to toggle source
# File lib/bitcoin_node/p2p/client.rb, line 70 def initialize(command, payload) @command, @payload = command, payload end
Public Instance Methods
parse()
click to toggle source
# File lib/bitcoin_node/p2p/client.rb, line 74 def parse callback = Proc.new {} if @command == 'version' received = BN::Protocol::Version.parse(@payload) remote_protocol_version = received.protocol_version.value callback = lambda do |client| client.version = [remote_protocol_version, client.version].min client.send(BN::Protocol::Messages.verack) end end if @command == 'verack' BN::Logger.info('Version handshake finished') callback = lambda { |client| client.handshaked = true } end if @command == 'addr' BN::Logger.info('Parsing addresses') BN::Protocol::Addr.parse(@payload) end if @command == 'inv' BN::Logger.info('Parsing inv') p BN::Protocol::Inv.parse(@payload) end callback end