Esempio n. 1
0
        protected BaseServer()
        {
            Log = Logs.Create(LogCategory.Network, GetType().Name);

            RecvClientState       = new TrafficCounter();
            RecvHandshakeRequest  = new TrafficCounter();
            RecvPacketRelay       = new TrafficCounter();
            SentTraffic           = new TrafficCounter();
            RecvDeltaChannelState = new TrafficCounter();

            var rand = new Random();

            while (_sessionId == 0)
            {
                _sessionId = unchecked ((uint)rand.Next());
            }

            _clients = new BroadcastingClientCollection <TPeer>(this);
            _relay   = new ServerRelay <TPeer>(this, _clients);

            // Before 6.4.3 this message was:
            //   `Constructing host. SessionId:{0}`
            // Changed for clarity.
            Log.Info("Created server with SessionId:{0}", _sessionId);
        }
Esempio n. 2
0
        protected BaseServer()
        {
            Log = Logs.Create(LogCategory.Network, GetType().Name);

            RecvClientState       = new TrafficCounter();
            RecvHandshakeRequest  = new TrafficCounter();
            RecvPacketRelay       = new TrafficCounter();
            SentTraffic           = new TrafficCounter();
            RecvDeltaChannelState = new TrafficCounter();

            var rand = new Random();

            while (_sessionId == 0)
            {
                _sessionId = unchecked ((uint)rand.Next());
            }

            _clients = new BroadcastingClientCollection <TPeer>(this);
            _relay   = new ServerRelay <TPeer>(this, _clients);

            serverAdmin                        = new ServerAdmin <TServer, TClient, TPeer>((TServer)this);
            _clients.OnClientJoined           += serverAdmin.InvokeOnClientJoined;
            _clients.OnClientLeft             += serverAdmin.InvokeOnClientLeft;
            _clients.OnClientEnteredRoomEvent += serverAdmin.InvokeOnClientEnteredRoom;
            _clients.OnClientExitedRoomEvent  += serverAdmin.InvokeOnClientExitedRoom;
            _relay.OnRelayingPacket           += serverAdmin.InvokeOnRelayingPacket;

            Log.Info("Created server with SessionId:{0}", _sessionId);
        }
Esempio n. 3
0
        protected BaseServer()
        {
            Log = Logs.Create(LogCategory.Network, GetType().Name);

            RecvClientState      = new TrafficCounter();
            RecvVoiceData        = new TrafficCounter();
            RecvTextData         = new TrafficCounter();
            RecvHandshakeRequest = new TrafficCounter();
            SentTraffic          = new TrafficCounter();

            _sessionId = unchecked ((uint)new Random().Next());
            Log.Debug("Session Id = {0}", _sessionId);

            _packetRouter = new PacketRouter <TPeer>(this);
            _clients      = new ClientCollection <TPeer>(this, _sessionId);

            _handshakeResponse = new PacketWriter(new byte[21]).WriteHandshakeResponse(_sessionId).Written;
        }
        /// <summary>
        /// Draw an inspector GUI for this network
        /// </summary>
        public void OnInspectorGui()
        {
#if UNITY_EDITOR
            string mode = "None";
            if (Mode == NetworkMode.Host)
            {
                mode = "Server & Client";
            }
            else if (Mode == NetworkMode.Client)
            {
                mode = "Client";
            }
            else if (Mode == NetworkMode.DedicatedServer)
            {
                mode = "Server";
            }

            EditorGUILayout.LabelField("Mode", mode);

            if (!Mode.IsServerEnabled() && !Mode.IsClientEnabled())
            {
                return;
            }

            EditorGUILayout.LabelField("Connection Status", Status.ToString());

            EditorGUILayout.LabelField("Received");
            EditorGUI.indentLevel++;
            try
            {
                if (Client != null)
                {
                    EditorGUILayout.LabelField("Client");
                    EditorGUI.indentLevel++;
                    try
                    {
                        EditorGUILayout.LabelField("Handshake Response", Client.RecvHandshakeResponse.ToString());
                        EditorGUILayout.LabelField("Handshake P2P", Client.RecvHandshakeP2P.ToString());
                        EditorGUILayout.LabelField("Client State", Client.RecvClientState.ToString());
                        EditorGUILayout.LabelField("Join/Leave Channel", Client.RecvDeltaState.ToString());
                        EditorGUILayout.LabelField("Remove Client", Client.RecvRemoveClient.ToString());
                        EditorGUILayout.LabelField("Voice Data", Client.RecvVoiceData.ToString());
                        EditorGUILayout.LabelField("Text Data", Client.RecvTextData.ToString());

                        uint totalPackets, totalBytes, totalBytesPerSecond;
                        TrafficCounter.Combine(
                            out totalPackets, out totalBytes, out totalBytesPerSecond,
                            Client.RecvHandshakeResponse,
                            Client.RecvHandshakeP2P,
                            Client.RecvClientState,
                            Client.RecvDeltaState,
                            Client.RecvRemoveClient,
                            Client.RecvVoiceData,
                            Client.RecvTextData
                            );
                        EditorGUILayout.LabelField("TOTAL", TrafficCounter.Format(totalPackets, totalBytes, totalBytesPerSecond));
                    }
                    finally
                    {
                        EditorGUI.indentLevel--;
                    }
                }

                if (Server != null)
                {
                    EditorGUILayout.LabelField("Server");
                    EditorGUI.indentLevel++;
                    try
                    {
                        EditorGUILayout.LabelField("Handshake", Server.RecvHandshakeRequest.ToString());
                        EditorGUILayout.LabelField("Client State", Server.RecvClientState.ToString());
                        EditorGUILayout.LabelField("P2P Relay", Server.RecvPacketRelay.ToString());
                        EditorGUILayout.LabelField("Delta Channel State", Server.RecvDeltaChannelState.ToString());

                        uint totalPackets, totalBytes, totalBytesPerSecond;
                        TrafficCounter.Combine(out totalPackets, out totalBytes, out totalBytesPerSecond, Server.RecvHandshakeRequest, Server.RecvClientState, Server.RecvPacketRelay, Server.RecvDeltaChannelState);
                        EditorGUILayout.LabelField("TOTAL", TrafficCounter.Format(totalPackets, totalBytes, totalBytesPerSecond));
                    }
                    finally
                    {
                        EditorGUI.indentLevel--;
                    }
                }
            }
            finally
            {
                EditorGUI.indentLevel--;
            }

            EditorGUILayout.LabelField("Sent");
            EditorGUI.indentLevel++;
            try
            {
                if (Server != null)
                {
                    EditorGUILayout.LabelField("Server To Client", Server.SentTraffic.ToString());
                }
                if (Client != null)
                {
                    EditorGUILayout.LabelField("Client To Server", Client.SentServerTraffic.ToString());
                }
            }
            finally
            {
                EditorGUI.indentLevel--;
            }
#endif
        }
Esempio n. 5
0
 protected BaseClient(ICommsNetworkState network)
     : this(network.PlayerName, network.Rooms, network.PlayerChannels, network.RoomChannels)
 {
     SentTraffic = new TrafficCounter();
 }