示例#1
0
        /// <inheritdoc/>
        public override void SessionOpened(IoSession session)
        {
            // Set timeouts
            session.Config.WriteTimeout = _writeTimeout;
            session.Config.SetIdleTime(IdleStatus.ReaderIdle, _readTimeout);

            // Create streams
            IoSessionStream input = new IoSessionStream();
            IoSessionStream output = new IoSessionStream(session);
            session.SetAttribute(KEY_IN, input);
            session.SetAttribute(KEY_OUT, output);
            ProcessStreamIo(session, input, output);
        }
示例#2
0
        /// <inheritdoc/>
        public override void SessionClosed(IoSession session)
        {
            IoSessionStream input  = session.GetAttribute <IoSessionStream>(KEY_IN);
            IoSessionStream output = session.GetAttribute <IoSessionStream>(KEY_OUT);

            try
            {
                input.Close();
            }
            finally
            {
                output.Close();
            }
        }
示例#3
0
        /// <inheritdoc/>
        public override void SessionOpened(IoSession session)
        {
            // Set timeouts
            session.Config.WriteTimeout = _writeTimeout;
            session.Config.SetIdleTime(IdleStatus.ReaderIdle, _readTimeout);

            // Create streams
            IoSessionStream input  = new IoSessionStream();
            IoSessionStream output = new IoSessionStream(session);

            session.SetAttribute(KEY_IN, input);
            session.SetAttribute(KEY_OUT, output);
            ProcessStreamIo(session, input, output);
        }
示例#4
0
        /// <inheritdoc/>
        public override void ExceptionCaught(IoSession session, Exception cause)
        {
            IOException ioe = cause as IOException;

            if (ioe != null)
            {
                IoSessionStream input = session.GetAttribute <IoSessionStream>(KEY_IN);
                if (input != null)
                {
                    input.Exception = ioe;
                    return;
                }
            }

            if (log.IsWarnEnabled)
            {
                log.Warn("Unexpected exception.", cause);
            }
            session.Close(true);
        }
示例#5
0
        /// <inheritdoc/>
        public override void MessageReceived(IoSession session, Object message)
        {
            IoSessionStream input = session.GetAttribute <IoSessionStream>(KEY_IN);

            input.Write((IoBuffer)message);
        }