Esempio n. 1
0
        public void SendAsync(byte[] bytes)
        {
            if (IsClient)
            {
                var block     = BufferPool.Pop();
                var writeArgs = SocketPool.Pop();

                // TODO: loop in case byte[] is greater than block capacity!!!
                var writeSize = (bytes.Length < block.Capacity) ? bytes.Length : block.Capacity;
                System.Buffer.BlockCopy(bytes, 0, block.Bytes, block.Offset, writeSize);
                ((MiniNet.Buffers.Buffer)block).Size = writeSize;

                writeArgs.UserToken    = block;
                writeArgs.AcceptSocket = BaseSocket;
                writeArgs.SetBuffer(block.Bytes, block.Offset, block.Size);
                writeArgs.Completed += OnSocketCompleted;

                var willRaiseEvent = BaseSocket.SendAsync(writeArgs);
                if (!willRaiseEvent)
                {
                    SendHandle(writeArgs);
                }
            }
            else
            {
                RaiseFault("Only accepted client sockets may read and write.");
            }
        }
Esempio n. 2
0
 public void AcceptAsync()
 {
     if (!IsClient)
     {
         var acceptArgs = SocketPool.Pop();
         acceptArgs.Completed += OnSocketCompleted;
         var willRaiseEvent = BaseSocket.AcceptAsync(acceptArgs);
         if (!willRaiseEvent)
         {
             AcceptHandle(acceptArgs);
         }
     }
     else
     {
         RaiseFault("Unable to create connections on a client socket.");
     }
 }
Esempio n. 3
0
        public void ReceiveAsync()
        {
            if (IsClient)
            {
                var block    = BufferPool.Pop();
                var readArgs = SocketPool.Pop();

                readArgs.UserToken    = block;
                readArgs.AcceptSocket = BaseSocket;
                readArgs.SetBuffer(block.Bytes, block.Offset, block.Capacity);
                readArgs.Completed += OnSocketCompleted;

                var willRaiseEvent = BaseSocket.ReceiveAsync(readArgs);
                if (!willRaiseEvent)
                {
                    ReceiveHandle(readArgs);
                }
            }
            else
            {
                RaiseFault("Only accepted client sockets may read and write.");
            }
        }