Class: Solace::Message

Inherits:
SerializableRecord show all
Defined in:
lib/solace/message.rb

Constant Summary collapse

SERIALIZER =
Solace::Serializers::MessageSerializer
DESERIALIZER =
Solace::Serializers::MessageDeserializer

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from SerializableRecord

deserialize, #serialize

Methods included from Concerns::BinarySerializable

#to_binary, #to_bytes, #to_io

Constructor Details

#initialize(version: nil, accounts: [], instructions: [], recent_blockhash: nil, header: [0, 0, 0], address_lookup_tables: []) ⇒ Message

Initialize a new Message

Parameters:

  • version (Integer, nil) (defaults to: nil)

    Message version (nil for legacy)

  • accounts (Array<String>) (defaults to: [])

    Account public keys (base58)

  • instructions (Array<Solace::Instruction>) (defaults to: [])

    Instructions in the message

  • recent_blockhash (String) (defaults to: nil)

    Recent blockhash (base58)

  • header (Array<Integer>) (defaults to: [0, 0, 0])

    Message header [num_required_signatures, num_readonly_signed, num_readonly_unsigned]

  • address_lookup_tables (Array<Solace::AddressLookupTable>) (defaults to: [])


51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/solace/message.rb', line 51

def initialize(
  version: nil,
  accounts: [],
  instructions: [],
  recent_blockhash: nil,
  header: [0, 0, 0],
  address_lookup_tables: []
)
  @version = version
  @header = header
  @accounts = accounts
  @recent_blockhash = recent_blockhash
  @instructions = instructions
  @address_lookup_tables = address_lookup_tables
end

Instance Attribute Details

#accountsArray<String>

Returns Account public keys (base58).

Returns:

  • (Array<String>)

    Account public keys (base58)



29
30
31
# File 'lib/solace/message.rb', line 29

def accounts
  @accounts
end

#address_lookup_tablesArray<Solace::AddressLookupTable>

Returns Address lookup tables (for versioned messages).

Returns:



41
42
43
# File 'lib/solace/message.rb', line 41

def address_lookup_tables
  @address_lookup_tables
end

#headerArray<Integer>

Returns Message header [num_required_signatures, num_readonly_signed, num_readonly_unsigned].

Returns:

  • (Array<Integer>)

    Message header [num_required_signatures, num_readonly_signed, num_readonly_unsigned]



25
26
27
# File 'lib/solace/message.rb', line 25

def header
  @header
end

#instructionsArray<Solace::Instruction>

Returns Instructions in the message.

Returns:



37
38
39
# File 'lib/solace/message.rb', line 37

def instructions
  @instructions
end

#recent_blockhashString

Returns Recent blockhash (base58).

Returns:

  • (String)

    Recent blockhash (base58)



33
34
35
# File 'lib/solace/message.rb', line 33

def recent_blockhash
  @recent_blockhash
end

#versionInteger?

Returns Message version (nil for legacy).

Returns:

  • (Integer, nil)

    Message version (nil for legacy)



21
22
23
# File 'lib/solace/message.rb', line 21

def version
  @version
end

Instance Method Details

#num_readonly_signed_accountsInteger

Returns the number of readonly signed accounts

Returns:

  • (Integer)

    The number of readonly signed accounts



84
85
86
# File 'lib/solace/message.rb', line 84

def num_readonly_signed_accounts
  header[1]
end

#num_readonly_unsigned_accountsInteger

Returns the number of readonly unsigned accounts

Returns:

  • (Integer)

    The number of readonly unsigned accounts



91
92
93
# File 'lib/solace/message.rb', line 91

def num_readonly_unsigned_accounts
  header[2]
end

#num_required_signaturesInteger

Returns the number of required signatures

Returns:

  • (Integer)

    The number of required signatures



77
78
79
# File 'lib/solace/message.rb', line 77

def num_required_signatures
  header[0]
end

#versioned?Boolean

Check if the message is versioned

Returns:

  • (Boolean)

    True if the message is versioned, false otherwise



70
71
72
# File 'lib/solace/message.rb', line 70

def versioned?
  !version.nil?
end