private Action <IServerScoketEventListener, IServerSocket> GetAction(ServerSocketStateChangedState serverSocketStateChangedState) { switch (serverSocketStateChangedState) { case ServerSocketStateChangedState.Shutdown: return((listener, server) => listener.OnServerShutDown(server)); case ServerSocketStateChangedState.Started: return((listener, server) => listener.OnServerStarted(server)); default: break; } return(null); }
private void ServerStateChanged(ServerSocketStateChangedState serverSocketStateChangedState) { var excuteAction = GetAction(serverSocketStateChangedState); foreach (var listener in _serverScoketEventListeners) { try { excuteAction?.Invoke(listener, this); } catch (Exception ex) { Log <ServerSocket> .Error(ex, string.Format("Notify socket server {0} has exception, name: {1}, listenerType: {2}", serverSocketStateChangedState, ToString(), Name, listener.GetType().Name)); } } }