Exemplo n.º 1
0
        public IEnumerable <GameServerData> Get()
        {
            RpcClient rpcClient = new RpcClient();

            Console.WriteLine(" [x] Requesting game servers");

            RpcDataServersRequest requestObject = new RpcDataServersRequest {
                StartIndex = 0, Count = 15
            };
            string request  = JsonSerializer.ToJsonString(requestObject);
            string response = rpcClient.Call(request, "rpc.getservers");

            RpcDataServersResponse rpcDataServers;

            try
            {
                rpcDataServers = JsonSerializer.Deserialize <RpcDataServersResponse>(response);
            }
            catch (Exception e)
            {
                Console.WriteLine($" [.] failed to parse json: {e.Message}");
                return(null);
            }

            Console.WriteLine($" [.] Got '{rpcDataServers.GameServers}'");

            rpcClient.Close();
            return(rpcDataServers.GameServers);
        }
Exemplo n.º 2
0
        private void ConsumerReceived(object model, BasicDeliverEventArgs ea)
        {
            var props      = ea.BasicProperties;
            var replyProps = Channel.CreateBasicProperties();

            replyProps.CorrelationId = props.CorrelationId;

            string message = Encoding.UTF8.GetString(ea.Body.ToArray());

            _logger.LogInformation($" [x] request: '{message}'");

            RpcDataServersRequest request = JsonSerializer.Deserialize <RpcDataServersRequest>(message);

            RpcDataServersResponse response = new RpcDataServersResponse()
            {
                GameServers = _serversDbHelper.Get(request)
            };

            string jsonObject = JsonSerializer.ToJsonString(response);

            _logger.LogInformation($" [x] response: '{response.GameServers.Length}'");

            byte[] body = Encoding.UTF8.GetBytes(jsonObject);

            Channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: body);
            Channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
        }