RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
core/monitor/monitor_endpoint.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator