@@ -21,7 +21,7 @@ use crate::test_genesis::test_genesis_setup;
2121use crate :: {
2222 helpers:: {
2323 account_data, account_nonce, enclave_signer_account, ensure_enclave_signer_account,
24- ensure_root, get_account_info, increment_nonce, root, validate_nonce,
24+ ensure_root, get_account_info, get_game_for , increment_nonce, root, validate_nonce,
2525 } ,
2626 AccountData , AccountId , Getter , Index , ParentchainHeader , PublicGetter , ShardIdentifier , State ,
2727 StateTypeDiff , Stf , StfError , StfResult , TrustedCall , TrustedCallSigned , TrustedGetter ,
@@ -115,6 +115,12 @@ impl Stf {
115115 } else {
116116 None
117117 } ,
118+ TrustedGetter :: game( who) =>
119+ if let Some ( game) = get_game_for ( who) {
120+ Some ( game. encode ( ) )
121+ } else {
122+ None
123+ } ,
118124 } ,
119125 Getter :: public( g) => match g {
120126 PublicGetter :: some_value => Some ( 42u32 . encode ( ) ) ,
@@ -200,6 +206,37 @@ impl Stf {
200206 Self :: shield_funds ( who, value) ?;
201207 Ok ( ( ) )
202208 } ,
209+ TrustedCall :: rps_new_game( sender, opponent) => {
210+ let origin = ita_sgx_runtime:: Origin :: signed ( sender. clone ( ) ) ;
211+ info ! ( "rps new_game" ) ;
212+ ita_sgx_runtime:: RpsCall :: < Runtime > :: new_game { opponent }
213+ . dispatch_bypass_filter ( origin)
214+ . map_err ( |_| StfError :: Dispatch ( "rps_new_game" . to_string ( ) ) ) ?;
215+ Ok ( ( ) )
216+ } ,
217+ TrustedCall :: rps_choose( sender, weapon) => {
218+ let origin = ita_sgx_runtime:: Origin :: signed ( sender. clone ( ) ) ;
219+ info ! ( "rps choose: {:?}" , weapon) ;
220+ ita_sgx_runtime:: RpsCall :: < Runtime > :: choose {
221+ choice : weapon. clone ( ) ,
222+ salt : [ 0u8 ; 32 ] ,
223+ }
224+ . dispatch_bypass_filter ( origin. clone ( ) )
225+ . map_err ( |e| {
226+ error ! ( "dispatch error {:?}" , e) ;
227+ StfError :: Dispatch ( "rps_choose" . to_string ( ) )
228+ } ) ?;
229+ Ok ( ( ) )
230+ } ,
231+ TrustedCall :: rps_reveal( sender, weapon) => {
232+ let origin = ita_sgx_runtime:: Origin :: signed ( sender. clone ( ) ) ;
233+ info ! ( "rps reveal" ) ;
234+ ita_sgx_runtime:: RpsCall :: < Runtime > :: reveal { choice : weapon, salt : [ 0u8 ; 32 ] }
235+ . dispatch_bypass_filter ( origin)
236+ . map_err ( |_| StfError :: Dispatch ( "rps_reveal" . to_string ( ) ) ) ?;
237+ get_game_for ( sender) ;
238+ Ok ( ( ) )
239+ } ,
203240 } ?;
204241 increment_nonce ( & sender) ;
205242 Ok ( ( ) )
@@ -304,6 +341,9 @@ impl Stf {
304341 TrustedCall :: balance_transfer( _, _, _) => debug ! ( "No storage updates needed..." ) ,
305342 TrustedCall :: balance_unshield( _, _, _, _) => debug ! ( "No storage updates needed..." ) ,
306343 TrustedCall :: balance_shield( _, _, _) => debug ! ( "No storage updates needed..." ) ,
344+ TrustedCall :: rps_new_game( _, _) => debug ! ( "No storage updates needed..." ) ,
345+ TrustedCall :: rps_choose( _, _) => debug ! ( "No storage updates needed..." ) ,
346+ TrustedCall :: rps_reveal( _, _) => debug ! ( "No storage updates needed..." ) ,
307347 } ;
308348 key_hashes
309349 }
0 commit comments