RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
00001 /* monitor.h -*- C++ -*- 00002 Wolfgang Sourdeau, January-March 2013 00003 Copyright (c) 2013 Datacratic. All rights reserved. 00004 00005 MonitorEndpoint class 00006 */ 00007 00008 #pragma once 00009 00010 #include <string> 00011 #include <vector> 00012 00013 #include "soa/types/date.h" 00014 #include "soa/service/service_base.h" 00015 #include "soa/service/rest_request_router.h" 00016 #include "soa/service/rest_service_endpoint.h" 00017 00018 00019 namespace RTBKIT { 00020 00021 struct MonitorEndpoint : public Datacratic::ServiceBase, 00022 public Datacratic::RestServiceEndpoint 00023 { 00024 MonitorEndpoint(std::shared_ptr<Datacratic::ServiceProxies> proxies, 00025 const std::string & serviceName = "monitor"); 00026 ~MonitorEndpoint(); 00027 00028 void init(const std::vector<std::string> & providerNames); 00029 00030 Datacratic::RestRequestRouter router; 00031 00032 void checkServiceIndicators() const; 00033 00034 /* MonitorClient interface */ 00035 00037 bool getMonitorStatus() const; 00038 00039 int checkTimeout_; 00040 00041 /* MonitorProvider interface */ 00042 struct MonitorProviderStatus { 00043 Datacratic::Date lastCheck; 00044 bool lastStatus; 00045 }; 00046 00047 bool postServiceIndicators(const std::string & providerName, 00048 const std::string & indicatorsStr); 00049 00050 std::vector<std::string> providerNames_; 00051 std::unordered_map<std::string, MonitorProviderStatus> providersStatus_; 00052 }; 00053 00054 } // namespace RTBKIT