public override void Update()
        {
            if (HostID < 0)
            {
                return;
            }
            int              connectionId, channelId, dataSize, bufferSize = NetworkMessage.MaxMessageSize;
            byte             error;
            NetworkEventType evt;

            do
            {
                evt = NetworkTransport.ReceiveFromHost(HostID, out connectionId, out channelId, ReadBuffer, bufferSize, out dataSize, out error);
                switch (evt)
                {
                case NetworkEventType.Nothing: break;

                case NetworkEventType.ConnectEvent: OnNewConnection(connectionId); break;

                case NetworkEventType.DataEvent: OnRecieveData(connectionId, ReadBuffer, dataSize); break;

                case NetworkEventType.DisconnectEvent: OnDisconnect(connectionId, UNETUtility.CreateError(error)); break;

                default:
                    Debug.LogError($"Unkown network message type recieved: {evt}");
                    break;
                }
            } while (evt != NetworkEventType.Nothing && !IsDisposed);
        }
        public override void Disconnect(int connectionId)
        {
            byte error;

            NetworkTransport.Disconnect(HostID, connectionId, out error);
            UNETUtility.HandleError(error);
        }
Esempio n. 3
0
        public void Disconnect()
        {
            byte error;

            NetworkTransport.Disconnect(HostID, ConnectionID, out error);
            UNETUtility.HandleError(error);
        }
        protected override void SendImpl(int connectionId, byte[] buffer, int count, NetworkReliablity reliablity)
        {
            byte error;
            var  channelId = GetChannelID(reliablity);

            NetworkTransport.Send(HostID, connectionId, channelId, buffer, count, out error);
            UNETUtility.HandleError(error);
        }
Esempio n. 5
0
        public void SendBytes(byte[] buffer, int size, NetworkReliablity reliability = NetworkReliablity.Reliable)
        {
            byte error;
            var  channelId = NetworkInterface.GetChannelID(reliability);

            NetworkTransport.Send(HostID, ConnectionID, channelId, buffer, size, out error);
            UNETUtility.HandleError(error);
        }
        public override async Task <NetworkConnection> Connect(NetworkConnectionConfig config)
        {
            var address = ResolveAddress(config.IP);

            byte error;
            var  connectionId = NetworkTransport.Connect(HostID, address, config.Port, 0, out error);

            UNETUtility.HandleError(error);

            var connection = AddConnection(connectionId);
            await connection.ConnectTask;

            return(connection);
        }
        public async Task <INetworkConnection> Connect(string address, int port)
        {
            address = ResolveAddress(address);

            byte error;
            var  connectionId = NetworkTransport.Connect(HostID, address, port, 0, out error);

            UNETUtility.HandleError(error);

            var connection = AddConnection(connectionId);
            await connection.ConnectTask.Task;

            return(connection);
        }
        public override ConnectionStats GetConnectionStats(int connectionId)
        {
            var  stats = new ConnectionStats();
            byte error;

            stats.TotalBytesOut = NetworkTransport.GetOutgoingFullBytesCountForConnection(HostID, connectionId, out error);
            UNETUtility.HandleError(error);
            stats.CurrentRTT = NetworkTransport.GetCurrentRTT(HostID, connectionId, out error);
            UNETUtility.HandleError(error);
            stats.IncomingPacketsCount = NetworkTransport.GetIncomingPacketCount(HostID, connectionId, out error);
            UNETUtility.HandleError(error);
            stats.IncomingPacketsLost = NetworkTransport.GetIncomingPacketLossCount(HostID, connectionId, out error);
            UNETUtility.HandleError(error);
            return(stats);
        }
        void OnDisconnect(int connectionId, byte error)
        {
            UNETConnection connection;

            if (!connectionMap.TryGetValue(connectionId, out connection))
            {
                return;
            }
            var exception = UNETUtility.CreateError(error);

            if (exception == null)
            {
                connection.ConnectTask.TrySetResult(new object());
            }
            else
            {
                connection.ConnectTask.TrySetException(exception);
            }
            OnPeerDisconnected?.Invoke(connection);
            RemoveConnection(connection);
        }