37 : server_registrar_(std::move(r)), coordinator_(c), data_broker_(db) {}
40 const std::string& trigger_prefix,
41 const std::string& static_prefix,
42 const std::string& api_prefix)
43 : coordinator_(ar.coordinator_), data_broker_(ar.data_broker_) {
44 if (trigger_prefix.empty()) {
45 trigger_prefix_ = ar.trigger_prefix_;
47 trigger_prefix_ = ar.trigger_prefix_ + trigger_prefix;
49 server_registrar_ = ar.server_registrar_->with_prefix(static_prefix, api_prefix);
53 server_registrar_->register_static_handler(endpoint, h);
59 server_registrar_->register_api_handler(endpoint, t, h);
62 std::unique_ptr<cloe::Registrar> clone()
const {
63 return std::make_unique<Registrar>(*
this,
"",
"",
"");
67 assert(prefix.size() > 0);
68 return std::make_unique<Registrar>(*
this,
"", prefix,
"");
71 std::unique_ptr<cloe::Registrar>
with_api_prefix(
const std::string& prefix)
const override {
72 assert(prefix.size() > 0);
73 return std::make_unique<Registrar>(*
this,
"",
"", prefix);
77 assert(prefix.size() > 0 && prefix[0] !=
'_');
78 return std::make_unique<Registrar>(*
this, prefix,
"",
"");
81 std::string trigger_key(
const std::string& name) {
82 assert(name.size() != 0);
84 if (trigger_prefix_.size() == 0) {
92 return trigger_prefix_;
94 return trigger_prefix_ +
"/" + name;
97 void register_action(cloe::ActionFactoryPtr&& af)
override {
98 coordinator_->register_action(trigger_key(af->name()), std::move(af));
102 cloe::EventFactoryPtr&& ef, std::shared_ptr<cloe::Callback> storage)
override {
103 coordinator_->register_event(trigger_key(ef->name()), std::move(ef), storage);
107 return coordinator_->register_lua_table(trigger_prefix_);
111 assert(data_broker_ !=
nullptr);
112 return *data_broker_;
116 std::unique_ptr<ServerRegistrar> server_registrar_;
117 Coordinator* coordinator_;
119 std::string trigger_prefix_;
Definition: data_broker.hpp:1217
Definition: registrar.hpp:121
Definition: coordinator.hpp:99
Definition: registrar.hpp:34
std::unique_ptr< cloe::Registrar > with_trigger_prefix(const std::string &prefix) const override
Definition: registrar.hpp:76
std::unique_ptr< cloe::Registrar > with_static_prefix(const std::string &prefix) const override
Definition: registrar.hpp:66
void register_api_handler(const std::string &endpoint, cloe::HandlerType t, cloe::Handler h) override
Definition: registrar.hpp:56
std::unique_ptr< cloe::Registrar > with_api_prefix(const std::string &prefix) const override
Definition: registrar.hpp:71
void register_static_handler(const std::string &endpoint, cloe::Handler h) override
Definition: registrar.hpp:52
sol::table register_lua_table() override
Definition: registrar.hpp:106
std::function< void(const Request &, Response &)> Handler
Definition: cloe_fwd.hpp:65
HandlerType
Definition: registrar.hpp:88