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