protected override IoSession NewSession(IoProcessor <SocketSession> processor, System.Net.Sockets.Socket socket)
        {
            EndPoint localEP  = socket.LocalEndPoint;
            EndPoint remoteEP = socket.RemoteEndPoint;

            return(new AsyncSocketSession(this, processor, socket, localEP, remoteEP, ReuseBuffer));
        }
示例#2
0
 /// <summary>
 /// Instantiates.
 /// </summary>
 /// <param name="service">the service this session belongs to</param>
 /// <param name="processor">the processor to process this session</param>
 /// <param name="socket">the associated socket</param>
 /// <param name="readBuffer">the <see cref="SocketAsyncEventArgsBuffer"/> as reading buffer</param>
 /// <param name="writeBuffer">the <see cref="SocketAsyncEventArgsBuffer"/> as writing buffer</param>
 /// <param name="reuseBuffer">whether or not reuse internal buffer, see <seealso cref="SocketSession.ReuseBuffer"/> for more</param>
 public AsyncSocketSession(IoService service, IoProcessor <SocketSession> processor, System.Net.Sockets.Socket socket,
                           SocketAsyncEventArgsBuffer readBuffer, SocketAsyncEventArgsBuffer writeBuffer, Boolean reuseBuffer)
     : base(service, processor, new SessionConfigImpl(socket), socket, socket.LocalEndPoint, socket.RemoteEndPoint, reuseBuffer)
 {
     _readBuffer = readBuffer;
     _readBuffer.SocketAsyncEventArgs.UserToken = this;
     _writeBuffer = writeBuffer;
     _writeBuffer.SocketAsyncEventArgs.UserToken = this;
     _completeHandler = saea_Completed;
 }
示例#3
0
 /// <summary>
 /// Instantiates.
 /// </summary>
 /// <param name="service">the service this session belongs to</param>
 /// <param name="processor">the processor to process this session</param>
 /// <param name="socket">the associated socket</param>
 /// <param name="readBuffer">the <see cref="SocketAsyncEventArgsBuffer"/> as reading buffer</param>
 /// <param name="writeBuffer">the <see cref="SocketAsyncEventArgsBuffer"/> as writing buffer</param>
 /// <param name="reuseBuffer">whether or not reuse internal buffer, see <seealso cref="SocketSession.ReuseBuffer"/> for more</param>
 public AsyncSocketSession(IoService service, IoProcessor<SocketSession> processor, System.Net.Sockets.Socket socket,
     SocketAsyncEventArgsBuffer readBuffer, SocketAsyncEventArgsBuffer writeBuffer, Boolean reuseBuffer)
     : base(service, processor, new SessionConfigImpl(socket), socket, socket.LocalEndPoint, socket.RemoteEndPoint, reuseBuffer)
 {
     _readBuffer = readBuffer;
     _readBuffer.SocketAsyncEventArgs.UserToken = this;
     _writeBuffer = writeBuffer;
     _writeBuffer.SocketAsyncEventArgs.UserToken = this;
     _completeHandler = saea_Completed;
 }
示例#4
0
        /// <summary>
        /// </summary>
        public DummySession()
            : base(new DummyService(new DummyConfig()))
        {
            _processor   = new DummyProcessor();
            _filterChain = new DefaultIoFilterChain(this);

            IoSessionDataStructureFactory factory = new DefaultIoSessionDataStructureFactory();

            AttributeMap = factory.GetAttributeMap(this);
            SetWriteRequestQueue(factory.GetWriteRequestQueue(this));
        }
示例#5
0
 protected SocketSession(IoService service, IoProcessor processor, IoSessionConfig config,
     System.Net.Sockets.Socket socket, EndPoint localEP, EndPoint remoteEP, Boolean reuseBuffer)
     : base(service)
 {
     _socket = socket;
     _localEP = localEP;
     _remoteEP = remoteEP;
     Config = config;
     if (service.SessionConfig != null)
         Config.SetAll(service.SessionConfig);
     _processor = processor;
     _filterChain = new DefaultIoFilterChain(this);
 }
示例#6
0
        public SerialSession(SerialConnector service, SerialEndPoint endpoint, SerialPort serialPort)
            : base(service)
        {
            _processor = service;
            base.Config = new SessionConfigImpl(serialPort);
            if (service.SessionConfig != null)
                Config.SetAll(service.SessionConfig);
            _filterChain = new DefaultIoFilterChain(this);
            _serialPort = serialPort;
            _endpoint = endpoint;

            _serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
        }
示例#7
0
        public SerialSession(SerialConnector service, SerialEndPoint endpoint, SerialPort serialPort)
            : base(service)
        {
            _processor  = service;
            base.Config = new SessionConfigImpl(serialPort);
            if (service.SessionConfig != null)
            {
                Config.SetAll(service.SessionConfig);
            }
            _filterChain = new DefaultIoFilterChain(this);
            _serialPort  = serialPort;
            _endpoint    = endpoint;

            _serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
        }
示例#8
0
 /// <summary>
 /// </summary>
 protected SocketSession(IoService service, IoProcessor processor, IoSessionConfig config,
                         System.Net.Sockets.Socket socket, EndPoint localEP, EndPoint remoteEP, Boolean reuseBuffer)
     : base(service)
 {
     _socket   = socket;
     _localEP  = localEP;
     _remoteEP = remoteEP;
     Config    = config;
     if (service.SessionConfig != null)
     {
         Config.SetAll(service.SessionConfig);
     }
     _processor   = processor;
     _filterChain = new DefaultIoFilterChain(this);
 }
