From e26105b158eb5810deb290fa35de7b0b40beddc0 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Thu, 9 Jun 2011 22:03:57 +0100 Subject: [PATCH] Add Message#cmd_sym as a convenience method --- lib/btc_wire_proto.rb | 9 +++++++++ spec/btc_wire_proto_spec.rb | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/btc_wire_proto.rb b/lib/btc_wire_proto.rb index 6e46130..e54cd5f 100644 --- a/lib/btc_wire_proto.rb +++ b/lib/btc_wire_proto.rb @@ -398,6 +398,11 @@ module BtcWireProto uint32 :payload_len uint32 :checksum, :onlyif => :has_checksum? + def cmd_sym + c = command.strip + c == "" ? nil : c.to_sym + end + protected # version and verack messages don't have a checksum. The rest do. @@ -421,6 +426,10 @@ module BtcWireProto message_hdr :header + def cmd_sym + header ? header.cmd_sym : nil + end + choice :payload, :selection => :payload_choice do version "version" addr_pre31402 "addr_pre31402" diff --git a/spec/btc_wire_proto_spec.rb b/spec/btc_wire_proto_spec.rb index ca4b6ff..67fdf53 100644 --- a/spec/btc_wire_proto_spec.rb +++ b/spec/btc_wire_proto_spec.rb @@ -235,6 +235,11 @@ describe ::BtcWireProto do m.payload.selection.should == "version" end + it "should have a :version command symbol" do + m = Message::new(:header => {:command => 'version'}) + m.cmd_sym.should == :version + end + it "should parse binary data correctly" do m = Message::read(binary(%w{ F9 BE B4 D9 76 65 72 73 69 6F 6E 00 00 00 00 00 55 00 00 @@ -265,6 +270,11 @@ describe ::BtcWireProto do m = Message.new(:header => {:command => "verack"}) m.payload.selection.should == "null" end + + it "should have a :verack command symbol" do + m = Message.new(:header => {:command => "verack"}) + m.cmd_sym.should == :verack + end it "should parse the binary data correctly" do m = Message::read(binary(%w{