Exemple #1
0
    public override NetIncomingMessage ReadMessage()
    {
        if (!connected)
        {
            return(null);
        }
        if (messages.Count() > 0)
        {
            return(messages.Dequeue());
        }
        if (connected2)
        {
            while (tosend.Count() > 0)
            {
                INetOutgoingMessage msg = tosend.Dequeue();
                DoSendPacket(msg);
            }
        }

        EnetEventRef event_ = new EnetEventRef();

        if (platform.EnetHostService(host, 0, event_))
        {
            do
            {
                switch (event_.e.Type())
                {
                case EnetEventType.Connect:
                    connected2 = true;
                    break;

                case EnetEventType.Receive:
                    byte[] data       = event_.e.Packet().GetBytes();
                    int    dataLength = event_.e.Packet().GetBytesCount();
                    event_.e.Packet().Dispose();
                    NetIncomingMessage msg = new NetIncomingMessage();
                    msg.message       = data;
                    msg.messageLength = dataLength;
                    messages.Enqueue(msg);
                    break;
                }
            }while (platform.EnetHostCheckEvents(host, event_));
        }
        if (messages.Count() > 0)
        {
            return(messages.Dequeue());
        }
        return(null);
    }
    public override NetIncomingMessage ReadMessage()
    {
        if (!connected)
        {
            return null;
        }
        if (messages.Count() > 0)
        {
            return messages.Dequeue();
        }
        if (connected2)
        {
            while (tosend.Count() > 0)
            {
                INetOutgoingMessage msg = tosend.Dequeue();
                DoSendPacket(msg);
            }
        }

        EnetEventRef event_ = new EnetEventRef();
        if (platform.EnetHostService(host, 0, event_))
        {
            do
            {
                switch (event_.e.Type())
                {
                    case EnetEventType.Connect:
                        connected2 = true;
                        break;
                    case EnetEventType.Receive:
                        byte[] data = event_.e.Packet().GetBytes();
                        int dataLength = event_.e.Packet().GetBytesCount();
                        event_.e.Packet().Dispose();
                        NetIncomingMessage msg = new NetIncomingMessage();
                        msg.message = data;
                        msg.messageLength = dataLength;
                        messages.Enqueue(msg);
                        break;
                }
            }
            while (platform.EnetHostCheckEvents(host, event_));
        }
        if (messages.Count() > 0)
        {
            return messages.Dequeue();
        }
        return null;
    }
Exemple #3
0
 public abstract bool EnetHostCheckEvents(EnetHost host, EnetEventRef event_);
Exemple #4
0
 public abstract bool EnetHostService(EnetHost host, int timeout, EnetEventRef enetEvent);
 public abstract bool EnetHostService(EnetHost host, int timeout, EnetEventRef enetEvent);
 public abstract bool EnetHostCheckEvents(EnetHost host, EnetEventRef event_);
 public EnetNetServer()
 {
     event_ = new EnetEventRef();
     messages = new QueueNetIncomingMessage();
 }
 public override bool EnetHostService(EnetHost host, int timeout, EnetEventRef enetEvent)
 {
     EnetHostNative host_ = (EnetHostNative)host;
     ENet.Event e;
     bool ret = host_.host.Service(timeout, out e);
     EnetEventNative ee = new EnetEventNative();
     ee.e = e;
     enetEvent.e = ee;
     return ret;
 }
 public override bool EnetHostCheckEvents(EnetHost host, EnetEventRef event_)
 {
     EnetHostNative host_ = (EnetHostNative)host;
     ENet.Event e;
     bool ret = host_.host.CheckEvents(out e);
     EnetEventNative ee = new EnetEventNative();
     ee.e = e;
     event_.e = ee;
     return ret;
 }
Exemple #10
0
 public EnetNetServer()
 {
     event_   = new EnetEventRef();
     messages = new QueueNetIncomingMessage();
 }