lib/bitcoin/protocol/address.rb in bitcoin-ruby-0.0.18 vs lib/bitcoin/protocol/address.rb in bitcoin-ruby-0.0.19

- old
+ new

@@ -1,12 +1,10 @@ # encoding: ascii-8bit module Bitcoin module Protocol - - class Addr < Struct.new(:time, :service, :ip, :port) - + Addr = Struct.new(:time, :service, :ip, :port) do # # IP Address / Port # attr_reader :ip, :port # # Time the node was last active # attr_reader :time @@ -15,36 +13,40 @@ # attr_reader :service # create addr from raw binary +data+ def initialize(data = nil) if data - self[:time], self[:service], self[:ip], self[:port] = data.unpack("VQx12a4n") - self[:ip] = ip.unpack("C*").join(".") + unpacked = data.unpack('VQx12a4n') + self[:time], self[:service], self[:ip], self[:port] = unpacked + self[:ip] = ip.unpack('C*').join('.') else - self[:time], self[:service] = Time.now.to_i, 1 - self[:ip], self[:port] = "127.0.0.1", Bitcoin.network[:default_port] + self[:time] = Time.now.to_i + self[:service] = 1 + self[:ip] = '127.0.0.1' + self[:port] = Bitcoin.network[:default_port] end end # is this address alive? def alive? - (Time.now.tv_sec-7200) <= self[:time] + (Time.now.tv_sec - 7200) <= self[:time] end def to_payload - ip = self[:ip].split(".").map(&:to_i) - [ time, service, ("\x00"*10)+"\xff\xff", *ip, port ].pack("VQa12C4n") + ip = self[:ip].split('.').map(&:to_i) + [time, service, ("\x00" * 10) + "\xff\xff", *ip, port].pack('VQa12C4n') end def string "#{self[:ip]}:#{self[:port]}" end def self.pkt(*addrs) - addrs = addrs.select{|i| i.is_a?(Bitcoin::Protocol::Addr) && i.ip =~ /^\d+\.\d+\.\d+\.\d+$/ } + addrs = addrs.select do |i| + i.is_a?(Bitcoin::Protocol::Addr) && i.ip =~ /^\d+\.\d+\.\d+\.\d+$/ + end length = Bitcoin::Protocol.pack_var_int(addrs.size) - Bitcoin::Protocol.pkt("addr", length + addrs.map(&:to_payload).join) + Bitcoin::Protocol.pkt('addr', length + addrs.map(&:to_payload).join) end end - end end