Exemplo n.º 1
0
 private void EnqueueEvent(NetEvent evt)
 {
     if (UnsyncedEvents)
     {
         ProcessEvent(evt);
     }
     else
     {
         lock (_netEventsQueue)
         {
             _netEventsQueue.Enqueue(evt);
         }
     }
 }
Exemplo n.º 2
0
        private void ProcessEvent(NetEvent evt)
        {
            switch (evt.Type)
            {
            case NetEventType.Connect:
                _netEventListener.OnPeerConnected(evt.Peer);
                break;

            case NetEventType.Disconnect:
                _netEventListener.OnPeerDisconnected(evt.Peer, evt.DisconnectReason, evt.AdditionalData);
                break;

            case NetEventType.Receive:
                _netEventListener.OnNetworkReceive(evt.Peer, evt.DataReader);
                break;

            case NetEventType.ReceiveUnconnected:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.Default);
                break;

            case NetEventType.DiscoveryRequest:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryRequest);
                break;

            case NetEventType.DiscoveryResponse:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryResponse);
                break;

            case NetEventType.Error:
                _netEventListener.OnNetworkError(evt.RemoteEndPoint, evt.AdditionalData);
                break;

            case NetEventType.ConnectionLatencyUpdated:
                _netEventListener.OnNetworkLatencyUpdate(evt.Peer, evt.AdditionalData);
                break;
            }

            //Recycle
            evt.DataReader.Clear();
            evt.Peer           = null;
            evt.AdditionalData = 0;
            evt.RemoteEndPoint = null;

            lock (_netEventsPool)
            {
                _netEventsPool.Push(evt);
            }
        }
        private void CreateEvent(
            NetEvent.EType type,
            NetPeer peer = null,
            IPEndPoint remoteEndPoint = null,
            SocketError errorCode     = 0,
            int latency = 0,
            DisconnectReason disconnectReason   = DisconnectReason.ConnectionFailed,
            ConnectionRequest connectionRequest = null,
            DeliveryMethod deliveryMethod       = DeliveryMethod.Unreliable,
            NetPacket readerSource = null)
        {
            NetEvent evt = null;

            if (type == NetEvent.EType.Connect)
            {
                _connectedPeersCount++;
            }
            lock (_netEventsPool)
            {
                if (_netEventsPool.Count > 0)
                {
                    evt = _netEventsPool.Pop();
                }
            }
            if (evt == null)
            {
                evt = new NetEvent(this);
            }
            evt.Type = type;
            evt.DataReader.SetSource(readerSource);
            evt.Peer              = peer;
            evt.RemoteEndPoint    = remoteEndPoint;
            evt.Latency           = latency;
            evt.ErrorCode         = errorCode;
            evt.DisconnectReason  = disconnectReason;
            evt.ConnectionRequest = connectionRequest;
            evt.DeliveryMethod    = deliveryMethod;
            if (UnsyncedEvents)
            {
                ProcessEvent(evt);
            }
            else
            {
                lock (_netEventsQueue)
                    _netEventsQueue.Enqueue(evt);
            }
        }
Exemplo n.º 4
0
        private NetEvent CreateEvent(NetEventType type)
        {
            NetEvent evt = null;

            lock (_netEventsPool)
            {
                if (_netEventsPool.Count > 0)
                {
                    evt = _netEventsPool.Pop();
                }
            }
            if (evt == null)
            {
                evt = new NetEvent();
            }
            evt.Type = type;
            return(evt);
        }
Exemplo n.º 5
0
        protected NetEvent CreateEvent(NetEventType type)
        {
            NetEvent evt;

            if (_netEventsPool.Count > 0)
            {
                lock (_netEventsPool)
                {
                    evt = _netEventsPool.Pop();
                }
            }
            else
            {
                evt            = new NetEvent();
                evt.DataReader = new NetDataReader();
            }
            evt.Type = type;
            return(evt);
        }
Exemplo n.º 6
0
        protected NetEvent CreateEvent(NetEventType type)
        {
            NetEvent evt = null;

            lock (_netEventsPool)
            {
                if (_netEventsPool.Count > 0)
                {
                    evt = _netEventsPool.Pop();
                }
            }
            if (evt == null)
            {
                evt = new NetEvent {
                    DataReader = new NetDataReader()
                };
            }
            evt.Type = type;
            return(evt);
        }
Exemplo n.º 7
0
        private void ProcessEvent(NetEvent evt)
        {
            switch (evt.Type)
            {
            case NetEventType.Connect:
                _netEventListener.OnPeerConnected(evt.Peer);
                break;

            case NetEventType.Disconnect:
                _netEventListener.OnPeerDisconnected(evt.Peer, evt.AdditionalInfo);
                break;

            case NetEventType.Receive:
                _netEventListener.OnNetworkReceive(evt.Peer, evt.DataReader);
                break;

            case NetEventType.ReceiveUnconnected:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader);
                break;

            case NetEventType.Error:
                _netEventListener.OnNetworkError(evt.RemoteEndPoint, evt.AdditionalInfo);
                break;

            case NetEventType.ConnectionLatencyUpdated:
                _netEventListener.OnNetworkLatencyUpdate(evt.Peer, evt.Latency);
                break;
            }

            //Recycle
            evt.DataReader.Clear();
            evt.Peer           = null;
            evt.AdditionalInfo = string.Empty;
            evt.RemoteEndPoint = null;

            lock (_netEventsPool)
            {
                _netEventsPool.Push(evt);
            }
        }
