@@ -30,29 +30,29 @@ use rlp::{Decodable, Rlp};
3030pub fn execute (
3131 bytes : & [ u8 ] ,
3232 state : & mut TopLevelState ,
33- fee_payer : & Address ,
33+ _fee_payer : & Address ,
3434 _sender_public : & Public ,
3535 current_block_number : u64 ,
3636) -> StateResult < ( ) > {
37+ let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
3738 let datagram = Datagram :: decode ( & Rlp :: new ( bytes) ) . expect ( "Verification passed" ) ;
3839 match datagram {
3940 Datagram :: CreateClient {
4041 id,
4142 kind,
4243 consensus_state,
43- } => create_client ( state , fee_payer , & id, kind, & consensus_state, current_block_number ) ,
44+ } => create_client ( & mut context , & id, kind, & consensus_state) ,
4445 Datagram :: UpdateClient {
4546 id,
4647 header,
47- } => update_client ( state , & id, & header, current_block_number ) ,
48+ } => update_client ( & mut context , & id, & header) ,
4849 Datagram :: ConnOpenInit {
4950 identifier,
5051 desired_counterparty_connection_identifier,
5152 counterparty_prefix,
5253 client_identifier,
5354 counterparty_client_identifier,
5455 } => {
55- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
5656 let connection_manager = ibc_connection:: Manager :: new ( ) ;
5757 connection_manager
5858 . handle_open_init (
@@ -93,19 +93,21 @@ pub fn execute(
9393 )
9494 . map_err ( |err| RuntimeError :: IBC ( format ! ( "ConnOpenTry: {}" , err) ) . into ( ) )
9595 }
96+ Datagram :: ConnOpenAck {
97+ ..
98+ } => {
99+ unimplemented ! ( ) ;
100+ }
96101 }
97102}
98103
99104
100105fn create_client (
101- state : & mut TopLevelState ,
102- _fee_payer : & Address ,
106+ ctx : & mut dyn ibc:: Context ,
103107 id : & str ,
104108 kind : ibc_client:: Kind ,
105109 consensus_state : & [ u8 ] ,
106- current_block_number : u64 ,
107110) -> StateResult < ( ) > {
108- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
109111 let client_manager = ibc_client:: Manager :: new ( ) ;
110112 if kind != ibc_client:: KIND_FOUNDRY {
111113 return Err ( RuntimeError :: IBC ( format ! ( "CreateClient has invalid type {}" , kind) ) . into ( ) )
@@ -119,17 +121,16 @@ fn create_client(
119121 } ;
120122
121123 client_manager
122- . create ( & mut context , id, & foundry_consensus_state)
124+ . create ( ctx , id, & foundry_consensus_state)
123125 . map_err ( |err| RuntimeError :: IBC ( format ! ( "CreateClient: {:?}" , err) ) ) ?;
124126 Ok ( ( ) )
125127}
126128
127- fn update_client ( state : & mut TopLevelState , id : & str , header : & [ u8 ] , current_block_number : u64 ) -> StateResult < ( ) > {
128- let mut context = ibc_context:: TopLevelContext :: new ( state, current_block_number) ;
129+ fn update_client ( ctx : & mut dyn ibc:: Context , id : & str , header : & [ u8 ] ) -> StateResult < ( ) > {
129130 let client_manager = ibc_client:: Manager :: new ( ) ;
130- let client_state = client_manager. query ( & mut context , id) . map_err ( RuntimeError :: IBC ) ?;
131+ let client_state = client_manager. query ( ctx , id) . map_err ( RuntimeError :: IBC ) ?;
131132
132- client_state. update ( & mut context , header) . map_err ( RuntimeError :: IBC ) ?;
133+ client_state. update ( ctx , header) . map_err ( RuntimeError :: IBC ) ?;
133134
134135 Ok ( ( ) )
135136}
0 commit comments