protected override void ConnectionClosed(ConnectionClosedReason reason)
 {
     base.ConnectionClosed(reason);
     foreach (var subordinate in _subordinates.Values)
     {
         subordinate.State = State;
     }
 }
Ejemplo n.º 2
0
 private void EnterStateClosed(ConnectionClosedReason reason)
 {
     CloseReason = reason;
     State       = ConnectionState.Closed;
     if (BehaviorSet(ConnectionBehavior.GenerateOutgoingHandshakes))
     {
         // If we have just come from a state where handshakes are required, then we should notify the endpoint that we are closing.
         Connection.Enqueue(HandshakePayload.Generate(State, false));
     }
     Behavior = ConnectionBehavior.None;
 }
Ejemplo n.º 3
0
 internal void Set(OnRemoteConnectionClosedInfoInternal?other)
 {
     if (other != null)
     {
         ClientData   = other.Value.ClientData;
         LocalUserId  = other.Value.LocalUserId;
         RemoteUserId = other.Value.RemoteUserId;
         SocketId     = other.Value.SocketId;
         Reason       = other.Value.Reason;
     }
 }
Ejemplo n.º 4
0
        private void TransportLayer_OnConnectionClosed(ITransportConnection connection, ConnectionClosedReason reason)
        {
            if (connection.ConnectedTo != ServerId)
            {
                MelonLogger.LogError("Connection with non-server ID was closed - but we're a client???");
                return;
            }

            ui.SetState(MultiplayerUIState.PreConnect);
            MelonLogger.LogError("Got P2P connection error " + reason.ToString());
            Disconnect();
        }
Ejemplo n.º 5
0
        private void TransportLayer_OnConnectionClosed(ITransportConnection connection, ConnectionClosedReason reason)
        {
            switch (reason)
            {
            case ConnectionClosedReason.Timeout:
            case ConnectionClosedReason.ClosedByRemote:
                if (smallPlayerIds.ContainsKey(connection.ConnectedTo))
                {
                    MelonLogger.Log("Player left with ID: " + connection.ConnectedTo);
                    byte smallId = smallPlayerIds[connection.ConnectedTo];

                    P2PMessage disconnectMsg = new P2PMessage();
                    disconnectMsg.WriteByte((byte)MessageType.Disconnect);
                    disconnectMsg.WriteByte(smallId);

                    playerObjects[smallId].Delete();
                    playerObjects.Remove(smallId);
                    players.RemoveAll((ulong val) => val == connection.ConnectedTo);
                    smallPlayerIds.Remove(connection.ConnectedTo);

                    foreach (SteamId p in players)
                    {
                        playerConnections[p].SendMessage(disconnectMsg, MessageSendType.Reliable);
                    }
                }
                break;

            case ConnectionClosedReason.Other:
                break;
            }
        }
Ejemplo n.º 6
0
 public S2C_ConnectionClosed(ConnectionClosedReason reason)
 {
     this.Reason = reason;
 }
Ejemplo n.º 7
0
 private void ServiceTransportConnectorClosed(ConnectionClosedReason reason)
 {
     _connectorClosed = AlternateConnectorClosedHandler == null || AlternateConnectorClosedHandler(reason);
 }
 void ServiceTransportConnectionClosed(ConnectionClosedReason reason)
 {
     _connectionClosed = true;
 }
Ejemplo n.º 9
0
        private void TransportLayer_OnConnectionClosed(ITransportConnection connection, ConnectionClosedReason reason)
        {
            if (connection.ConnectedTo != ServerId)
            {
                MelonModLogger.LogError("Connection with non-server ID was closed - but we're a client???");
                return;
            }

            ui.SetState(MultiplayerUIState.PreConnect);
            MelonModLogger.LogError("Got P2P connection error " + reason.ToString());
            foreach (PlayerRep pr in playerObjects.Values)
            {
                pr.Destroy();
            }
        }