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); } } }