Пример #1
0
 protected virtual void OnPeersUpdated(PeerListMessage peers)
 {
     if (LogFilter.logDev)
     {
         Debug.Log("NetworkMigrationManager NumPeers " + peers.peers.Length);
     }
 }
 /// <summary>
 ///   <para>A virtual function that is called when the set of peers in the game changes.</para>
 /// </summary>
 /// <param name="peers">The set of peers in the game.</param>
 protected virtual void OnPeersUpdated(PeerListMessage peers)
 {
     if (!LogFilter.logDev)
     {
         return;
     }
     Debug.Log((object)("NetworkMigrationManager NumPeers " + (object)peers.peers.Length));
 }
Пример #3
0
        public void Test()
        {
            InvitationRequest request = new InvitationRequest(1111);

            this.TestFactory(request);

            InvitationAck ack = new InvitationAck(2222);

            this.TestFactory(ack);

            byte[]           data         = { 12, 34, 56 };
            FileDataResponse dataResponse = new FileDataResponse(data, 3333);

            this.TestFactory(dataResponse);

            FileEvent e1 = new FileEvent();

            e1.Name = "1234";
            List <FileEvent> lf = new List <FileEvent>();

            lf.Add(e1);
            PatchRequest patchRequest = new PatchRequest(lf, 4444);

            this.TestFactory(patchRequest);

            PeerList peerList = PeerList.GetPeerList("abc");

            peerList.AddPeer(new Peer("127.0.0.1", 5555));
            PeerListMessage pm = new PeerListMessage(peerList, 6666);

            this.TestFactory(pm);

            SyncAck syncAck = new SyncAck(7777);

            this.TestFactory(syncAck);

            SyncRequest syncRequest = new SyncRequest(8888);

            this.TestFactory(syncRequest);

            File.WriteAllText(".Distribox/VersionList.txt", "[]");
            VersionList        vl = new VersionList();
            VersionListMessage vm = new VersionListMessage(vl, 9999);

            this.TestFactory(vm);
        }
Пример #4
0
        public void SendPeerInfo()
        {
            if (!m_HostMigration)
            {
                return;
            }
            PeerListMessage        peerListMessage = new PeerListMessage();
            List <PeerInfoMessage> list            = new List <PeerInfoMessage>();
            PeerInfoPlayer         item            = default(PeerInfoPlayer);
            PeerInfoPlayer         item2           = default(PeerInfoPlayer);

            for (int i = 0; i < NetworkServer.connections.Count; i++)
            {
                NetworkConnection networkConnection = NetworkServer.connections[i];
                if (networkConnection == null)
                {
                    continue;
                }
                PeerInfoMessage peerInfoMessage = new PeerInfoMessage();
                NetworkTransport.GetConnectionInfo(NetworkServer.serverHostId, networkConnection.connectionId, out string address, out int port, out NetworkID _, out NodeID _, out byte _);
                peerInfoMessage.connectionId = networkConnection.connectionId;
                peerInfoMessage.port         = port;
                if (i == 0)
                {
                    peerInfoMessage.port    = NetworkServer.listenPort;
                    peerInfoMessage.isHost  = true;
                    peerInfoMessage.address = "<host>";
                }
                else
                {
                    peerInfoMessage.address = address;
                    peerInfoMessage.isHost  = false;
                }
                List <PeerInfoPlayer> list2 = new List <PeerInfoPlayer>();
                for (int j = 0; j < networkConnection.playerControllers.Count; j++)
                {
                    PlayerController playerController = networkConnection.playerControllers[j];
                    if (playerController != null && playerController.unetView != null)
                    {
                        item.netId = playerController.unetView.netId;
                        item.playerControllerId = playerController.unetView.playerControllerId;
                        list2.Add(item);
                    }
                }
                if (networkConnection.clientOwnedObjects != null)
                {
                    foreach (NetworkInstanceId clientOwnedObject in networkConnection.clientOwnedObjects)
                    {
                        GameObject gameObject = NetworkServer.FindLocalObject(clientOwnedObject);
                        if (!(gameObject == null))
                        {
                            NetworkIdentity component = gameObject.GetComponent <NetworkIdentity>();
                            if (component.playerControllerId == -1)
                            {
                                item2.netId = clientOwnedObject;
                                item2.playerControllerId = -1;
                                list2.Add(item2);
                            }
                        }
                    }
                }
                if (list2.Count > 0)
                {
                    peerInfoMessage.playerIds = list2.ToArray();
                }
                list.Add(peerInfoMessage);
            }
            peerListMessage.peers = list.ToArray();
            for (int k = 0; k < NetworkServer.connections.Count; k++)
            {
                NetworkConnection networkConnection2 = NetworkServer.connections[k];
                if (networkConnection2 != null)
                {
                    peerListMessage.oldServerConnectionId = networkConnection2.connectionId;
                    networkConnection2.Send(11, peerListMessage);
                }
            }
        }
