Exemplo n.º 1
0
        public bool Process()
        {
            UdpEvent         ev  = default(UdpEvent);
            ConnectionObject co  = null;
            pair             val = default(pair);

            if (socket.Poll(ref ev))
            {
                switch (ev.EventType)
                {
                case UdpEventType.Connected:
                    ev.Connection.UserToken = co = new ConnectionObject();
                    co.connection           = ev.Connection;
                    connections.Add(ev.Connection);

                    for (int i = 0; i < 16; ++i)
                    {
                        co.QueueNext();
                        co.Send();
                    }

                    break;

                case UdpEventType.ObjectLost:
                    val = (pair)ev.Object;
                    co  = (ConnectionObject)ev.Connection.UserToken;
                    co.Nack(val);
                    co.Send();
                    break;

                case UdpEventType.ObjectDelivered:
                    val = (pair)ev.Object;
                    co  = (ConnectionObject)ev.Connection.UserToken;
                    co.Ack(val);
                    co.QueueNext();
                    co.Send();
                    break;

                case UdpEventType.ObjectReceived:
                    val = (pair)ev.Object;
                    co  = (ConnectionObject)ev.Connection.UserToken;
                    co.Recv(val);
                    co.DequeueReceived();
                    break;

                case UdpEventType.ObjectRejected:
                    Console.WriteLine("REJECTED");
                    break;

                case UdpEventType.ObjectSendFailed:
                    Console.WriteLine("SENDFAILED");
                    break;
                }

                return(true);
            }

            return(false);
        }
Exemplo n.º 2
0
        public bool Process()
        {
            UdpEvent ev = default(UdpEvent);
            ConnectionObject co = null;
            pair val = default(pair);

            if (socket.Poll(ref ev)) {
                switch (ev.EventType) {
                    case UdpEventType.Connected:
                        ev.Connection.UserToken = co = new ConnectionObject();
                        co.connection = ev.Connection;
                        connections.Add(ev.Connection);

                        for (int i = 0; i < 16; ++i) {
                            co.QueueNext();
                            co.Send();
                        }

                        break;

                    case UdpEventType.ObjectLost:
                        val = (pair) ev.Object;
                        co = (ConnectionObject) ev.Connection.UserToken;
                        co.Nack(val);
                        co.Send();
                        break;

                    case UdpEventType.ObjectDelivered:
                        val = (pair) ev.Object;
                        co = (ConnectionObject) ev.Connection.UserToken;
                        co.Ack(val);
                        co.QueueNext();
                        co.Send();
                        break;

                    case UdpEventType.ObjectReceived:
                        val = (pair) ev.Object;
                        co = (ConnectionObject) ev.Connection.UserToken;
                        co.Recv(val);
                        co.DequeueReceived();
                        break;

                    case UdpEventType.ObjectRejected:
                        Console.WriteLine("REJECTED");
                        break;

                    case UdpEventType.ObjectSendFailed:
                        Console.WriteLine("SENDFAILED");
                        break;
                }

                return true;
            }

            return false;
        }