Module: BSV::Wallet::Serializer::DiscoverByAttributes
- Defined in:
- lib/bsv/wallet/serializer/discover_by_attributes.rb
Overview
BRC-103 wire codec for the discover_by_attributes call (call byte 22).
Args wire layout:
[varint: attribute_count] per entry: [varint-int key_bytes][varint-int value_bytes]
[optional_uint32: limit]
[optional_uint32: offset]
[optional_bool: seek_permission]
Result wire layout: see DiscoverCertificatesResult.
Keys are written in sorted order (matching Go sort.Strings) to ensure deterministic encoding across SDK implementations.
Class Method Summary collapse
- .deserialize_args(bytes) ⇒ Object
- .deserialize_result(bytes) ⇒ Object
- .serialize_args(args) ⇒ Object
- .serialize_result(result) ⇒ Object
Class Method Details
.deserialize_args(bytes) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/bsv/wallet/serializer/discover_by_attributes.rb', line 35 def deserialize_args(bytes) r = Wire::Reader.new(bytes) count = r.read_varint attributes = {} count.times do k = r.read_int_bytes.force_encoding('UTF-8') v = r.read_int_bytes.force_encoding('UTF-8') attributes[k] = v end limit = r.read_optional_uint32 offset = r.read_optional_uint32 = r.read_optional_bool { attributes: attributes, limit: limit, offset: offset, seek_permission: } end |
.deserialize_result(bytes) ⇒ Object
55 56 57 |
# File 'lib/bsv/wallet/serializer/discover_by_attributes.rb', line 55 def deserialize_result(bytes) DiscoverCertificatesResult.deserialize(bytes) end |
.serialize_args(args) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/bsv/wallet/serializer/discover_by_attributes.rb', line 21 def serialize_args(args) w = Wire::Writer.new attributes = args[:attributes] || {} w.write_varint(attributes.length) attributes.keys.sort.each do |k| w.write_int_bytes(k.to_s.b) w.write_int_bytes(attributes[k].to_s.b) end w.write_optional_uint32(args[:limit]) w.write_optional_uint32(args[:offset]) w.write_optional_bool(args[:seek_permission]) w.buf end |
.serialize_result(result) ⇒ Object
51 52 53 |
# File 'lib/bsv/wallet/serializer/discover_by_attributes.rb', line 51 def serialize_result(result) DiscoverCertificatesResult.serialize(result) end |