示例#9
0
        /// <inheritdoc/>
        protected override IoSession NewSession(IoProcessor <SocketSession> processor, System.Net.Sockets.Socket socket)
        {
            SocketAsyncEventArgsBuffer readBuffer  = _readWritePool.Pop();
            SocketAsyncEventArgsBuffer writeBuffer = _readWritePool.Pop();

            if (readBuffer == null)
            {
                readBuffer = (SocketAsyncEventArgsBuffer)
                             SocketAsyncEventArgsBufferAllocator.Instance.Allocate(SessionConfig.ReadBufferSize);
                readBuffer.SocketAsyncEventArgs.Completed += readWriteEventArg_Completed;
            }

            if (writeBuffer == null)
            {
                writeBuffer = (SocketAsyncEventArgsBuffer)
                              SocketAsyncEventArgsBufferAllocator.Instance.Allocate(SessionConfig.ReadBufferSize);
                writeBuffer.SocketAsyncEventArgs.Completed += readWriteEventArg_Completed;
            }

            return(new AsyncSocketSession(this, processor, socket, readBuffer, writeBuffer, ReuseBuffer));
        }
 internal AsyncDatagramSession(IoService service, IoProcessor<AsyncDatagramSession> processor,
     AsyncDatagramAcceptor.SocketContext ctx, EndPoint remoteEP, Boolean reuseBuffer)
     : base(service, processor, new DefaultDatagramSessionConfig(), ctx.Socket, ctx.Socket.LocalEndPoint, remoteEP, reuseBuffer)
 {
     _socketContext = ctx;
 }
示例#11
0
 /// <summary>
 /// </summary>
 public LoopbackFilterChain(AbstractIoSession session)
     : base(session)
 {
     _processor = new LoopbackIoProcessor(this);
 }
 protected abstract IoSession NewSession(IoProcessor<SocketSession> processor, System.Net.Sockets.Socket socket);
示例#13
0
 /// <inheritdoc/>
 protected abstract IoSession NewSession(IoProcessor <SocketSession> processor, System.Net.Sockets.Socket socket);
 protected override IoSession NewSession(IoProcessor<SocketSession> processor, System.Net.Sockets.Socket socket)
 {
     return new AsyncSocketSession(this, processor, socket, ReuseBuffer);
 }
示例#15
0
 public AsyncSocketSession(IoService service, IoProcessor <SocketSession> processor,
                           System.Net.Sockets.Socket socket, EndPoint localEP, EndPoint remoteEP, Boolean reuseBuffer)
     : base(service, processor, new SessionConfigImpl(socket), socket, localEP, remoteEP, reuseBuffer)
 {
     _readBuffer = new Byte[service.SessionConfig.ReadBufferSize];
 }
示例#16
0
 public AsyncSocketSession(IoService service, IoProcessor<SocketSession> processor,
     System.Net.Sockets.Socket socket, Boolean reuseBuffer)
     : base(service, processor, new SessionConfigImpl(socket), socket, socket.LocalEndPoint, socket.RemoteEndPoint, reuseBuffer)
 {
     _readBuffer = new Byte[service.SessionConfig.ReadBufferSize];
 }
 protected override IoSession NewSession(IoProcessor <SocketSession> processor, System.Net.Sockets.Socket socket)
 {
     return(new AsyncSocketSession(this, processor, socket, ReuseBuffer));
 }
示例#18
0
        /// <inheritdoc/>
        protected override IoSession NewSession(IoProcessor<SocketSession> processor, System.Net.Sockets.Socket socket)
        {
            SocketAsyncEventArgsBuffer readBuffer = _readWritePool.Pop();
            SocketAsyncEventArgsBuffer writeBuffer = _readWritePool.Pop();

            if (readBuffer == null)
            {
                readBuffer = (SocketAsyncEventArgsBuffer)
                    SocketAsyncEventArgsBufferAllocator.Instance.Allocate(SessionConfig.ReadBufferSize);
                readBuffer.SocketAsyncEventArgs.Completed += readWriteEventArg_Completed;
            }

            if (writeBuffer == null)
            {
                writeBuffer = (SocketAsyncEventArgsBuffer)
                    SocketAsyncEventArgsBufferAllocator.Instance.Allocate(SessionConfig.ReadBufferSize);
                writeBuffer.SocketAsyncEventArgs.Completed += readWriteEventArg_Completed;
            }

            return new AsyncSocketSession(this, processor, socket, readBuffer, writeBuffer, ReuseBuffer);
        }
示例#19
0
 /// <summary>
 /// Creates a new acceptor-side session instance.
 /// </summary>
 internal AsyncDatagramSession(IoService service, IoProcessor <AsyncDatagramSession> processor,
                               AsyncDatagramAcceptor.SocketContext ctx, EndPoint remoteEP, Boolean reuseBuffer)
     : base(service, processor, new DefaultDatagramSessionConfig(), ctx.Socket, ctx.Socket.LocalEndPoint, remoteEP, reuseBuffer)
 {
     _socketContext = ctx;
 }