import Ġkotlinx . c interop .* Ċ import Ġplatform . posix .* Ċ Ċ actual Ġfun Ġsend ( socket : ĠInt , Ġbuf : ĠC Values Ref < Byte Var > ?, Ġlen : ĠInt , Ġflags : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . send ( socket . convert (), Ġbuf , Ġlen . convert (), Ġflags ). convert () Ċ } Ċ Ċ actual Ġfun Ġrecv ( socket : ĠInt , Ġbuf : ĠC Values Ref < Byte Var > ?, Ġlen : ĠInt , Ġflags : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . recv ( socket , Ġbuf , Ġlen . convert (), Ġflags ). convert () Ċ } Ċ Ċ actual Ġfun Ġshutdown ( socket : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġshutdown ( socket , ĠSH UT _ WR ) Ċ } Ċ Ċ actual Ġfun Ġclose ( socket : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . close ( socket ) Ċ } Ċ Ċ actual Ġfun Ġmemset (__ s : ĠC Values Ref < *> ?, Ġ__ c : ĠInt , Ġ__ n : ĠU Long ): ĠC Pointer < out ĠC Point ed >? Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . memset (__ s , Ġ__ c , Ġ__ n ) Ċ } Ċ Ċ actual Ġfun Ġsend to ( ĊĠĠĠ Ġ__ fd : ĠInt , ĊĠĠĠ Ġ__ buf : ĠC Values Ref < *> ?, ĊĠĠĠ Ġ__ n : ĠU Long , ĊĠĠĠ Ġ__ flags : ĠInt , ĊĠĠĠ Ġ__ addr : ĠC Values Ref < sock addr > ?, ĊĠĠĠ Ġ__ addr _ len : ĠUInt Ċ ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . send to (__ fd , Ġ__ buf , Ġ__ n , Ġ__ flags , Ġ__ addr , Ġ__ addr _ len ) Ċ } Ċ Ċ actual Ġfun Ġrecv from ( ĊĠĠĠ Ġ__ fd : ĠInt , ĊĠĠĠ Ġ__ buf : ĠC Values Ref < *> ?, ĊĠĠĠ Ġ__ n : ĠU Long , ĊĠĠĠ Ġ__ flags : ĠInt , ĊĠĠĠ Ġ__ addr : ĠC Values Ref < sock addr > ?, ĊĠĠĠ Ġ__ addr _ len : ĠC Values Ref < UInt Var Of < UInt >> ? Ċ ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . recv from (__ fd , Ġ__ buf , Ġ__ n , Ġ__ flags , Ġ__ addr , Ġ__ addr _ len ) Ċ } Ċ Ċ actual Ġfun Ġinet _ n top ( ĊĠĠĠ Ġ__ af : ĠInt , ĊĠĠĠ Ġ__ cp : ĠC Values Ref < *> ?, ĊĠĠĠ Ġ__ buf : ĠC Values Ref < Byte Var Of < Byte >> ?, ĊĠĠĠ Ġ__ len : ĠUInt Ċ ): ĠC Pointer < Byte Var Of < Byte >> ? Ġ{ ĊĠĠĠ Ġreturn Ġplatform . linux . inet _ n top (__ af , Ġ__ cp , Ġ__ buf , Ġ__ len ) Ċ } Ċ Ċ actual Ġfun Ġinet _ pton (__ af : ĠInt , Ġ__ cp : ĠString ?, Ġ__ buf : ĠC Values Ref < *> ?): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . linux . inet _ pton (__ af , Ġ__ cp , Ġ__ buf ) Ċ } Ċ Ċ actual Ġfun ĠMem Scope . sock addr In ( sin _ family : ĠU Short , Ġsin _ port : ĠU Short ): Ġsockaddr _ in Ġ{ ĊĠĠĠ Ġval Ġsockaddr Ġ= Ġalloc < sock addr _ in >() ĊĠĠĠ Ġplatform . posix . memset ( sock addr . ptr , Ġ 0 , Ġsize Of < sock addr _ in >(). convert ()) ĊĠĠĠ Ġsockaddr . sin _ family Ġ= Ġsin _ family ĊĠĠĠ Ġsockaddr . sin _ port Ġ= Ġposix _ ht ons ( sin _ port . convert ()). convert () ĊĠĠĠ Ġreturn Ġsockaddr Ċ } Ċ Ċ actual Ġfun ĠMem Scope . getPort From Sock addr In ( sock addr : Ġsockaddr _ in ): ĠU Short Ġ{ ĊĠĠĠ Ġreturn Ġsockaddr . sin _ port Ċ } Ċ Ċ actual Ġfun Ġset sockopt (__ fd : ĠInt , Ġ__ level : ĠInt , Ġ__ opt name : ĠInt , Ġ__ opt val : ĠC Values Ref < *> ?, Ġ__ opt len : ĠUInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . set sockopt (__ fd . convert (), Ġ__ level , Ġ__ opt name , Ġ__ opt val , Ġ__ opt len . convert ()) Ċ } Ċ Ċ actual Ġfun ĠcurrentTime Millis (): ĠLong Ġ{ ĊĠĠĠ Ġmem Scoped Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġalloc < time val >() ĊĠĠĠĠĠĠĠ Ġget time of day ( tv . ptr , Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( tv . tv _ sec Ġ* Ġ 1 0 0 0 ) Ġ+ Ġ( tv . tv _ usec Ġ/ Ġ 1 0 0 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ actual Ġfun Ġbind (__ fd : ĠInt , Ġ__ addr : ĠC Values Ref < sock addr > ?, Ġ__ len : ĠUInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . bind (__ fd , Ġ__ addr , Ġ__ len ) Ċ } Ċ Ċ actual Ġfun Ġset _ non _ blocking (__ fd : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġf cnt l (__ fd , ĠF _ SET FL , ĠO _ NON BLOCK ) Ċ } Ċ Ċ actual Ġfun Ġsocket (__ domain : ĠInt , Ġ__ type : ĠInt , Ġ__ protocol : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . socket (__ domain , Ġ__ type , Ġ__ protocol ) Ċ } Ċ Ċ actual Ġfun Ġaccept (__ fd : ĠInt , Ġ__ addr : ĠC Values Ref < sock addr > ?, Ġ__ addr _ len : ĠC Values Ref < UInt Var Of < UInt >> ?): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . accept (__ fd , Ġ__ addr , Ġ__ addr _ len ) Ċ } Ċ Ċ actual Ġfun Ġlisten (__ fd : ĠInt , Ġ__ n : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġplatform . posix . listen (__ fd , Ġ__ n ) Ċ } Ċ Ċ actual Ġfun ĠMem Scope . select ( ĊĠĠĠ Ġ__ n fds : ĠInt , ĊĠĠĠ Ġ__ read fds : ĠC Values Ref < fd _ set > ?, ĊĠĠĠ Ġ__ write fds : ĠC Values Ref < fd _ set > ?, ĊĠĠĠ Ġ__ except fds : ĠC Values Ref < fd _ set > ?, ĊĠĠĠ Ġtimeout : ĠLong Ċ ): ĠInt Ġ{ ĊĠĠĠ Ġval Ġtimeout Struct Ġ= Ġalloc < time val >() ĊĠĠĠ Ġtimeout Struct . tv _ sec Ġ= Ġ 0 ĊĠĠĠ Ġtimeout Struct . tv _ usec Ġ= Ġtimeout Ġ* Ġ 1 0 0 0 ĊĠĠĠ Ġreturn Ġselect (__ n fds , Ġ__ read fds , Ġ__ write fds , Ġ__ except fds , Ġtimeout Struct . ptr ) Ċ } Ċ Ċ actual Ġfun Ġsockets Init () Ġ{} Ċ Ċ actual Ġfun Ġsockets Cleanup () Ġ{} Ċ Ċ actual Ġfun Ġget Errno (): ĠInt Ġ= Ġerrno Ċ actual Ġfun Ġget E again (): ĠInt Ġ= ĠE AG AIN Ċ actual Ġfun Ġget Ew ould block (): ĠInt Ġ= ĠE WO UL DB LOCK Ċ