aboutsummaryrefslogtreecommitdiffstats
path: root/slobrok/src/vespa/slobrok/server/reconfigurable_stateserver.h
blob: 7ddda9d86ed9f3b971b17b3a8750edb32e9ab9c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#include <vespa/config/helper/configfetcher.h>
#include <vespa/config/subscription/configuri.h>
#include <vespa/config-stateserver.h>

namespace vespalib {
    struct HealthProducer;
    struct MetricsProducer;
    struct ComponentConfigProducer;
    class StateServer;
}
namespace slobrok {

class ReconfigurableStateServer : private config::IFetcherCallback<vespa::config::core::StateserverConfig> {
public:
    ReconfigurableStateServer(const config::ConfigUri & configUri,
                              vespalib::HealthProducer & healt,
                              vespalib::MetricsProducer & metrics,
                              vespalib::ComponentConfigProducer & component);
    ~ReconfigurableStateServer();
private:
    void configure(std::unique_ptr<vespa::config::core::StateserverConfig> config) override;
    vespalib::HealthProducer               & _health;
    vespalib::MetricsProducer              & _metrics;
    vespalib::ComponentConfigProducer      & _components;
    std::unique_ptr<config::ConfigFetcher>   _configFetcher;
    std::unique_ptr<vespalib::StateServer>   _server;
};

}