Class: BitcoinNode::P2p::Client::Parser
- Inherits:
-
Object
- Object
- BitcoinNode::P2p::Client::Parser
- Defined in:
- lib/bitcoin_node/p2p/client.rb
Instance Method Summary collapse
-
#initialize(command, payload) ⇒ Parser
constructor
A new instance of Parser.
- #parse ⇒ Object
Constructor Details
#initialize(command, payload) ⇒ Parser
Returns a new instance of Parser.
70 71 72 |
# File 'lib/bitcoin_node/p2p/client.rb', line 70 def initialize(command, payload) @command, @payload = command, payload end |
Instance Method Details
#parse ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# 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 |