borshSize method

int borshSize()

Returns the serialized byte length of this instance.

Example

class Data extends BorshObject {

  const Data(this.counter);

  final BigInt? counter;

  factory Data.deserialize(final Map<String, dynamic> json) 
    => Data(json['counter']);

  static final BorshStructCodec borshCodec = BorshStructCodec({ 
    'counter': borsh.u64.option(), 
  });

  @override
  BorshSchema get borshSchema => borshCodec.schema;

  @override
  Map<String, dynamic> toJson() => { 
    'counter': counter, 
  };
}

const Data data0 = Data(null);
print('Optional type with `null` value:');            // Optional type with `null` value:
print(' - Buffer length ${data0.toBorsh().length}');  //  - Buffer length 1
print(' - Instance size ${data0.borshSize()}');       //  - Instance size 1

final Data data1 = Data(BigInt.zero);
print('Optional type with `set` value:');             // Optional type with `set` value:
print(' - Buffer length ${data1.toBorsh().length}');  //  - Buffer length 9
print(' - Instance size ${data1.borshSize()}');       //  - Instance size 9

Implementation

int borshSize() {
  int size = 0;
  final Map<String, dynamic> json = toJson();
  for (final MapEntry<String, BorshCodec> entry in borshSchema.entries) {
    final BorshCodec codec = entry.value;
    final dynamic value = json[entry.key];
    size += codec.size(value);
  }
  return size;
}