Exemple #1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="id">唯一ID</param>
 /// <param name="receiveBuffer">接收缓冲区</param>
 /// <param name="sendBuffer">发送缓冲区</param>
 /// <param name="socket">连接的Socket</param>
 /// <param name="process"></param>
 public UserSession(int id, BytesSegment receiveBuffer, BytesSegment sendBuffer, Socket socket, IBufferProcessor process)
     : base(id, receiveBuffer, sendBuffer, process)
 {
     m_socket = socket;
     m_address = ((System.Net.IPEndPoint)(socket.RemoteEndPoint)).Address;
     Created = DateTime.UtcNow;
 }
Exemple #2
0
        public SocketToken(int id,
            Sinan.Collections.BytesSegment receiveBuffer,
            Sinan.Collections.BytesSegment sendBuffer,
            IBufferProcessor processor,
            Collections.CircularQueue<Collections.BytesSegment> sendPool = null)
        {
            m_connectID = id;
            m_sendPool = sendPool ?? new Collections.CircularQueue<Collections.BytesSegment>(64);
            m_processor = processor;
            SocketAsyncEventArgs receiver = new SocketAsyncEventArgs();
            receiver.Completed += new EventHandler<SocketAsyncEventArgs>(ReceiveCompleted);
            receiver.SetBuffer(receiveBuffer.Array, receiveBuffer.Offset, receiveBuffer.Count);

            SocketAsyncEventArgs sender = new SocketAsyncEventArgs();
            sender.Completed += new EventHandler<SocketAsyncEventArgs>(SendCompleted);
            sender.SetBuffer(sendBuffer.Array, sendBuffer.Offset, sendBuffer.Count);

            m_receiver = receiver;
            m_receiveOffset = receiver.Offset;
            m_receiveMax = receiver.Count;

            m_sender = sender;
            m_sendOffset = sender.Offset;
            m_sendMax = sender.Count;
        }
Exemple #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="id">唯一ID</param>
 /// <param name="receiveBuffer">接收缓冲区</param>
 /// <param name="sendBuffer">发送缓冲区</param>
 /// <param name="socket">连接的Socket</param>
 /// <param name="process"></param>
 public UserSession(int id, UserBuffer buffer, Socket socket, IBufferProcessor process)
     : base(id, buffer.ReceiveBuffer, buffer.SendBuffer, process, buffer.SendPool)
 {
     m_socket = socket;
     Buffer = buffer;
     m_address = ((System.Net.IPEndPoint)(socket.RemoteEndPoint)).Address;
     Created = DateTime.UtcNow;
 }
Exemple #4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="id">唯一ID</param>
 /// <param name="receiveBuffer">接收缓冲区</param>
 /// <param name="sendBuffer">发送缓冲区</param>
 /// <param name="socket">连接的Socket</param>
 /// <param name="process"></param>
 public GMToken(int id,
     Sinan.Collections.BytesSegment receiveBuffer,
     Sinan.Collections.BytesSegment sendBuffer,
     Socket socket,
     IBufferProcessor process)
     : base(id, receiveBuffer, sendBuffer, process, null)
 {
     m_socket = socket;
     m_address = ((System.Net.IPEndPoint)(socket.RemoteEndPoint)).Address;
     Created = DateTime.UtcNow;
 }
Exemple #5
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="maxClients">允许的最大连接数</param>
 /// <param name="receiveBufferSize">每个连接接收数据缓存的大小</param>
 /// <param name="sendBufferSize">每个连发送收数据缓存的大小</param>
 /// <param name="sendQueueSize">等待发送数据的最大业务包</param>
 public SessionFactory(int maxClients, int receiveBufferSize, int sendBufferSize, int sendQueueSize, IBufferProcessor commandReader)
 {
     m_receiveBufferSize = receiveBufferSize;
     m_sendBufferSize = sendBufferSize;
     m_bufferPool = new System.Collections.Concurrent.ConcurrentQueue<UserBuffer>();
     m_receivebuffer = new byte[maxClients * receiveBufferSize];
     m_sendbuffer = new byte[maxClients * sendBufferSize];
     m_process = commandReader;
     for (int i = 0; i < maxClients; i++)
     {
         var receivebuffer = new Sinan.Collections.BytesSegment(m_receivebuffer, m_receiveBufferSize * i, m_receiveBufferSize);
         var sendbuffer = new Sinan.Collections.BytesSegment(m_sendbuffer, m_sendBufferSize * i, m_sendBufferSize);
         UserBuffer helper = new UserBuffer(i, this, receivebuffer, sendbuffer, sendQueueSize);
         m_bufferPool.Enqueue(helper);
     }
 }
Exemple #6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="receiveBufferSize">每个连接接收数据缓存的大小</param>
 /// <param name="sendBufferSize">每个连发送收数据缓存的大小</param>
 /// <param name="maxWaitSend">等待发送数据的最大业务包</param>
 public SessionFactory(int receiveBufferSize, int sendBufferSize, int maxWaitSend, IBufferProcessor commandReader)
 {
     m_receiveBufferSize = receiveBufferSize;
     m_sendBufferSize = sendBufferSize;
     m_process = commandReader;
 }