@@ -5,11 +5,11 @@ use crate::component::{
55 Voter , WrappedClient , WrappedHandler ,
66} ;
77use crate :: frame:: { EventFrame , SignalFrame } ;
8- use race_core:: error:: { Error , Result } ;
98use race_core:: context:: GameContext ;
9+ use race_core:: error:: { Error , Result } ;
1010use race_core:: storage:: StorageT ;
1111use race_core:: transport:: TransportT ;
12- use race_core:: types:: { ClientMode , GameMode , GetCheckpointParams , ServerAccount } ;
12+ use race_core:: types:: { CheckpointParams , ClientMode , GameMode , ServerAccount } ;
1313use race_encryptor:: Encryptor ;
1414use race_env:: TransactorConfig ;
1515use tokio:: sync:: mpsc;
@@ -29,43 +29,57 @@ impl ValidatorHandle {
2929 server_account : & ServerAccount ,
3030 encryptor : Arc < Encryptor > ,
3131 transport : Arc < dyn TransportT + Send + Sync > ,
32- storage : Arc < dyn StorageT + Send + Sync > ,
32+ _storage : Arc < dyn StorageT + Send + Sync > ,
3333 signal_tx : mpsc:: Sender < SignalFrame > ,
3434 _config : & TransactorConfig ,
3535 ) -> Result < Self > {
36- info ! (
37- "Start game handle for {} with Validator mode" ,
38- game_addr,
39- ) ;
36+ info ! ( "Start game handle for {} with Validator mode" , game_addr, ) ;
4037 let Some ( game_account) = transport. get_game_account ( game_addr) . await ? else {
4138 return Err ( Error :: GameAccountNotFound ) ;
4239 } ;
4340
44- let checkpoint_off_chain = storage
45- . get_checkpoint ( GetCheckpointParams {
46- game_addr : game_addr. to_owned ( ) ,
41+ let transactor_addr = game_account
42+ . transactor_addr
43+ . as_ref ( )
44+ . ok_or ( Error :: GameNotServed ) ?;
45+ let transactor_account = transport
46+ . get_server_account ( transactor_addr)
47+ . await ?
48+ . ok_or ( Error :: CantFindTransactor ) ?;
49+
50+ let connection = Arc :: new (
51+ RemoteConnection :: try_new (
52+ & server_account. addr ,
53+ & transactor_account. endpoint ,
54+ encryptor. clone ( ) ,
55+ )
56+ . await ?,
57+ ) ;
58+
59+ let checkpoint_off_chain = connection. get_checkpoint_off_chain (
60+ game_addr,
61+ CheckpointParams {
4762 settle_version : game_account. settle_version ,
48- } )
49- . await ?;
63+ } ,
64+ ) . await ?;
65+
66+ // let checkpoint_off_chain = storage
67+ // .get_checkpoint(GetCheckpointParams {
68+ // game_addr: game_addr.to_owned(),
69+ // settle_version: game_account.settle_version,
70+ // })
71+ // .await?;
5072
5173 let game_context = GameContext :: try_new ( & game_account, checkpoint_off_chain) ?;
5274 let checkpoint = game_context. checkpoint ( ) . clone ( ) ;
5375
54- let Some ( bundle_account) = transport. get_game_bundle ( & game_account. bundle_addr ) . await ? else {
76+ let Some ( bundle_account) = transport. get_game_bundle ( & game_account. bundle_addr ) . await ?
77+ else {
5578 return Err ( Error :: GameBundleNotFound ) ;
5679 } ;
5780
5881 let handler = WrappedHandler :: load_by_bundle ( & bundle_account, encryptor. clone ( ) ) . await ?;
5982
60- let transactor_addr = game_account
61- . transactor_addr
62- . as_ref ( )
63- . ok_or ( Error :: GameNotServed ) ?;
64- let transactor_account = transport
65- . get_server_account ( transactor_addr)
66- . await ?
67- . ok_or ( Error :: CantFindTransactor ) ?;
68-
6983 info ! ( "Creating components" ) ;
7084 let event_bus = EventBus :: new ( game_account. addr . clone ( ) ) ;
7185
@@ -76,14 +90,6 @@ impl ValidatorHandle {
7690 EventLoop :: init ( handler, game_context, ClientMode :: Validator , GameMode :: Main ) ;
7791 let mut event_loop_handle = event_loop. start ( & game_account. addr , event_loop_ctx) ;
7892
79- let connection = Arc :: new (
80- RemoteConnection :: try_new (
81- & server_account. addr ,
82- & transactor_account. endpoint ,
83- encryptor. clone ( ) ,
84- )
85- . await ?,
86- ) ;
8793 let ( subscriber, subscriber_context) =
8894 Subscriber :: init ( & game_account, server_account, connection. clone ( ) ) ;
8995 let mut subscriber_handle = subscriber. start ( & game_account. addr , subscriber_context) ;
0 commit comments