axelar-cgp-sui

Module 0xa2::relayer_discovery_v0

use 0x2::object;
use 0x2::table;
use 0x2::tx_context;
use 0xa2::transaction;
use 0xb0::version_control;

Struct RelayerDiscovery_v0

A central shared object that stores discovery configuration for the Relayer. The Relayer will use this object to discover and execute the transactions when a message is targeted at specific channel.

struct RelayerDiscovery_v0 has store
Fields
configurations: table::Table<object::ID, transaction::Transaction>
A map of channel IDs to the target that needs to be executed by the relayer. There can be only one configuration per channel.
version_control: version_control::VersionControl
An object to manage version control.

Constants

const EChannelNotFound: vector<u8> = [99, 104, 97, 110, 110, 101, 108, 32, 110, 111, 116, 32, 102, 111, 117, 110, 100];

Function new

public(friend) fun new(version_control: version_control::VersionControl, ctx: &mut tx_context::TxContext): relayer_discovery_v0::RelayerDiscovery_v0
Implementation
public(package) fun new(
    version_control: VersionControl,
    ctx: &mut TxContext,
): RelayerDiscovery_v0 {
    RelayerDiscovery_v0 {
        configurations: table::new<ID, Transaction>(ctx),
        version_control,
    }
}

Function set_transaction

public(friend) fun set_transaction(self: &mut relayer_discovery_v0::RelayerDiscovery_v0, id: object::ID, transaction: transaction::Transaction)
Implementation
public(package) fun set_transaction(
    self: &mut RelayerDiscovery_v0,
    id: ID,
    transaction: Transaction,
) {
    if (self.configurations.contains(id)) {
        self.configurations.remove(id);
    };
    self.configurations.add(id, transaction);
}

Function remove_transaction

public(friend) fun remove_transaction(self: &mut relayer_discovery_v0::RelayerDiscovery_v0, id: object::ID): transaction::Transaction
Implementation
public(package) fun remove_transaction(
    self: &mut RelayerDiscovery_v0,
    id: ID,
): Transaction {
    assert!(self.configurations.contains(id), EChannelNotFound);
    self.configurations.remove(id)
}

Function get_transaction

public(friend) fun get_transaction(self: &relayer_discovery_v0::RelayerDiscovery_v0, id: object::ID): transaction::Transaction
Implementation
public(package) fun get_transaction(
    self: &RelayerDiscovery_v0,
    id: ID,
): Transaction {
    assert!(self.configurations.contains(id), EChannelNotFound);
    self.configurations[id]
}

Function version_control

public(friend) fun version_control(self: &relayer_discovery_v0::RelayerDiscovery_v0): &version_control::VersionControl
Implementation
public(package) fun version_control(
    self: &RelayerDiscovery_v0,
): &VersionControl {
    &self.version_control
}