pub trait Contract {
    type Request: Decode;
    type Response: Encode;
    type Error: Error;

    // Required methods
    fn call<C: Context>(
        ctx: &mut C,
        request: Self::Request
    ) -> Result<Self::Response, Self::Error>;
    fn query<C: Context>(
        _ctx: &mut C,
        _request: Self::Request
    ) -> Result<Self::Response, Self::Error>;

    // Provided methods
    fn instantiate<C: Context>(
        _ctx: &mut C,
        _request: Self::Request
    ) -> Result<(), Self::Error> { ... }
    fn handle_reply<C: Context>(
        _ctx: &mut C,
        _reply: Reply
    ) -> Result<Option<Self::Response>, Self::Error> { ... }
    fn pre_upgrade<C: Context>(
        _ctx: &mut C,
        _request: Self::Request
    ) -> Result<(), Self::Error> { ... }
    fn post_upgrade<C: Context>(
        _ctx: &mut C,
        _request: Self::Request
    ) -> Result<(), Self::Error> { ... }
}
Expand description

Trait that needs to be implemented by contract implementations.

Required Associated Types§

source

type Request: Decode

Type of all requests.

source

type Response: Encode

Type of all responses.

source

type Error: Error

Type of all errors.

Required Methods§

source

fn call<C: Context>( ctx: &mut C, request: Self::Request ) -> Result<Self::Response, Self::Error>

Call the contract.

source

fn query<C: Context>( _ctx: &mut C, _request: Self::Request ) -> Result<Self::Response, Self::Error>

Query the contract.

Provided Methods§

source

fn instantiate<C: Context>( _ctx: &mut C, _request: Self::Request ) -> Result<(), Self::Error>

Instantiate the contract.

source

fn handle_reply<C: Context>( _ctx: &mut C, _reply: Reply ) -> Result<Option<Self::Response>, Self::Error>

Handle replies from sent messages.

source

fn pre_upgrade<C: Context>( _ctx: &mut C, _request: Self::Request ) -> Result<(), Self::Error>

Perform any pre-upgrade tasks. This method is called on the old contract code.

If this method reports an error the upgrade will be aborted.

source

fn post_upgrade<C: Context>( _ctx: &mut C, _request: Self::Request ) -> Result<(), Self::Error>

Perform any post-upgrade tasks. This method is called on the new contract code.

If this method reports an error the upgrade will be aborted.

Implementors§