Beispiel #1
0
        public override NetIncomingMessage ReadMessage()
        {
            if (messages.Count() > 0)
            {
                return(messages.Dequeue());
            }

            ENet.Event e;
            bool       ret = ((EnetHostNative)host).host.Service(0, out e);

            event_ = new EnetEventNative(e);

            if (ret)
            {
                do
                {
                    switch (event_.Type())
                    {
                    case EnetEventType.Connect:
                    {
                        EnetPeer peer = event_.Peer();
                        peer.SetUserData(clientid++);
                        EnetNetConnection senderConnectionConnect = new EnetNetConnection();
                        senderConnectionConnect.peer = event_.Peer();
                        NetIncomingMessage message = new NetIncomingMessage();
                        message.SenderConnection = senderConnectionConnect;
                        message.Type             = NetworkMessageType.Connect;
                        messages.Enqueue(message);
                    }
                    break;

                    case EnetEventType.Receive:
                    {
                        byte[] data = event_.Packet().GetBytes();
                        event_.Packet().Dispose();
                        EnetNetConnection senderConnectionReceive = new EnetNetConnection();
                        senderConnectionReceive.peer = event_.Peer();
                        NetIncomingMessage message = new NetIncomingMessage();
                        message.SenderConnection = senderConnectionReceive;
                        message.message          = data;
                        message.Type             = NetworkMessageType.Data;
                        messages.Enqueue(message);
                    }
                    break;

                    case EnetEventType.Disconnect:
                    {
                        EnetNetConnection senderConnectionDisconnect = new EnetNetConnection();
                        senderConnectionDisconnect.peer = event_.Peer();
                        NetIncomingMessage message = new NetIncomingMessage();
                        message.SenderConnection = senderConnectionDisconnect;
                        message.Type             = NetworkMessageType.Disconnect;
                        messages.Enqueue(message);
                    }
                    break;
                    }

                    ret    = ((EnetHostNative)host).host.CheckEvents(out e);
                    event_ = new EnetEventNative(e);
                }while (ret);
            }
            if (messages.Count() > 0)
            {
                return(messages.Dequeue());
            }
            return(null);
        }
    public override NetIncomingMessage ReadMessage()
    {
        if (messages.Count() > 0)
        {
            return messages.Dequeue();
        }

        if (platform.EnetHostService(host, 0, event_))
        {
            do
            {
                switch (event_.e.Type())
                {
                    case EnetEventType.Connect:
                        {
                            EnetPeer peer = event_.e.Peer();
                            peer.SetUserData(clientid++);
                            EnetNetConnection senderConnectionConnect = new EnetNetConnection();
                            senderConnectionConnect.platform = platform;
                            senderConnectionConnect.peer = event_.e.Peer();
                            NetIncomingMessage message = new NetIncomingMessage();
                            message.SenderConnection = senderConnectionConnect;
                            message.Type = NetworkMessageType.Connect;
                            messages.Enqueue(message);
                        }
                        break;
                    case EnetEventType.Receive:
                        {
                            byte[] data = event_.e.Packet().GetBytes();
                            event_.e.Packet().Dispose();
                            EnetNetConnection senderConnectionReceive = new EnetNetConnection();
                            senderConnectionReceive.platform = platform;
                            senderConnectionReceive.peer = event_.e.Peer();
                            NetIncomingMessage message = new NetIncomingMessage();
                            message.SenderConnection = senderConnectionReceive;
                            message.message = data;
                            message.Type = NetworkMessageType.Data;
                            messages.Enqueue(message);
                        }
                        break;
                    case EnetEventType.Disconnect:
                        {
                            EnetNetConnection senderConnectionDisconnect = new EnetNetConnection();
                            senderConnectionDisconnect.platform = platform;
                            senderConnectionDisconnect.peer = event_.e.Peer();
                            NetIncomingMessage message = new NetIncomingMessage();
                            message.SenderConnection = senderConnectionDisconnect;
                            message.Type = NetworkMessageType.Disconnect;
                            messages.Enqueue(message);
                        }
                        break;
                }
            }
            while (platform.EnetHostCheckEvents(host, event_));
        }
        if (messages.Count() > 0)
        {
            return messages.Dequeue();
        }
        return null;
    }
Beispiel #3
0
    public override NetIncomingMessage ReadMessage()
    {
        if (messages.Count() > 0)
        {
            return(messages.Dequeue());
        }

        if (platform.EnetHostService(host, 0, event_))
        {
            do
            {
                switch (event_.e.Type())
                {
                case EnetEventType.Connect:
                {
                    EnetPeer peer = event_.e.Peer();
                    peer.SetUserData(clientid++);
                    EnetNetConnection senderConnectionConnect = new EnetNetConnection();
                    senderConnectionConnect.platform = platform;
                    senderConnectionConnect.peer     = event_.e.Peer();
                    NetIncomingMessage message = new NetIncomingMessage();
                    message.SenderConnection = senderConnectionConnect;
                    message.Type             = NetworkMessageType.Connect;
                    messages.Enqueue(message);
                }
                break;

                case EnetEventType.Receive:
                {
                    byte[] data = event_.e.Packet().GetBytes();
                    event_.e.Packet().Dispose();
                    EnetNetConnection senderConnectionReceive = new EnetNetConnection();
                    senderConnectionReceive.platform = platform;
                    senderConnectionReceive.peer     = event_.e.Peer();
                    NetIncomingMessage message = new NetIncomingMessage();
                    message.SenderConnection = senderConnectionReceive;
                    message.message          = data;
                    message.Type             = NetworkMessageType.Data;
                    messages.Enqueue(message);
                }
                break;

                case EnetEventType.Disconnect:
                {
                    EnetNetConnection senderConnectionDisconnect = new EnetNetConnection();
                    senderConnectionDisconnect.platform = platform;
                    senderConnectionDisconnect.peer     = event_.e.Peer();
                    NetIncomingMessage message = new NetIncomingMessage();
                    message.SenderConnection = senderConnectionDisconnect;
                    message.Type             = NetworkMessageType.Disconnect;
                    messages.Enqueue(message);
                }
                break;
                }
            }while (platform.EnetHostCheckEvents(host, event_));
        }
        if (messages.Count() > 0)
        {
            return(messages.Dequeue());
        }
        return(null);
    }