Sha256: 903f66e7e3a8979ce9f5d42da4dff1d7212f92862727190493c90d0a13dc18bf

Contents?: true

Size: 1.03 KB

Versions: 10

Compression:

Stored size: 1.03 KB

Contents

module Tapyrus
  module Message
    # filterload message
    # https://bitcoin.org/en/developer-reference#filterload
    class FilterLoad < Base
      COMMAND = 'filterload'

      BLOOM_UPDATE_NONE = 0
      BLOOM_UPDATE_ALL = 1
      BLOOM_UPDATE_P2PUBKEY_ONLY = 2

      attr_accessor :filter
      attr_accessor :flag

      def initialize(filter, flag = BLOOM_UPDATE_ALL)
        @filter = filter
        @flag = flag
      end

      def self.parse_from_payload(payload)
        buf = StringIO.new(payload)
        filter_count = Tapyrus.unpack_var_int_from_io(buf)
        filter = buf.read(filter_count).unpack('C*')
        func_count = buf.read(4).unpack('V').first
        tweak = buf.read(4).unpack('V').first
        flag = buf.read(1).unpack('C').first
        FilterLoad.new(Tapyrus::BloomFilter.new(filter, func_count, tweak), flag)
      end

      def to_payload
        Tapyrus.pack_var_int(filter.filter.size) << filter.filter.pack('C*') <<
          [filter.hash_funcs, filter.tweak, flag].pack('VVC')
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
tapyrus-0.3.4 lib/tapyrus/message/filter_load.rb
tapyrus-0.3.3 lib/tapyrus/message/filter_load.rb
tapyrus-0.3.2 lib/tapyrus/message/filter_load.rb
tapyrus-0.3.1 lib/tapyrus/message/filter_load.rb
tapyrus-0.3.0 lib/tapyrus/message/filter_load.rb
tapyrus-0.2.13 lib/tapyrus/message/filter_load.rb
tapyrus-0.2.12 lib/tapyrus/message/filter_load.rb
tapyrus-0.2.10 lib/tapyrus/message/filter_load.rb
tapyrus-0.2.9 lib/tapyrus/message/filter_load.rb
tapyrus-0.2.8 lib/tapyrus/message/filter_load.rb