Ejemplo n.º 1
0
        public int SendMessage(string ip, int port, Buffer buffer)
        {
            var ipAddress      = IPAddress.Parse(ip);
            var remoteEndpoint = new IPEndPoint(ipAddress, port);

            return(_internalSocket.SendTo(Buffer.GetBuffer(buffer), remoteEndpoint));
        }
Ejemplo n.º 2
0
        public void GetBuffer_ReturnsAppropriatelySizedBuffer()
        {
            var       testBuffer = CreateValidBuffer();
            const int expected   = sizeof(int) + sizeof(double) + sizeof(char);
            var       actual     = Buffer.GetBuffer(testBuffer).Length;

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 3
0
        private void ListenForMessages(ISocket socket)
        {
            var callbackFired = new ManualResetEventSlim(false);
            var receiveBuffer = ASBuffer.New();

            while (!CancelToken.IsCancellationRequested)
            {
                ASBuffer.ClearBuffer(receiveBuffer);
                Tuple <int, EndPoint> result = null;
                try
                {
                    AweSock.ReceiveMessage(socket, receiveBuffer, AwesomeSockets.Domain.SocketCommunicationTypes.NonBlocking, (b, endPoint) =>
                    {
                        result = new Tuple <int, EndPoint>(b, endPoint); callbackFired.Set();
                    });
                }
                catch (ArgumentOutOfRangeException)
                { // Swallow the exception caused by AweSock's construction of an invalid endpoint
                }
                try
                {
                    callbackFired.Wait(CancelToken);
                }
                catch (OperationCanceledException)
                {
                }
                if (!CancelToken.IsCancellationRequested)
                {
                    callbackFired.Reset();
                    ASBuffer.FinalizeBuffer(receiveBuffer);
                    if (result.Item1 == 0)
                    {
                        return;
                    }

                    var length = ASBuffer.Get <short>(receiveBuffer);
                    var bytes  = new byte[length];
                    ASBuffer.BlockCopy(ASBuffer.GetBuffer(receiveBuffer), sizeof(short), bytes, 0, length);
                    MessageReceived?.Invoke(this, new MessageReceivedEventArgs()
                    {
                        Message = bytes
                    });
                }
            }
        }
Ejemplo n.º 4
0
 public int SendMessage(Buffer buffer)
 {
     return(_internalSocket.Send(Buffer.GetBuffer(buffer)));
 }
Ejemplo n.º 5
0
 public void GetBuffer_ThrowsArgumentNullException_WhenBufferIsNull()
 {
     Assert.Throws <ArgumentNullException>(() => Buffer.GetBuffer(null));
 }
Ejemplo n.º 6
0
        public void GetBuffer_ThrowsBufferFinalizedException_WhenBufferIsntFinalized()
        {
            var invalidBuffer = CreateInvalidBuffer();

            Assert.Throws <BufferFinalizedException>(() => Buffer.GetBuffer(invalidBuffer));
        }
Ejemplo n.º 7
0
 public int SendMessage(Buffer buffer)
 {
     return(InternalSocket.Send(Buffer.GetBuffer(buffer), 0, (int)Buffer.GetWrittenBytes(buffer), 0));
 }