Ejemplo n.º 1
0
        public NetEventType PollReceive(out uint clientId, out int channelId, ref byte[] data, int bufferSize, out int receivedSize, out byte error)
        {
            NetworkEventType eventType = RelayTransport.Receive(out int hostId, out int connectionId, out channelId, data, bufferSize, out receivedSize, out byte err);

            clientId = new NetId((byte)hostId, (ushort)connectionId, false, 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);
        }
Ejemplo n.º 2
0
        public void DisconnectClient(uint clientId)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsHost() || netId.IsInvalid())
            {
                return;
            }
            RelayTransport.Disconnect(netId.HostId, netId.ConnectionId, out byte error);
        }
Ejemplo n.º 3
0
        public void QueueMessageForSending(uint clientId, ref byte[] dataBuffer, int dataSize, int channelId, bool skipqueue, out byte error)
        {
            NetId netId = new NetId(clientId);

            if (netId.IsHost() || netId.IsInvalid())
            {
                error = 0;
                return;
            }
            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);
            }
        }
Ejemplo n.º 4
0
        public int GetRemoteDelayTimeMS(uint clientId, int remoteTimestamp, out byte error)
        {
            NetId netId = new NetId(clientId);

            return(NetworkTransport.GetRemoteDelayTimeMS(netId.HostId, netId.ConnectionId, remoteTimestamp, out error));
        }
Ejemplo n.º 5
0
        public int GetCurrentRTT(uint clientId, out byte error)
        {
            NetId netId = new NetId(clientId);

            return(NetworkTransport.GetCurrentRTT(netId.HostId, netId.ConnectionId, out error));
        }
Ejemplo n.º 6
0
        public void SendQueue(uint clientId, out byte error)
        {
            NetId netId = new NetId(clientId);

            RelayTransport.SendQueuedMessages(netId.HostId, netId.ConnectionId, out error);
        }