예제 #1
0
 protected override void Init()
 {
     _bufferPool = new ByteBufferPool();
     _servSock   = new SmartSock(_bufferPool,
                                 new ThreadSock(_bufferPool, AddressFamily.InterNetwork, new LoggerStub()), _soc);
     _servSock.Listen(2345);
 }
예제 #2
0
 public void Setup()
 {
     _cbs        = new MockSmartCallbacks();
     _bareSock   = new MockSock();
     _bufferPool = new ByteBufferPool();
     _sock       = new SmartSock(_bufferPool, _bareSock, _cbs);
 }
예제 #3
0
        private static void Connect(string addr, SmartSock sock)
        {
            sock.Connect(IPAddress.Parse(addr), 2345);

            var ep = sock.LocalEndPoint;

            Console.WriteLine("{0}:{1}", ep.Address, ep.Port);

            var packet = new ReceivedSmartPacket();

            while (sock.State == PixocketState.Connecting)
            {
                sock.Tick();
                if (sock.Receive(ref packet))
                {
                    break;
                }
            }

            var rnd   = new Random(Guid.NewGuid().GetHashCode());
            var count = 700 + rnd.Next(500);

            byte[] initMsg = CreateMessage(count);
            Console.WriteLine("Sending message with {0} numbers", count);
            sock.Send(initMsg, 0, initMsg.Length, true);
        }
예제 #4
0
        public void DeltaCommutative()
        {
            var t1 = int.MaxValue - 1;
            var t2 = 1;

            Assert.AreEqual(2, SmartSock.TimeDelta(t1, t2));
            Assert.AreEqual(2, SmartSock.TimeDelta(t2, t1));
        }
예제 #5
0
 public void Setup()
 {
     _cbs             = new MockSmartCallbacks();
     _bareSock        = new MockSock();
     _bufferPool      = new MockBufferPool();
     _smartSock       = new SmartSock(_bufferPool, _bareSock, _cbs);
     _threadSmartSock = new ThreadSmartSock(_smartSock, _bufferPool);
 }
예제 #6
0
 public void Setup()
 {
     _cbs            = new MockSmartCallbacks();
     _bareSock       = new MockSock();
     _bufferPool     = new ByteBufferPool();
     _sock           = new SmartSock(_bufferPool, _bareSock, _cbs);
     _remoteEndPoint = new IPEndPoint(IPAddress.Loopback, 23452);
 }
예제 #7
0
        static void Main(string[] args)
        {
            var callbacks  = new PrintingReceiver();
            var bufferPool = new ByteBufferPool();
            var sock       = new SmartSock(bufferPool, new BareSock(bufferPool, AddressFamily.InterNetwork, new LoggerStub()), callbacks);
            var address    = args[0];

            callbacks.Connecting = true;
            Connect(address, sock);
            var packet = new ReceivedSmartPacket();

            while (sock.State == PixocketState.Connecting)
            {
                if (sock.Receive(ref packet))
                {
                    break;
                }
                sock.Tick();
            }

            for (int i = 1; i < 11; i++)
            {
                Thread.Sleep(1000);

                var buffer = CreateMessage(i);
                sock.Send(buffer, 0, buffer.Length, false);
                sock.Tick();
                while (true)
                {
                    if (sock.Receive(ref packet))
                    {
                        callbacks.OnReceive(packet.Buffer, packet.Offset, packet.Length, packet.EndPoint, packet.InOrder);
                    }
                    else
                    {
                        break;
                    }
                }

                if (!callbacks.Connected && !callbacks.Connecting)
                {
                    callbacks.Connecting = true;
                    Connect(address, sock);
                    continue;
                }
            }

            sock.Disconnect();

            while (sock.State == PixocketState.Connected)
            {
                sock.Tick();
                sock.Receive(ref packet);
                Thread.Sleep(100);
            }
        }
