public virtual void await() { /* close session thread */ threads.await(); /* close HTTP provider */ ThreadShutdownHook hook = shutdownHookReference.Value; if (hook != null) { hook.onShutdown(); } else { // In case of iOS client, no ThreadShutdownHook is provided log.Info("No HTTP Shutdown Hook provided"); } /* close WebSocket provider */ ThreadShutdownHook wsHook = wsShutdownHookReference.Value; if (wsHook != null) { wsHook.onShutdown(); } else { log.Info("No WebSocket Shutdown Hook provided"); } }
public virtual void registerWebSocketShutdownHook(ThreadShutdownHook shutdownHook) { // This allows to register the passed hook only once and therefore to have only one reference wsShutdownHookReference.CompareAndSet(null, shutdownHook); }