package Ġbit shares kit . models Ċ Ċ import Ġbit shares kit . extensions . build JsonArray Ċ import Ġbit shares kit . extensions . build JsonObject Ċ import Ġbit shares kit . objects . Json Serializable Ċ import Ġbit shares kit . chain . Blockchain API Ċ import Ġbit shares kit . chain . Call Method Ċ import Ġorg . java _ json . JSONArray Ċ import Ġorg . java _ json . JSONObject Ċ Ċ data Ġclass ĠSocket Call ( ĊĠĠĠ Ġval Ġmethod : ĠString Ġ= ĠRPC _ METHOD , ĊĠĠĠ Ġval Ġapi : ĠBlock chain API , ĊĠĠĠ Ġval Ġrpc : ĠString , ĊĠĠĠ Ġval Ġparams : ĠList < Any ?> Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġjson rpc : ĠString Ġ= ĠJSON RPC _ VERSION , ĊĠĠĠ Ġval Ġsubscribe : ĠBoolean Ġ= Ġfalse Ċ ): ĠJson Serializable Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġmethod : ĠCall Method , ĊĠĠĠĠĠĠĠ Ġparams : ĠList < Any ?> Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġsubscribe : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġapi Ġ= Ġmethod . api , ĊĠĠĠĠĠĠĠ Ġrpc Ġ= Ġmethod . name String , ĊĠĠĠĠĠĠĠ Ġparams Ġ= Ġparams , ĊĠĠĠĠĠĠĠ Ġsubscribe Ġ= Ġsubscribe ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ CALLBACK _ ID Ġ= Ġ" id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ METHOD Ġ= Ġ" method " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ PARAMS Ġ= Ġ" params " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ JSON RPC Ġ= Ġ" jsonrpc " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRPC _ METHOD Ġ= Ġ" call " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠJSON RPC _ VERSION Ġ= Ġ" 2 . 0 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġid : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġvar Ġapi Id : ĠInt Ġ= Ġ- 1 Ċ // ĠĠĠ Ġval Ġtimestamp Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠ Ġoverride Ġfun ĠtoJson Element (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġordered Ġ= Ġif Ġ( subscribe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild JsonArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput All ( JSONArray ( params )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠJSONArray ( params ) ĊĠĠĠĠĠĠĠ Ġval Ġparams Array Ġ= Ġbuild JsonArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( api Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( rpc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( ordered ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild JsonObject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( KEY _ CALLBACK _ ID , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( KEY _ JSON RPC , Ġjson rpc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( KEY _ METHOD , Ġmethod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( KEY _ PARAMS , Ġparams Array ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠSocket Call Ġ&& Ġrpc Ġ== Ġother . rpc Ġ&& Ġparams Ġ== Ġother . params ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġmethod . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġapi . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġrpc . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġparams . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġjson rpc . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġsubscribe . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( id Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( api Id Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ }