Пример #1
0
        public NetEventType PollReceive(out uint clientId, out int channelId, ref byte[] data, int bufferSize, out int receivedSize, out byte error)
        {
            NetworkEventType eventType = NetworkTransport.Receive(out int hostId, out int connectionId, out channelId, data, bufferSize, out receivedSize, out byte err);

            clientId = new NetId((byte)hostId, (ushort)connectionId, false).GetClientId();
            NetworkError errorType = (NetworkError)err;

            if (errorType == NetworkError.Timeout)
            {
                eventType = NetworkEventType.DisconnectEvent; //In UNET. Timeouts are not disconnects. We have to translate that here.
            }
            error = 0;

            //Translate NetworkEventType to NetEventType
            switch (eventType)
            {
            case NetworkEventType.DataEvent:
                return(NetEventType.Data);

            case NetworkEventType.ConnectEvent:
                return(NetEventType.Connect);

            case NetworkEventType.DisconnectEvent:
                return(NetEventType.Disconnect);

            case NetworkEventType.Nothing:
                return(NetEventType.Nothing);

            case NetworkEventType.BroadcastEvent:
                return(NetEventType.Nothing);
            }
            return(NetEventType.Nothing);
        }
Пример #2
0
        public void DisconnectClient(uint clientId)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsServer())
            {
                return;
            }
            NetworkTransport.Disconnect(netId.HostId, netId.ConnectionId, out byte error);
        }
Пример #3
0
        public int GetRemoteDelayTimeMS(uint clientId, int remoteTimestamp, out byte error)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsServer())
            {
                netId.ConnectionId = (ushort)serverConnectionId;
                netId.HostId       = (byte)serverHostId;
            }
            return(NetworkTransport.GetRemoteDelayTimeMS(netId.HostId, netId.ConnectionId, remoteTimestamp, out error));
        }
Пример #4
0
        public int GetCurrentRTT(uint clientId, out byte error)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsServer())
            {
                netId.ConnectionId = (ushort)serverConnectionId;
                netId.HostId       = (byte)serverHostId;
            }
            return(NetworkTransport.GetCurrentRTT(netId.HostId, netId.ConnectionId, out error));
        }
Пример #5
0
        public void SendQueue(uint clientId, out byte error)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsServer())
            {
                netId.ConnectionId = (ushort)serverConnectionId;
                netId.HostId       = (byte)serverHostId;
            }
            NetworkTransport.SendQueuedMessages(netId.HostId, netId.ConnectionId, out error);
        }
Пример #6
0
        public void QueueMessageForSending(uint clientId, byte[] dataBuffer, int dataSize, int channelId, bool skipqueue, out byte error)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsServer())
            {
                netId.ConnectionId = (ushort)serverConnectionId;
                netId.HostId       = (byte)serverHostId;
            }
            if (skipqueue)
            {
                RelayTransport.Send(netId.HostId, netId.ConnectionId, channelId, dataBuffer, dataSize, out error);
            }
            else
            {
                RelayTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channelId, dataBuffer, dataSize, out error);
            }
        }