Exemplo n.º 8
0
        private NetEvent CreateEvent(NetEventType type)
        {
            NetEvent evt = null;

            if (type == NetEventType.Connect)
            {
                _connectedPeersCount++;
            }
            lock (_netEventsPool)
            {
                if (_netEventsPool.Count > 0)
                {
                    evt = _netEventsPool.Pop();
                }
            }
            if (evt == null)
            {
                evt = new NetEvent();
            }
            evt.Type = type;
            return(evt);
        }
 internal NetPacketReader(NetManager manager, NetEvent evt)
 {
     _manager = manager;
     _evt     = evt;
 }
Exemplo n.º 10
0
        private void ProcessEvent(NetEvent evt)
        {
            NetUtils.DebugWrite("[NM] Processing event: " + evt.Type);
            switch (evt.Type)
            {
            case NetEventType.Connect:
                _netEventListener.OnPeerConnected(evt.Peer);
                break;

            case NetEventType.Disconnect:
                var info = new DisconnectInfo
                {
                    Reason          = evt.DisconnectReason,
                    AdditionalData  = evt.DataReader,
                    SocketErrorCode = evt.AdditionalData
                };
                _netEventListener.OnPeerDisconnected(evt.Peer, info);
                break;

            case NetEventType.Receive:
                //_netEventListener.OnNetworkReceive(evt.Peer, evt.DataReader, evt.DeliveryMethod);
                _netEventListener.OnNetworkReceiveEvt(evt);
                break;

            case NetEventType.ReceiveUnconnected:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.BasicMessage);
                break;

            case NetEventType.DiscoveryRequest:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryRequest);
                break;

            case NetEventType.DiscoveryResponse:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryResponse);
                break;

            case NetEventType.Error:
                _netEventListener.OnNetworkError(evt.RemoteEndPoint, evt.AdditionalData);
                break;

            case NetEventType.ConnectionLatencyUpdated:
                _netEventListener.OnNetworkLatencyUpdate(evt.Peer, evt.AdditionalData);
                break;

            case NetEventType.ConnectionRequest:
                _netEventListener.OnConnectionRequest(evt.ConnectionRequest);
                break;
            }

            if (evt.Type != NetEventType.Receive)
            {
                //Recycle
                evt.DataReader.Clear();
                evt.Peer              = null;
                evt.AdditionalData    = 0;
                evt.RemoteEndPoint    = null;
                evt.ConnectionRequest = null;

                lock (_netEventsPool)
                    _netEventsPool.Push(evt);
            }
        }
Exemplo n.º 11
0
        private void ProcessEvent(NetEvent evt)
        {
            switch (evt.Type)
            {
            case NetEventType.Connect:
                _netEventListener.OnPeerConnected(evt.Peer);
                break;

            case NetEventType.Disconnect:
                var info = new DisconnectInfo
                {
                    Reason          = evt.DisconnectReason,
                    AdditionalData  = evt.DataReader,
                    SocketErrorCode = evt.AdditionalData
                };
                _netEventListener.OnPeerDisconnected(evt.Peer, info);
                break;

            case NetEventType.Receive:
                // Keep backward compatibility
                if (evt.Channel == 0)
                {
                    _netEventListener.OnNetworkReceive(evt.Peer, evt.DataReader, evt.DeliveryMethod);
                }
                _netEventListener.OnNetworkReceiveFromChannel(evt.Peer, evt.DataReader, evt.DeliveryMethod, evt.Channel);
                break;

            case NetEventType.ReceiveUnconnected:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.BasicMessage);
                break;

            case NetEventType.DiscoveryRequest:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryRequest);
                break;

            case NetEventType.DiscoveryResponse:
                _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.DiscoveryResponse);
                break;

            case NetEventType.Error:
                _netEventListener.OnNetworkError(evt.RemoteEndPoint, evt.AdditionalData);
                break;

            case NetEventType.ConnectionLatencyUpdated:
                _netEventListener.OnNetworkLatencyUpdate(evt.Peer, evt.AdditionalData);
                break;

            case NetEventType.ConnectionRequest:
                _netEventListener.OnConnectionRequest(evt.ConnectionRequest);
                break;
            }

            //Recycle
            evt.DataReader.Clear();
            evt.Peer              = null;
            evt.AdditionalData    = 0;
            evt.RemoteEndPoint    = null;
            evt.ConnectionRequest = null;

            lock (_netEventsPool)
            {
                _netEventsPool.Push(evt);
            }
        }