/* Ċ Ġ* ĠÂ© Ġ 2 0 1 8 ĠMatch ĠGroup , ĠLLC . Ċ Ġ*/ Ċ Ċ package Ġcom . t inder . sc ar let . websocket . okhttp Ċ Ċ import Ġcom . t inder . sc ar let . Channel Ċ import Ġcom . t inder . sc ar let . Protocol Ċ import Ġcom . t inder . sc ar let . Protocol Specific Event Adapter Ċ import Ġcom . t inder . sc ar let . utils . Simple Protocol Close Request Factory Ċ import Ġcom . t inder . sc ar let . utils . Simple Protocol Open Request Factory Ċ import Ġcom . t inder . sc ar let . websocket . Shutdown Reason Ċ import Ġcom . t inder . sc ar let . websocket . WebSocket Event Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . WebSocket Ċ import Ġokhttp 3 . WebSocket Listener Ċ Ċ class ĠOk Http WebSocket ( ĊĠĠĠ Ġprivate Ġval Ġok HttpClient : ĠOk HttpClient , ĊĠĠĠ Ġprivate Ġval Ġrequest Factory : ĠRequest Factory Ċ ) Ġ: ĠProtocol Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Channel Factory (): ĠChannel . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk Http WebSocket Channel . Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠWebSocket Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate WebSocket ( request : ĠRequest , Ġlistener : ĠWebSocket Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient . new WebSocket ( request , Ġlistener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Open Request Factory ( channel : ĠChannel ): ĠProtocol . Open Request . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSimple Protocol Open Request Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Factory . create Open Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Close Request Factory ( channel : ĠChannel ): ĠProtocol . Close Request . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSimple Protocol Close Request Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Factory . create Close Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Event Adapter Factory (): ĠProtocol Specific Event Adapter . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWebSocket Event . Adapter . Factory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠOpen Request ( val Ġok HttpRequest : ĠRequest ) Ġ: ĠProtocol . Open Request ĊĊĠĠĠ Ġdata Ġclass ĠOpen Response ( val Ġok Http WebSocket : ĠWebSocket , Ġval Ġok HttpResponse : ĠResponse ) Ġ: ĊĠĠĠĠĠĠĠ ĠProtocol . Open Response ĊĊĠĠĠ Ġdata Ġclass ĠClose Request ( val Ġshutdown Reason : ĠShutdown Reason ) Ġ: ĠProtocol . Close Request ĊĊĠĠĠ Ġdata Ġclass ĠClose Response ( val Ġshutdown Reason : ĠShutdown Reason ) Ġ: ĠProtocol . Close Response ĊĊĠĠĠ Ġinterface ĠRequest Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Open Request (): ĠOpen Request ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Close Request (): ĠClose Request ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠSimple Request Factory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcreate Open Request Callable : Ġ() Ġ-> ĠRequest , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcreate Close Request Callable : Ġ() Ġ-> ĠShutdown Reason ĊĠĠĠ Ġ) Ġ: ĠRequest Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Open Request (): ĠOpen Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOpen Request ( create Open Request Callable ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Close Request (): ĠClose Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠClose Request ( create Close Request Callable ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