public SessionParameter(string ssnId, IMsgFilter msgFltr, SocketSessionStopHandler <TSession> onSt, ILogger lgr) { if (string.IsNullOrEmpty(ssnId)) { throw new ArgumentNullException(nameof(ssnId)); } sessionId = ssnId; msgFilter = msgFltr ?? throw new ArgumentNullException(nameof(msgFltr)); onStop = onSt ?? throw new ArgumentNullException(nameof(onSt)); logger = lgr ?? throw new ArgumentNullException(nameof(lgr)); }
public void Start(Socket sck) { if (sck == null) { throw new ArgumentNullException(nameof(sck)); } if (server == null) { throw new InvalidOperationException("Server not set: Please call the \"SetSocketServer\" Method and set it up."); } if (_onClose == null) { throw new InvalidOperationException("CloseHandler not set: Please call the \"SetCloseHandler\" Method and set it up."); } logger = server.service.loggerFactroy.GetLogger(GetType()) ?? throw new InvalidOperationException( "\"ISocketSession.loggerFactory\" returned null : Unable to get Logger."); _msgFilter = server.msgFilterFactory.Get() ?? throw new InvalidOperationException( "\"ISocketSession.msgFilterFactory\" returned null : Unable to get MsgFilter."); _socketProxy = CreateSocketProxy() ?? throw new InvalidOperationException("\"CreateSocketProxy\" Method returned null."); int prevState = Interlocked.CompareExchange(ref _state, (int)ISocketSession.State.Running, (int)ISocketSession.State.None); if (prevState != (int)ISocketSession.State.None) { throw new InvalidOperationException("ISocketSession state before startup is invalid."); } _socketProxy.onReceived = OnReceivedFromSocketProxy; _socketProxy.onError = OnErrorFromSocketProxy; _socketProxy.onClose = OnCloseFromSocketProxy; _socketProxy.Start(sck, server.service.loggerFactroy.GetLogger(_socketProxy.GetType())); behavior?.OnStarted(this); }
public bool AddRequestFilter(IMsgFilter requestFilter) { m_RequestFilters.Add(requestFilter); return requestFilter != null; }
/// <summary> /// 수신한 데이터를 <see cref="IMsgInfo"/>로 변환하는 <see cref="IMsgFilter"/>를 설정합니다. /// </summary> public TSocketClient SetMsgFilter(IMsgFilter fltr) { msgFilter = fltr ?? throw new ArgumentNullException(nameof(fltr)); return(this as TSocketClient); }