void OnQueryResponse(IRubyMessage message)
        {
            try {
                ResponseMessage response = ResponseMessage.ParseFrom(message.Message);
                KeyValuePair    endpoint;
                if (KeyValuePairs.Find(RubyStrings.kQueryResponseEndpointKey,
                                       response.ReponsesList, out endpoint))
                {
                    // create a new reporter using the informations of the found service.
                    reporter_ = new ServiceReporter(registry_, context_, endpoint.Value);

                    if (predicate_ != null)
                    {
                        reporter_.Start(period_, period_unit_);
                    }
                    else
                    {
                        reporter_.Start(period_, period_unit_, predicate_);
                    }
                }
            } catch (Exception e) {
                logger_.Error(
                    string.Format(R.Log_MethodThrowsException, "OnQueryResponse",
                                  kClassName), e);
            }
        }
 /// <inheritdoc/>
 void IRubyMessageListener.OnMessageReceived(IRubyMessage message) {
   switch (message.Type) {
     case (int) NodeMessageType.kNodeResponse:
       OnQueryResponse(message);
       break;
   }
 }
Пример #3
0
 public override void Stop(IRubyMessage message)
 {
     start_stop_service_event_.Set();
     if (start_thread_ != null)
     {
         start_thread_.Join(30 * 1000);
     }
 }
 /// <inheritdoc/>
 void IRubyMessageListener.OnMessageReceived(IRubyMessage message)
 {
     switch (message.Type)
     {
     case (int)NodeMessageType.kNodeResponse:
         OnQueryResponse(message);
         break;
     }
 }
Пример #5
0
 public override void OnMessage(IRubyMessage request) {
   try {
     switch (request.Type) {
       case (int) MessageType.kStoreMetricsMessage:
         var metrics = StoreMetricsMessage.ParseFrom(request.Message);
         StoreMetrics(metrics);
         break;
     }
   } catch (Exception e) {
     logger_.Error(string.Format(S.Log_MethodThrowsException, kClassName,
       "Store"), e);
   }
 }
Пример #6
0
 public override void OnMessage(IRubyMessage request)
 {
     try {
         switch (request.Type)
         {
         case (int)MessageType.kStoreMetricsMessage:
             var metrics = StoreMetricsMessage.ParseFrom(request.Message);
             StoreMetrics(metrics);
             break;
         }
     } catch (Exception e) {
         logger_.Error(string.Format(S.Log_MethodThrowsException, kClassName,
                                     "Store"), e);
     }
 }
Пример #7
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);
   }
 }
Пример #8
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);
                }
            }
        }
Пример #9
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);
     }
 }
Пример #10
0
    void OnQueryResponse(IRubyMessage message) {
      try {
        ResponseMessage response = ResponseMessage.ParseFrom(message.Message);
        KeyValuePair endpoint;
        if (KeyValuePairs.Find(RubyStrings.kQueryResponseEndpointKey,
          response.ReponsesList, out endpoint)) {

          // create a new reporter using the informations of the found service.
          reporter_ = new ServiceReporter(registry_, context_, endpoint.Value);

          if (predicate_ != null) {
            reporter_.Start(period_, period_unit_);
          } else {
            reporter_.Start(period_, period_unit_, predicate_);
          }
        }
      } catch (Exception e) {
        logger_.Error(
          string.Format(R.Log_MethodThrowsException, "OnQueryResponse",
            kClassName), e);
      }
    }
Пример #11
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);
        }
      }
    }
Пример #12
0
 public override void Stop(IRubyMessage message) {
   start_stop_service_event_.Set();
   if (start_thread_ != null) {
     start_thread_.Join(30*1000);
   }
 }