Пример #5
0
        public void SendPeerInfo()
        {
            if (!m_HostMigration)
            {
                return;
            }

            var listMsg   = new PeerListMessage();
            var addresses = new List <PeerInfoMessage>();

            for (int i = 0; i < NetworkServer.connections.Count; i++)
            {
                var conn = NetworkServer.connections[i];
                if (conn != null)
                {
                    var peerInfo = new PeerInfoMessage();

                    string    address;
                    int       port;
                    NetworkID networkId;
                    NodeID    node;
                    byte      error2;
                    NetworkTransport.GetConnectionInfo(NetworkServer.serverHostId, conn.connectionId, out address, out port, out networkId, out node, out error2);

                    peerInfo.connectionId = conn.connectionId;
                    peerInfo.port         = port;
                    if (i == 0)
                    {
                        peerInfo.port    = NetworkServer.listenPort;
                        peerInfo.isHost  = true;
                        peerInfo.address = "<host>";
                    }
                    else
                    {
                        peerInfo.address = address;
                        peerInfo.isHost  = false;
                    }
                    var playerIds = new List <PeerInfoPlayer>();
                    foreach (var player in conn.playerControllers)
                    {
                        if (player != null && player.unetView != null)
                        {
                            PeerInfoPlayer info;
                            info.netId = player.unetView.netId;
                            info.playerControllerId = player.unetView.playerControllerId;
                            playerIds.Add(info);
                        }
                    }

                    if (conn.clientOwnedObjects != null)
                    {
                        foreach (var netId in conn.clientOwnedObjects)
                        {
                            var obj = NetworkServer.FindLocalObject(netId);
                            if (obj == null)
                            {
                                continue;
                            }

                            var objUV = obj.GetComponent <NetworkIdentity>();
                            if (objUV.playerControllerId != -1)
                            {
                                // already added players
                                continue;
                            }

                            PeerInfoPlayer info;
                            info.netId = netId;
                            info.playerControllerId = -1;
                            playerIds.Add(info);
                        }
                    }
                    if (playerIds.Count > 0)
                    {
                        peerInfo.playerIds = playerIds.ToArray();
                    }
                    addresses.Add(peerInfo);
                }
            }

            listMsg.peers = addresses.ToArray();

            // (re)send all peers to all peers (including the new one)
            for (int i = 0; i < NetworkServer.connections.Count; i++)
            {
                var conn = NetworkServer.connections[i];
                if (conn != null)
                {
                    listMsg.oldServerConnectionId = conn.connectionId;
                    conn.Send(MsgType.NetworkInfo, listMsg);
                }
            }
        }
        /// <summary>
        ///   <para>This sends the set of peers in the game to all the peers in the game.</para>
        /// </summary>
        public void SendPeerInfo()
        {
            if (!this.m_HostMigration)
            {
                return;
            }
            PeerListMessage        peerListMessage     = new PeerListMessage();
            List <PeerInfoMessage> peerInfoMessageList = new List <PeerInfoMessage>();

            for (int index = 0; index < NetworkServer.connections.Count; ++index)
            {
                NetworkConnection connection = NetworkServer.connections[index];
                if (connection != null)
                {
                    PeerInfoMessage peerInfoMessage = new PeerInfoMessage();
                    string          address;
                    int             port;
                    NetworkID       network;
                    NodeID          dstNode;
                    byte            error;
                    NetworkTransport.GetConnectionInfo(NetworkServer.serverHostId, connection.connectionId, out address, out port, out network, out dstNode, out error);
                    peerInfoMessage.connectionId = connection.connectionId;
                    peerInfoMessage.port         = port;
                    if (index == 0)
                    {
                        peerInfoMessage.port    = NetworkServer.listenPort;
                        peerInfoMessage.isHost  = true;
                        peerInfoMessage.address = "<host>";
                    }
                    else
                    {
                        peerInfoMessage.address = address;
                        peerInfoMessage.isHost  = false;
                    }
                    List <PeerInfoPlayer> peerInfoPlayerList = new List <PeerInfoPlayer>();
                    using (List <PlayerController> .Enumerator enumerator = connection.playerControllers.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            PlayerController current = enumerator.Current;
                            if (current != null && (Object)current.unetView != (Object)null)
                            {
                                PeerInfoPlayer peerInfoPlayer;
                                peerInfoPlayer.netId = current.unetView.netId;
                                peerInfoPlayer.playerControllerId = current.unetView.playerControllerId;
                                peerInfoPlayerList.Add(peerInfoPlayer);
                            }
                        }
                    }
                    if (connection.clientOwnedObjects != null)
                    {
                        using (HashSet <NetworkInstanceId> .Enumerator enumerator = connection.clientOwnedObjects.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                NetworkInstanceId current     = enumerator.Current;
                                GameObject        localObject = NetworkServer.FindLocalObject(current);
                                if (!((Object)localObject == (Object)null) && (int)localObject.GetComponent <NetworkIdentity>().playerControllerId == -1)
                                {
                                    PeerInfoPlayer peerInfoPlayer;
                                    peerInfoPlayer.netId = current;
                                    peerInfoPlayer.playerControllerId = (short)-1;
                                    peerInfoPlayerList.Add(peerInfoPlayer);
                                }
                            }
                        }
                    }
                    if (peerInfoPlayerList.Count > 0)
                    {
                        peerInfoMessage.playerIds = peerInfoPlayerList.ToArray();
                    }
                    peerInfoMessageList.Add(peerInfoMessage);
                }
            }
            peerListMessage.peers = peerInfoMessageList.ToArray();
            for (int index = 0; index < NetworkServer.connections.Count; ++index)
            {
                NetworkConnection connection = NetworkServer.connections[index];
                if (connection != null)
                {
                    peerListMessage.oldServerConnectionId = connection.connectionId;
                    connection.Send((short)11, (MessageBase)peerListMessage);
                }
            }
        }