예제 #8
0
        public void Setup()
        {
            _cbs        = new MockSmartCallbacks();
            _bareSock   = new MockSock();
            _bufferPool = new ByteBufferPool();
            _sock       = new SmartSock(_bufferPool, _bareSock, _cbs);
            _endPoint   = new IPEndPoint(IPAddress.Loopback, 23452);

            Utils.SendConnectRequest(_bareSock, _endPoint, _bufferPool);
        }
예제 #9
0
 public static ReceivedSmartPacket WaitOnReceive(SmartSock sock)
 {
     for (int i = 0; i < 1000; ++i)
     {
         var receivedPacket = new ReceivedSmartPacket();
         if (sock.Receive(ref receivedPacket))
         {
             return(receivedPacket);
         }
         Thread.Sleep(1);
     }
     return(new ReceivedSmartPacket());
 }
예제 #10
0
        protected override void Init()
        {
            var smartSock = new SmartSock(_bufferPool, new ThreadSock(_bufferPool, AddressFamily.InterNetwork, new LoggerStub()), _soc);

            _socket = new ThreadSafeSmartSock(smartSock);
            _socket.Connect(IPAddress.Loopback, 2345);
            var receivedPacket = new ReceivedSmartPacket();

            while (_socket.State == PixocketState.Connecting)
            {
                _socket.Tick();
                _socket.Receive(ref receivedPacket);
            }
        }
예제 #11
0
        static void Main(string[] args)
        {
            var callbacks  = new ReplServ();
            var bufferPool = new ByteBufferPool();
            var sock       = new SmartSock(bufferPool, new BareSock(bufferPool, AddressFamily.InterNetwork, new LoggerStub()), callbacks);

            callbacks.SetSocket(sock);

            sock.Listen(2345);

            while (true)
            {
                Thread.Sleep(100);

                callbacks.Tick();
            }
        }
예제 #12
0
        public static List <ReceivedSmartPacket> ReceiveAll(SmartSock sock)
        {
            var result = new List <ReceivedSmartPacket>();

            for (int i = 0; i < 1000; ++i)
            {
                var receivedPacket = new ReceivedSmartPacket();
                if (sock.Receive(ref receivedPacket))
                {
                    result.Add(receivedPacket);
                }
                else
                {
                    break;
                }
            }
            return(result);
        }
예제 #13
0
파일: Sync.cs 프로젝트: sentaniel/pixockets
        public void Connect(float x, float y)
        {
            var smartSock = new SmartSock(_bufferPool, new ThreadSock(_bufferPool, AddressFamily.InterNetwork, new LoggerStub()), this);

            _socket = new ThreadSafeSmartSock(smartSock);
            // Todo: pass address from command line
            _socket.Connect(IPAddress.Loopback, 2345);
            var receivedPacket = new ReceivedSmartPacket();

            while (_socket.State == PixocketState.Connecting)
            {
                _socket.Tick();
                _socket.Receive(ref receivedPacket);
            }

            var ms = new MemoryStream();

            ms.WriteByte(0);  // Init request packet

            byte  red   = (byte)_rnd.Next(0, byte.MaxValue + 1);
            byte  green = (byte)_rnd.Next(0, byte.MaxValue + 1);
            byte  blue  = (byte)_rnd.Next(0, byte.MaxValue + 1);
            Brush brush = new SolidColorBrush(Color.FromArgb(255, red, green, blue));

            ms.WriteByte(red);
            ms.WriteByte(green);
            ms.WriteByte(blue);

            ms.Write(BitConverter.GetBytes(x), 0, 4);
            ms.Write(BitConverter.GetBytes(y), 0, 4);

            var sendBuffer = ms.ToArray();

            _myV   = new Vertex();
            _myV.X = x;
            _myV.Y = y;
            _myV.C = brush;

            _socket.Send(sendBuffer, 0, sendBuffer.Length, true);
        }
예제 #14
0
 public void SetSocket(SmartSock socket, BufferPoolBase bufferPool)
 {
     _servSock   = socket;
     _bufferPool = bufferPool;
 }
예제 #15
0
 public void SetSocket(SmartSock socket)
 {
     _servSock = socket;
 }