Ejemplo n.º 1
0
        private void OnConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t param)
        {
            ulong clientSteamID = param.m_info.m_identityRemote.GetSteamID64();

            if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connected)
            {
                Connected = true;
                OnConnected.Invoke();
                Debug.Log("Connection established.");

                if (BufferedData.Count > 0)
                {
                    Debug.Log($"{BufferedData.Count} received before connection was established. Processing now.");
                    {
                        foreach (Action a in BufferedData)
                        {
                            a();
                        }
                    }
                }
            }
            else if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ClosedByPeer || param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ProblemDetectedLocally)
            {
                Debug.Log($"Connection was closed by peer, {param.m_info.m_szEndDebug}");
                Disconnect();
            }
            else
            {
                Debug.Log($"Connection state changed: {param.m_info.m_eState.ToString()} - {param.m_info.m_szEndDebug}");
            }
        }
Ejemplo n.º 2
0
        private void OnConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t param)
        {
            ulong clientSteamID = param.m_info.m_identityRemote.GetSteamID64();

            if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connected)
            {
                Connected = true;
                OnConnected.Invoke();
                Debug.Log("Connection established.");

                if (BufferedData.Count > 0)
                {
                    Debug.Log($"{BufferedData.Count} received before connection was established. Processing now.");
                    {
                        foreach (Action a in BufferedData)
                        {
                            a();
                        }
                    }
                }
            }
            else if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ClosedByPeer)
            {
                Connected = false;
                OnDisconnected.Invoke();
                Debug.Log("Disconnected.");
                SteamNetworkingSockets.CloseConnection(param.m_hConn, 0, "Disconnected", false);
            }
            else
            {
                Debug.Log($"Connection state changed: {param.m_info.m_eState.ToString()}");
            }
        }
Ejemplo n.º 3
0
 // Token: 0x06000983 RID: 2435 RVA: 0x00045D30 File Offset: 0x00043F30
 private static void OnStatusChanged(SteamNetConnectionStatusChangedCallback_t data)
 {
     ZLog.Log("Got status changed msg " + data.m_info.m_eState);
     if (data.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connected && data.m_eOldState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connecting)
     {
         ZLog.Log("Connected");
         ZSteamSocket zsteamSocket = ZSteamSocket.FindSocket(data.m_hConn);
         if (zsteamSocket != null)
         {
             SteamNetConnectionInfo_t steamNetConnectionInfo_t;
             if (SteamNetworkingSockets.GetConnectionInfo(data.m_hConn, out steamNetConnectionInfo_t))
             {
                 zsteamSocket.m_peerID = steamNetConnectionInfo_t.m_identityRemote;
             }
             ZLog.Log("Got connection SteamID " + zsteamSocket.m_peerID.GetSteamID().ToString());
         }
     }
     if (data.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connecting && data.m_eOldState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_None)
     {
         ZLog.Log("New connection");
         ZSteamSocket listner = ZSteamSocket.GetListner();
         if (listner != null)
         {
             listner.OnNewConnection(data.m_hConn);
         }
     }
     if (data.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ProblemDetectedLocally)
     {
         ZLog.Log(string.Concat(new object[]
         {
             "Got problem ",
             data.m_info.m_eEndReason,
             ":",
             data.m_info.m_szEndDebug
         }));
         ZSteamSocket zsteamSocket2 = ZSteamSocket.FindSocket(data.m_hConn);
         if (zsteamSocket2 != null)
         {
             ZLog.Log("  Closing socket " + zsteamSocket2.GetHostName());
             zsteamSocket2.Close();
         }
     }
     if (data.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ClosedByPeer)
     {
         ZLog.Log("Socket closed by peer " + data);
         ZSteamSocket zsteamSocket3 = ZSteamSocket.FindSocket(data.m_hConn);
         if (zsteamSocket3 != null)
         {
             ZLog.Log("  Closing socket " + zsteamSocket3.GetHostName());
             zsteamSocket3.Close();
         }
     }
 }
Ejemplo n.º 4
0
        private void OnConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t param)
        {
            ulong clientSteamID = param.m_info.m_identityRemote.GetSteamID64();

            if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connecting)
            {
                if (connToMirrorID.Count >= maxConnections)
                {
                    Debug.Log($"Incoming connection {clientSteamID} would exceed max connection count. Rejecting.");
                    SteamNetworkingSockets.CloseConnection(param.m_hConn, 0, "Max Connection Count", false);
                    return;
                }

                EResult res;

                if ((res = SteamNetworkingSockets.AcceptConnection(param.m_hConn)) == EResult.k_EResultOK)
                {
                    Debug.Log($"Accepting connection {clientSteamID}");
                }
                else
                {
                    Debug.Log($"Connection {clientSteamID} could not be accepted: {res.ToString()}");
                }
            }
            else if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_Connected)
            {
                int connectionId = nextConnectionID++;
                connToMirrorID.Add(param.m_hConn, connectionId);
                steamIDToMirrorID.Add(param.m_info.m_identityRemote.GetSteamID(), connectionId);
                OnConnected.Invoke(connectionId);
                Debug.Log($"Client with SteamID {clientSteamID} connected. Assigning connection id {connectionId}");
            }
            else if (param.m_info.m_eState == ESteamNetworkingConnectionState.k_ESteamNetworkingConnectionState_ClosedByPeer)
            {
                if (connToMirrorID.TryGetValue(param.m_hConn, out int connId))
                {
                    OnDisconnected.Invoke(connId);
                    SteamNetworkingSockets.CloseConnection(param.m_hConn, 0, "Graceful disconnect", false);
                    connToMirrorID.Remove(connId);
                    steamIDToMirrorID.Remove(connId);
                    Debug.Log($"Client with SteamID {clientSteamID} disconnected.");
                }
            }
            else
            {
                Debug.Log($"Connection {clientSteamID} state changed: {param.m_info.m_eState.ToString()}");
            }
        }
Ejemplo n.º 5
0
        private static void ConnectionStatusChanged(SteamNetConnectionStatusChangedCallback_t data)
        {
            //
            // This is a message from/to a listen socket
            //
            if (data.Nfo.listenSocket.Id > 0)
            {
                var iface = GetSocketManager(data.Nfo.listenSocket.Id);
                iface?.OnConnectionChanged(data.Conn, data.Nfo);
            }
            else
            {
                var iface = GetConnectionManager(data.Conn.Id);
                iface?.OnConnectionChanged(data.Nfo);
            }

            OnConnectionStatusChanged?.Invoke(data.Conn, data.Nfo);
        }