protected void OnTableListingRequest(TableListingRequest listingRequest, RouteInfo routeInfo)
        {
            TableListingResponse listingResponse = new TableListingResponse();
            listingResponse.ResponseId = listingRequest.RequestId;
            listingResponse.TableSummaries = Manager.Tables.GetTableSummaries();

            ClientBoundSeverEnvelopeObject envelope = new ClientBoundSeverEnvelopeObject();
            envelope.InnerData = Manager.Serializer.GetBytes(listingResponse);
            envelope.InnerOperationCode = (int)GameMessageType.Client_ReceiveTableListingResponse;
            envelope.SenderServerId = Manager.ServerInfo.ServerId;
            envelope.PlayerNames = listingRequest.PlayerName.ToList();

            OutgoingMessage outgoingMessage = ServerMessageFormatter.CreateOutgoingMessage(
                     (int)ServerMessageType.ReceiveForwardMessageToClientRequest,
                     Manager.Serializer.GetBytes(envelope),
                     Manager.ResolveServers(routeInfo.GatewayServerId.ToList()));

            Manager.InternalOutgoingMessageQueue.Add(outgoingMessage);
        }
        protected override void OnSendMessage()
        {
            base.OnSendMessage();

            foreach (IGameTable gt in Tables)
            {
                OutgoingGameMessageQueueItem msg = (OutgoingGameMessageQueueItem)gt.PlayerPortal.OutgoingQueue.Read();
                if (msg != null)
                {
                    ClientBoundSeverEnvelopeObject envelope = new ClientBoundSeverEnvelopeObject();
                    envelope.InnerData = msg.Data;
                    envelope.InnerOperationCode = (int)msg.OperationCode;
                    envelope.SenderServerId = ServerInfo.ServerId;
                    envelope.PlayerNames = msg.Recipients.GetPlayerNames();

                    OutgoingMessage com = ServerMessageFormatter.CreateOutgoingMessage(
                             (int)ServerMessageType.ReceiveForwardMessageToClientRequest,
                             Serializer.GetBytes(envelope),
                             ResolveServers(msg.Recipients.GetUniqueGatewayServerIds()));

                    NetworkAdapter.SendMessageThroughServer(ListeningPort, com);
                }
            }
        }