public void Process_Outgoing_Message( CNetworkMessage message )
 {
     if ( message is CRequestMessage )
     {
         CRequestMessage request = message as CRequestMessage;
         request.RequestID = m_NextRequestID++;
         m_OutstandingRequests.Add( request.RequestID, request );
     }
 }
        // Methods
        // Public interface
        public void Process_Incoming_Message( CNetworkMessage message )
        {
            if ( message is CResponseMessage )
            {
                CResponseMessage response = message as CResponseMessage;
                EMessageRequestID request_id = response.RequestID;
                CRequestMessage request = null;

                if ( m_OutstandingRequests.TryGetValue( request_id, out request ) )
                {
                    response.Request = request;
                    m_OutstandingRequests.Remove( request_id );
                }
                else if ( response.RequiresRequest )
                {
                    throw new CAppNetworkingException( "Response has unknown request id." );
                }
            }
        }
        protected virtual bool Handle_Message( CNetworkMessage message )
        {
            CLog.Log( ELoggingChannel.Network, ELogLevel.Medium, String.Format( "Connection handle opportunity for message of type ", message.GetType().Name ) );

            switch ( message.MessageType )
            {
                case ENetworkMessageType.Message_Ping:
                    LastPingTime = CurrentTime;
                    return true;

                default:
                    return false;
            }
        }
 public void Send_Message( CNetworkMessage message )
 {
     m_OutgoingMessages.Add( message );
 }
 public override void Send_Message( CNetworkMessage message, ESessionID destination_id )
 {
     Send_Message( new CWrappedNetworkMessage( message, destination_id ) );
 }
 public void Add_Message( CNetworkMessage message, ESessionID destination_id )
 {
     m_CurrentNetworkFrame.Add_Message( message, destination_id );
 }
 private void Send_Message_To_Game_Server( CNetworkMessage message )
 {
     CServerLogicalThread.Instance.Send_Message( message, ESessionID.Loopback );
 }
 private static void Send_Message_To_Chat_Server( CNetworkMessage message )
 {
     CClientLogicalThread.Instance.Send_Message( message, ESessionID.First );
 }
 public static void Send_Message_To_Server( CNetworkMessage message )
 {
     CServerLogicalThread.Instance.Send_Message( message, ESessionID.Loopback );
 }
 public void Send_Message_To_Members( CNetworkMessage message, EPersistenceID exclude_id )
 {
     ConnectedPlayersAndObservers.Where( id => id != exclude_id ).Apply( pid => CServerMessageRouter.Send_Message_To_Player( message, pid ) );
 }
 // Kinda ugly, but otherwise no way to start a message send from CRShared; override in the appropriate places on client/server
 public virtual void Send_Message( CNetworkMessage message, ESessionID destination_id )
 {
 }
            protected override bool Handle_Message( CNetworkMessage message )
            {
                bool handled = base.Handle_Message( message );
                if ( handled )
                {
                    return true;
                }

                CServerNetworkThread.Instance.On_Message_Receive( message, ID );
                return true;
            }
 public void Send_Message_To_Server( CNetworkMessage message )
 {
     Send_Message( message, ESessionID.First );
 }
 public void Send_Message( CNetworkMessage message, EPersistenceID player_id )
 {
     CConnectedPlayer player = Get_Active_Player_By_Persistence_ID( player_id );
     if ( player != null )
     {
         Add_Message( message, player.SessionID );
     }
 }
 public void Send_Message( CNetworkMessage message, ESessionID destination_id )
 {
     CServerLogicalThread.Instance.Send_Message( message, destination_id );
 }
 // Methods
 // Public static interface
 public static void Send_Message_To_Player( CNetworkMessage message, EPersistenceID player_id )
 {
     CServerLogicalThread.Instance.Send_Message( message, player_id );
 }
 public void Send_Message( CNetworkMessage message, EPersistenceID player_id )
 {
     CConnectedPlayer player = Get_Active_Player_By_Persistence_ID( player_id );
     if ( player != null )
     {
         CServerLogicalThread.Instance.Send_Message( message, player.SessionID );
     }
 }
 public static void Send_Message_To_Session( CNetworkMessage message, ESessionID session_id )
 {
     CServerLogicalThread.Instance.Send_Message( message, session_id );
 }
            // Protected interface and overrides
            protected override bool Handle_Message( CNetworkMessage message )
            {
                bool handled = base.Handle_Message( message );
                if ( handled )
                {
                    return true;
                }

                switch ( message.MessageType )
                {
                    case ENetworkMessageType.Message_Disconnect_Result:
                        IsFinished = true;
                        return true;

                    case ENetworkMessageType.Message_Client_Hello_Response:
                        CClientHelloResponse response = message as CClientHelloResponse;
                        CClientNetworkThread.Instance.On_Message_Receive( message, ID );

                        if ( response.Reason != EConnectRefusalReason.None )
                        {
                            IsFinished = true;
                        }
                        return true;

                    case ENetworkMessageType.Message_Connection_Dropped:
                        CClientNetworkThread.Instance.On_Message_Receive( message, ID );
                        IsFinished = true;
                        return true;

                    default:
                        CClientNetworkThread.Instance.On_Message_Receive( message, ID );
                        return true;
                }
            }
        private void Send_Message_To_Channel( EChannelID channel_id, CNetworkMessage message, EPersistenceID skip_id )
        {
            CServerChatChannel channel = Get_Channel_By_Channel_ID( channel_id );
            if ( channel == null )
            {
                return;
            }

            channel.Members.Where( n => n != skip_id ).Apply( pid => Send_Message_To_Player( message, pid ) );
        }
 private void Send_Message_To_Members( ELobbyID lobby_id, CNetworkMessage message )
 {
     Send_Message_To_Members( lobby_id, message, EPersistenceID.Invalid );
 }
        private void Send_Message_To_Player( CNetworkMessage message, EPersistenceID persistence_id )
        {
            CChatPlayer player = Get_Player_By_Persistence_ID( persistence_id );
            if ( player == null )
            {
                return;
            }

            CServerLogicalThread.Instance.Send_Message( message, player.SessionID );
        }
        private void Send_Message_To_Members( ELobbyID lobby_id, CNetworkMessage message, EPersistenceID exclude_id )
        {
            CServerLobby lobby = Get_Lobby( lobby_id );
            if ( lobby == null )
            {
                return;
            }

            lobby.ConnectedMemberIDs.Where( cid => cid != exclude_id ).Apply( id => CServerMessageRouter.Send_Message_To_Player( message, id ) );
        }
 public override void Send_Message( CNetworkMessage message, ESessionID destination_id )
 {
     Add_Message( message, destination_id );
 }
        public void On_Message_Receive( CNetworkMessage message, ESessionID id )
        {
            CLog.Log( ELoggingChannel.Network, ELogLevel.Medium, String.Format( "Received network message {0}", message.GetType().Name ) );
            CLog.Log( ELoggingChannel.Network, ELogLevel.High, String.Format( "		Internal state: {0}", message.ToString() ) );

            m_RequestResponseManager.Process_Incoming_Message( message );
            m_CurrentFrame.Add_Message( message, id );
        }