package Ġio . ktor . network . sockets Ċ Ċ import Ġio . ktor . network . selector .* Ċ Ċ /** Ċ Ġ* ĠTCP Ġsocket Ġbuilder Ċ Ġ*/ Ċ @ Suppress (" Public Api Implicit Type ") Ċ public Ġclass ĠTcp Socket Builder ( ĊĠĠĠ Ġprivate Ġval Ġselector : ĠSelector Manager , ĊĠĠĠ Ġoverride Ġvar Ġoptions : ĠSocket Options Ċ ) Ġ: ĠConfigur able < Tcp Socket Builder , ĠSocket Options > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnect Ġto Ġ[ hostname ] Ġand Ġ[ port ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġconnect ( ĊĠĠĠĠĠĠĠ Ġhostname : ĠString , ĊĠĠĠĠĠĠĠ Ġport : ĠInt , ĊĠĠĠĠĠĠĠ Ġconfigure : ĠSocket Options . TCP Client Socket Options . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠSocket Ġ= Ġconnect ( Inet SocketAddress ( hostname , Ġport ), Ġconfigure ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBind Ġserver Ġsocket Ġat Ġ[ port ] Ġto Ġlisten Ġto Ġ[ hostname ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġbind ( ĊĠĠĠĠĠĠĠ Ġhostname : ĠString Ġ= Ġ" 0 . 0 . 0 . 0 ", ĊĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġconfigure : ĠSocket Options . Accept or Options . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠServer Socket Ġ= Ġbind ( Inet SocketAddress ( hostname , Ġport ), Ġconfigure ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnect Ġto Ġ[ remote Address ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġsuspend Ġfun Ġconnect ( ĊĠĠĠĠĠĠĠ Ġremote Address : ĠSocket Address , ĊĠĠĠĠĠĠĠ Ġconfigure : ĠSocket Options . TCP Client Socket Options . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠSocket Ġ= Ġconnect ( selector , Ġremote Address , Ġoptions . peer (). tcp (). apply ( configure )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBind Ġserver Ġsocket Ġto Ġlisten Ġto Ġ[ local Address ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġbind ( ĊĠĠĠĠĠĠĠ Ġlocal Address : ĠSocket Address ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġconfigure : ĠSocket Options . Accept or Options . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġ): ĠServer Socket Ġ= Ġbind ( selector , Ġlocal Address , Ġoptions . peer (). accept or (). apply ( configure )) Ċ } Ċ