package Ġcom . ly k ke . matching . engine . messages . wrappers Ċ Ċ import Ġcom . google . protobuf . StringValue Ċ import Ġcom . ly k ke . matching . engine . da os . context . Limit Order Cancel Operation Context Ċ import Ġcom . ly k ke . matching . engine . messages . Message Status Ċ import Ġcom . ly k ke . matching . engine . messages . MessageType Ċ import Ġcom . my jet wallet . messages . incoming . grpc . Grpc Incoming Messages Ċ import Ġio . grpc . stub . Stream Observer Ċ import Ġio . micro meter . core . instrument . Timer Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠLimit Order Cancel Message Wrapper ( ĊĠĠĠ Ġvar Ġparsed Message : ĠGr pc Incoming Messages . Limit Order Cancel , ĊĠĠĠ Ġprivate Ġval Ġcallback : ĠStream Observer < Grpc Incoming Messages . Limit Order Cancel Response > ?, ĊĠĠĠ Ġprivate Ġval Ġcancel Order Timer : ĠTimer ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġclose Stream : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar Ġcontext : ĠLimit Order Cancel Operation Context ? Ġ= Ġnull Ċ ) Ġ: ĠMessage Wrapper ( ĊĠĠĠ ĠMessageType . LIMIT _ ORDER _ CANCEL , ĊĠĠĠ Ġparsed Message . id , ĊĠĠĠ Ġif Ġ( parsed Message . has MessageId ()) Ġparsed Message . message Id . value Ġelse Ġparsed Message . id Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" D uplicated Code ") ĊĠĠĠ Ġfun Ġwrite Response ( ĊĠĠĠĠĠĠĠ Ġstatus : ĠMessage Status , ĊĠĠĠĠĠĠĠ ĠerrorMessage : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠorderId : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġversion : ĠLong ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Order Timer ?. record ( System . nano Time () Ġ- Ġstart Timestamp , ĠTimeUnit . NAN O SECONDS ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Builder Ġ= ĠGr pc Incoming Messages . Limit Order Cancel Response . newBuilder () ĊĠĠĠĠĠĠĠ Ġresponse Builder . id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġresponse Builder . status Ġ= ĠGr pc Incoming Messages . Status . for Number ( status . type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( errorMessage Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Builder . status Reason Ġ= ĠString Value . of ( errorMessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( orderId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Builder . matching Engine Id Ġ= ĠString Value . of ( orderId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresponse Builder . message Id Ġ= ĠString Value . of ( message Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( version Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Builder . wallet Version Ġ= Ġversion ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwrite ClientResponse ( response Builder . build ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite ClientResponse ( response : ĠGr pc Incoming Messages . Limit Order Cancel Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( callback Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . onNext ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Response Time Ġ= ĠSystem . nano Time () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( close Stream ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Completed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error (" Unable Ġto Ġwrite Ġfor Ġmessage Ġwith Ġid Ġ$ message Id Ġresponse : Ġ${ exception . message }", Ġexception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }