package Ġio . state set . ab ci čĊč Ċ import Ġsun . plugin 2 . util . Po jo Util . toJson č Ċ import Ġjava . util . concurrent . TimeUnit č Ċ import Ġjava . util . concurrent . Executors č Ċ import Ġjava . util . concurrent . Scheduled ExecutorService č Ċ import Ġjava . util . HashMap č Ċ import Ġjet brains . ex od us . Array Byte Iterable č Ċ import Ġjet brains . ex od us . env . Environment č Ċ import Ġjet brains . ex od us . env . Store č Ċ import Ġjet brains . ex od us . env . Store Config č Ċ import Ġjet brains . ex od us . env . Transaction č Ċ import Ġio . grpc . stub . Stream Observer č Ċ import Ġtypes . AB CI Application Grpc č Ċ import Ġtypes . Types .* č Ċ import Ġcom . google . gson . Gson ; č Ċ import Ġcom . google . protobuf . ByteString ; č Ċ import Ġcom . google . protobuf . Method čĊčĊč Ċ class ĠState set Network Communication Ġ: ĠAB CI Application Grpc . AB CI Application Impl Base () Ġ{ čĊčĊĠĠĠ Ġfun Ġreceived Deliver Tx ( req : ĠRequest Deliver Tx ): ĠResponse Deliver Tx Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= Ġreq . get Tx (). toByteArray () čĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġgson . fromJson ( String ( byteArray ), ĠMessage :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġgson . fromJson ( String ( byteArray ), ĠAccount :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġlead Ġ= Ġgson . fromJson ( String ( byteArray ), ĠLead :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġcontact Ġ= Ġgson . fromJson ( String ( byteArray O ), ĠContact :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= Ġgson . fromJson ( String ( byteArray ), ĠApplication :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġapproval Ġ= Ġgson . fromJson ( String ( byteArray ), ĠAppro val :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġproposal Ġ= Ġgson . fromJson ( String ( byteArray ), ĠProposal :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġagreement Ġ= Ġgson . fromJson ( String ( byteArray ), ĠAgreement :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġloan Ġ= Ġgson . fromJson ( String ( byteArray ), ĠLo an :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġinvoice Ġ= Ġgson . fromJson ( String ( byteArray ), ĠInvoice :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= Ġgson . fromJson ( String ( byteArray ), ĠCase :: class . java ) čĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġgson . fromJson ( String ( byte Ar ay ), ĠToken :: class . java ) čĊčĊčĊĠĠĠĠĠĠĠ Ġreturn ĠResponse Deliver Tx . newBuilder (). set Code ( Code Type . OK ). build () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġrequest Check Tx ( req : ĠRequest Check Tx ): ĠResponse Check Tx Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠResponse Check Tx . newBuilder (). set Code ( Code Type . OK ). build () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġrequest Commit ( request Commit : ĠRequest Commit ): ĠResponse Commit Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠResponse Commit . newBuilder (). setData ( ByteString . copyFrom ( Byte Util . to Bytes ( hash Count ))). build () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun ĠsendMessage ( m : ĠMessage ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . sendMessage ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Lead ( l : ĠLead ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Lead ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Account ( a : ĠAccount ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( a ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Account ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Contact ( c : ĠContact ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Contact ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Proposal ( p : ĠProposal ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Proposal ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Purchase Order ( po : ĠPurchase Order ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Purchase Order ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Invoice ( i : ĠInvoice ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Invoice ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Application ( a : ĠApplication ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Application ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsend Case ( c : ĠCase ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Case ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġfun Ġsend Agreement ( a : ĠAgreement ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġrpc Ġ= ĠString Param ( Method . BRO ADCAST _ TX _ ASYNC , Ġgson . toJson ( m ). getBytes ()) čĊĠĠĠĠĠĠĠ Ġproto . send Agreement ( rpc , Ġ{ Ġe Ġ-> čĊčĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊč Ċ }