Esempio n. 1
0
        void ProcessQuery(IRubyMessage request, QueryRequestMessage query)
        {
            if (query.HasName)
            {
                logger_.Info("Processing query: \"" + query.Name + "\"");

                string result;
                IDictionary <string, string> parameters = query.OptionsList
                                                          .ToDictionary(proto => proto.Name, proto => proto.Value);
                bool processed = server_
                                 .QueryProcessor
                                 .Process(query.Name, parameters, out result);
                if (processed)
                {
                    QueryResponseMessage response = new QueryResponseMessage.Builder()
                                                    .SetName(query.Name)
                                                    .SetResponse(result)
                                                    .Build();
                    service_host_.Send(request.Id, (int)MessageType.kQueryResponseMessage,
                                       response.ToByteArray(), request.Sender);
                }
                else
                {
                    string message = string.Format(
                        Resources.Service_CannotProcessQuery_Name_Reason, query.Name, result);
                    service_host_.SendError(request.Id, (int)StatusCode.kBadRequest,
                                            message, request.Sender);
                    if (logger_.IsWarnEnabled)
                    {
                        logger_.Warn(message);
                    }
                }
            }
            else
            {
                string message = string.Format(
                    Resources.Service_Arg_RequiredIsMissing_Name, "name");
                service_host_.SendError(request.Id, (int)StatusCode.kBadRequest,
                                        message, request.Sender);
                if (logger_.IsWarnEnabled)
                {
                    logger_.Warn(message);
                }
            }
        }
Esempio n. 2
0
 public override void OnMessage(IRubyMessage request)
 {
     try {
         switch (request.Type)
         {
         case (int)MessageType.kQueryRequestMessage:
             QueryRequestMessage query =
                 QueryRequestMessage.ParseFrom(request.Message);
             requests_timer_.Time(() => ProcessQuery(request, query));
             break;
         }
     } catch (Exception e) {
         logger_.Error(
             string.Format(R.Log_MethodThrowsException, "OnMessage", kClassName), e);
         service_host_
         .SendError(request.Id, (int)StatusCode.kServerError, request.Sender,
                    e);
     }
 }