26 #include <string_view>
30 #include <cloe/stack_config.hpp>
40 : server_registrar_(std::move(r)), coordinator_(c), data_broker_(db) {}
43 const std::string& trigger_prefix,
44 const std::string& static_prefix,
45 const std::string& api_prefix)
46 : coordinator_(ar.coordinator_), data_broker_(ar.data_broker_) {
47 if (trigger_prefix.empty()) {
48 trigger_prefix_ = ar.trigger_prefix_;
50 trigger_prefix_ = ar.trigger_prefix_ + trigger_prefix;
52 server_registrar_ = ar.server_registrar_->with_prefix(static_prefix, api_prefix);
56 server_registrar_->register_static_handler(endpoint, h);
62 server_registrar_->register_api_handler(endpoint, t, h);
65 [[nodiscard]] std::unique_ptr<cloe::Registrar> clone()
const {
66 return std::make_unique<Registrar>(*
this,
"",
"",
"");
70 assert(!prefix.empty());
71 return std::make_unique<Registrar>(*
this,
"", prefix,
"");
74 std::unique_ptr<cloe::Registrar>
with_api_prefix(
const std::string& prefix)
const override {
75 assert(!prefix.empty());
76 return std::make_unique<Registrar>(*
this,
"",
"", prefix);
80 assert(!prefix.empty() && prefix[0] !=
'_');
81 return std::make_unique<Registrar>(*
this, prefix,
"",
"");
84 [[nodiscard]] std::string make_prefix(std::string_view name, std::string_view delim)
const {
85 assert(!name.empty());
87 if (trigger_prefix_.empty()) {
89 return std::string(name);
92 std::string prefix = trigger_prefix_;
104 [[nodiscard]] std::string make_trigger_name(std::string_view name)
const {
105 return make_prefix(name, CLOE_TRIGGER_PATH_DELIMITER);
108 [[nodiscard]] std::string make_signal_name(std::string_view name)
const override {
109 auto sname = make_prefix(name, CLOE_SIGNAL_PATH_DELIMITER);
110 coordinator_->logger()->debug(
"Register signal: {}", sname);
114 void register_action(cloe::ActionFactoryPtr&& af)
override {
115 coordinator_->register_action(make_trigger_name(af->name()), std::move(af));
119 cloe::EventFactoryPtr&& ef, std::shared_ptr<cloe::Callback> storage)
override {
120 coordinator_->register_event(make_trigger_name(ef->name()), std::move(ef), storage);
124 return coordinator_->register_lua_table(trigger_prefix_);
128 assert(data_broker_ !=
nullptr);
129 return *data_broker_;
133 std::unique_ptr<ServerRegistrar> server_registrar_;
134 Coordinator* coordinator_;
136 std::string trigger_prefix_;
Definition: data_broker.hpp:1217
Definition: registrar.hpp:121
Definition: coordinator.hpp:99
Definition: registrar.hpp:37
std::unique_ptr< cloe::Registrar > with_trigger_prefix(const std::string &prefix) const override
Definition: registrar.hpp:79
std::unique_ptr< cloe::Registrar > with_static_prefix(const std::string &prefix) const override
Definition: registrar.hpp:69
void register_api_handler(const std::string &endpoint, cloe::HandlerType t, cloe::Handler h) override
Definition: registrar.hpp:59
std::unique_ptr< cloe::Registrar > with_api_prefix(const std::string &prefix) const override
Definition: registrar.hpp:74
void register_static_handler(const std::string &endpoint, cloe::Handler h) override
Definition: registrar.hpp:55
sol::table register_lua_table() override
Definition: registrar.hpp:123
std::function< void(const Request &, Response &)> Handler
Definition: cloe_fwd.hpp:65
HandlerType
Definition: registrar.hpp:88