Пример #7
0
 protected override void OnPeersUpdated(PeerListMessage peers)
 {
     base.OnPeersUpdated(peers);
 }
 /// <summary>
 /// <para>This sends the set of peers in the game to all the peers in the game.</para>
 /// </summary>
 public void SendPeerInfo()
 {
     if (this.m_HostMigration)
     {
         PeerListMessage        msg  = new PeerListMessage();
         List <PeerInfoMessage> list = new List <PeerInfoMessage>();
         for (int i = 0; i < NetworkServer.connections.Count; i++)
         {
             NetworkConnection connection = NetworkServer.connections[i];
             if (connection != null)
             {
                 string          str;
                 int             num2;
                 NetworkID       kid;
                 NodeID          eid;
                 byte            num3;
                 PeerInfoMessage item = new PeerInfoMessage();
                 NetworkTransport.GetConnectionInfo(NetworkServer.serverHostId, connection.connectionId, out str, out num2, out kid, out eid, out num3);
                 item.connectionId = connection.connectionId;
                 item.port         = num2;
                 if (i == 0)
                 {
                     item.port    = NetworkServer.listenPort;
                     item.isHost  = true;
                     item.address = "<host>";
                 }
                 else
                 {
                     item.address = str;
                     item.isHost  = false;
                 }
                 List <PeerInfoPlayer> list2 = new List <PeerInfoPlayer>();
                 for (int k = 0; k < connection.playerControllers.Count; k++)
                 {
                     PlayerController controller = connection.playerControllers[k];
                     if ((controller != null) && (controller.unetView != null))
                     {
                         PeerInfoPlayer player;
                         player.netId = controller.unetView.netId;
                         player.playerControllerId = controller.unetView.playerControllerId;
                         list2.Add(player);
                     }
                 }
                 if (connection.clientOwnedObjects != null)
                 {
                     foreach (NetworkInstanceId id in connection.clientOwnedObjects)
                     {
                         GameObject obj2 = NetworkServer.FindLocalObject(id);
                         if ((obj2 != null) && (obj2.GetComponent <NetworkIdentity>().playerControllerId == -1))
                         {
                             PeerInfoPlayer player2;
                             player2.netId = id;
                             player2.playerControllerId = -1;
                             list2.Add(player2);
                         }
                     }
                 }
                 if (list2.Count > 0)
                 {
                     item.playerIds = list2.ToArray();
                 }
                 list.Add(item);
             }
         }
         msg.peers = list.ToArray();
         for (int j = 0; j < NetworkServer.connections.Count; j++)
         {
             NetworkConnection connection2 = NetworkServer.connections[j];
             if (connection2 != null)
             {
                 msg.oldServerConnectionId = connection2.connectionId;
                 connection2.Send(11, msg);
             }
         }
     }
 }
Пример #9
0
// called on both host and client when the set of peers is updated
    protected override void OnPeersUpdated(
        PeerListMessage peers)
    {
        Debug.Log("###### OnPeersUpdated");
        base.OnPeersUpdated(peers);
    }