package Ġmatter link . api Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . stream . Json Reader Ċ Ċ import Ġjava . io .* Ċ import Ġjava . util . Scanner Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġn ik ky Ġon Ġ 0 7 / 0 5 / 1 8 . Ċ Ġ* Ċ Ġ* Ġ@ author ĠNik ky Ċ Ġ* Ġ@ version Ġ 1 . 0 Ċ Ġ*/ Ċ object ĠMain Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmain ( var arg Ġargs : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠMessage Handler () ĊĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= Ġhandler . queue ĊĠĠĠĠĠĠĠ Ġval Ġconfig : ĠConfig ĊĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠJson Reader ( FileReader (" config . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= Ġgson . fromJson ( reader , ĠConfig :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . config Ġ= Ġconfig ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile Writer (" config . json "). use Ġ{ Ġwriter Ġ-> Ġgson . toJson ( handler . config , Ġwriter ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġhandler . logger Ġ= Ġ{ Ġlevel , Ġmsg Ġ-> ĠSystem . out . printf ("[ % s ] Ġ% s % n ", Ġlevel , Ġmsg ) Ġ} ĊĠĠĠĠĠĠĠ Ġhandler . start (" Connecting .. ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġqueue . poll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( next ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĊĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . check Connection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĊĠĠĠĠĠĠĠ Ġval Ġsc Ġ= ĠScanner ( System .` in `) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġsc . nextLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( input ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . start (" start ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" stop " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . stop (" stop ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . transmit ( Api Message ( text Ġ= Ġinput )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