package Ġcom . github . nik it av bv . servic emon itor . agent Ċ Ċ import Ġkotlinx . c interop . Byte Var Ċ import Ġkotlinx . c interop . alloc Array Ċ import Ġkotlinx . c interop . convert Ċ import Ġkotlinx . c interop . mem Scoped Ċ import Ġkotlinx . c interop . to K String Ċ import Ġplatform . posix . SEEK _ END Ċ import Ġplatform . posix . exit Ċ import Ġplatform . posix . fopen Ċ import Ġplatform . posix . f read Ċ import Ġplatform . posix . f seek Ċ import Ġplatform . posix . ft ell Ċ import Ġplatform . posix . per ror Ċ import Ġplatform . posix . rewind Ċ Ċ const Ġval ĠCONFIG _ FILE _ NAME Ġ= Ġ"/ sm / config . json " Ċ Ċ late init Ġvar Ġconfig : ĠAgent Config Ċ Ċ fun Ġcheck If ConfigFile Exists () Ġ= Ġfile Exists ( CONFIG _ FILE _ NAME ) Ċ Ċ @ Experimental Unsigned Types Ċ fun Ġload ConfigFile () Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= Ġfopen ( CONFIG _ FILE _ NAME , Ġ" r ") ĊĠĠĠ Ġif Ġ( file Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġperror (" Cannot Ġopen Ġconfig Ġfile Ġ$ CONFIG _ FILE _ NAME ") ĊĠĠĠĠĠĠĠ Ġexit (- 1 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġf seek ( file , Ġ 0 , ĠSEEK _ END ) ĊĠĠĠ Ġval ĠfileSize Ġ= Ġft ell ( file ) ĊĠĠĠ Ġre wind ( file ) ĊĠĠĠ Ġconfig Ġ= ĠAgent Config . fromJson ( mem Scoped Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġalloc Array < Byte Var >( file Size ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġf read ( buffer , Ġ 1 , ĠfileSize . convert (), Ġfile ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Size Ġ!= Ġresult . to Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperror (" File Ġread Ġerror : Ġread Ġless Ġbytes Ġthan Ġexpected Ġfrom Ġ$ STATE _ FILE _ NAME ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . to K String () ĊĠĠĠ Ġ}) Ċ } Ċ