package Ġcom . lo lo of 6 4 . react n ativ est ock fish android Ċ Ċ import Ġcom . facebook . react . bridge . Promise Ċ import Ġcom . facebook . react . bridge . React ApplicationContext Ċ import Ġcom . facebook . react . bridge . React Context Base Java Module Ċ import Ġcom . facebook . react . bridge . React Method Ċ import Ġcom . facebook . react . modules . core . Device Event Manager Module Ċ Ċ import Ġorg . pe ter o . d roid fish . engine . External Engine Ċ import Ġorg . pe ter o . d roid fish . engine . U CI Engine Base Ċ import Ġorg . pe ter o . d roid fish . engine . U CI Engine Ċ Ċ import Ġandroid . util . Log ĊĊ Ċ class ĠStock fish Android Module ( val Ġreact Context : ĠReact ApplicationContext ) Ġ: ĠReact Context Base Java Module ( react Context ) Ġ{ ĊĊĠ Ġprotected Ġlateinit Ġvar Ġengine Monitor : ĠThread ĊĊĠ Ġprivate Ġlateinit Ġvar Ġengine : ĠU CI Engine ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" Stock fish " ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġcreate Engine ( promise : ĠPromise ) Ġ{ ĊĠĠĠ ĠLog . d (" SS to ck fish ", Ġ" start Engine ") ĊĠĠĠ Ġengine Ġ= ĠU CI Engine Base . get Engine ( react Context . getApplicationContext (), Ġ" stock fish ", Ġobject Ġ: ĠU CI Engine . Report Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġreport Error ( err Msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" SS to ck fish ", ĠerrMsg Ġ?: Ġ"") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġreport Std Out ( std Out Line : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" SS to ck fish ", Ġstd Out Line Ġ?: Ġ"") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ ĠLog . d (" SS to ck fish ", Ġ" start Engine Ġpre init ") ĊĠĠĠ Ġengine . initialize () ĊĠĠĠ Ġengine Monitor Ġ= ĠThread ( object Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġmonitor Loop ( engine ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ Ġengine Monitor . start () ĊĠĠĠ Ġpromise . resolve ( null ) ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġmonitor Loop ( engine : ĠU CI Engine ) Ġ{ ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠ Ġval Ġtimeout : ĠInt Ġ= Ġget Read Timeout () ĊĠĠĠĠĠ Ġif Ġ( java . lang . Thread . currentThread (). is Inter rupted ()) Ġreturn ĊĠĠĠĠĠ Ġval Ġs : ĠString ? Ġ= Ġengine . readLine From Engine ( timeout ) ĊĠĠĠĠĠ Ġif Ġ( s Ġ== Ġnull Ġ|| Ġjava . lang . Thread . currentThread (). is Inter rupted ()) Ġreturn ĊĠĠĠĠĠ Ġif Ġ( s . length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" SS to ck fish ", Ġs ) ĊĠĠĠĠĠĠĠ Ġreact Context ĊĠĠĠĠĠĠĠĠĠ Ġ. get JS Module ( Device Event Manager Module . RCT Device EventEmitter :: class . java ) ĊĠĠĠĠĠĠĠĠĠ Ġ. emit (" engine _ data ", Ġs ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( java . lang . Thread . currentThread (). is Inter rupted ()) Ġreturn ĊĠĠĠĠĠ Ġ// Ġnotify GUI (); ĊĠĠĠĠĠ Ġif Ġ( java . lang . Thread . currentThread (). is Inter rupted ()) Ġreturn ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ kotlin . jvm . Synchron ized ĊĠ Ġprivate Ġfun Ġget Read Timeout (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġ 4 0 0 ĊĠ Ġ} ĊĊĠ Ġ@ kotlin . jvm . Synchron ized ĊĠ Ġfun Ġshutdown Engine () Ġ{ ĊĠĠĠĠĠ Ġengine Monitor . interrupt () ĊĠĠĠĠĠ Ġengine . sh ut Down () ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġsend Command ( command : ĠString ?) Ġ{ ĊĠĠĠ Ġengine . write Line To Engine ( command ) ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġstop () Ġ{ ĊĠĠĠ Ġshutdown Engine () ĊĠ Ġ} Ċ Ċ } Ċ