Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
 /// <summary>
 /// 수신한 데이터를 <see cref="IMsgInfo"/>로 변환하는 <see cref="IMsgFilter"/>를 설정합니다.
 /// </summary>
 public TSocketClient SetMsgFilter(IMsgFilter fltr)
 {
     msgFilter = fltr ?? throw new ArgumentNullException(nameof(fltr));
     return(this as TSocketClient);
 }