36 Registrar(std::unique_ptr<ServerRegistrar> r, std::shared_ptr<Coordinator> c)
37 : server_registrar_(std::move(r))
38 , coordinator_(std::move(c)) {}
41 const std::string& trigger_prefix,
42 const std::string& static_prefix,
43 const std::string& api_prefix)
44 : coordinator_(ar.coordinator_) {
45 if (trigger_prefix.empty()) {
46 trigger_prefix_ = ar.trigger_prefix_;
48 trigger_prefix_ = ar.trigger_prefix_ + trigger_prefix;
50 server_registrar_ = ar.server_registrar_->with_prefix(static_prefix, api_prefix);
54 server_registrar_->register_static_handler(endpoint, h);
60 server_registrar_->register_api_handler(endpoint, t, h);
63 std::unique_ptr<cloe::Registrar> clone()
const {
64 return std::make_unique<Registrar>(*
this,
"",
"",
"");
68 assert(prefix.size() > 0);
69 return std::make_unique<Registrar>(*
this,
"", prefix,
"");
72 std::unique_ptr<cloe::Registrar>
with_api_prefix(
const std::string& prefix)
const override {
73 assert(prefix.size() > 0);
74 return std::make_unique<Registrar>(*
this,
"",
"", prefix);
78 assert(prefix.size() > 0 && prefix[0] !=
'_');
79 return std::make_unique<Registrar>(*
this, prefix,
"",
"");
82 std::string trigger_key(
const std::string& name) {
83 assert(name.size() != 0);
85 if (trigger_prefix_.size() == 0) {
93 return trigger_prefix_;
95 return trigger_prefix_ +
"/" + name;
98 void register_action(cloe::ActionFactoryPtr&& af)
override {
99 coordinator_->register_action(trigger_key(af->name()), std::move(af));
103 cloe::EventFactoryPtr&& ef, std::shared_ptr<cloe::Callback> storage)
override {
104 coordinator_->register_event(trigger_key(ef->name()), std::move(ef), storage);
108 std::unique_ptr<ServerRegistrar> server_registrar_;
109 std::shared_ptr<Coordinator> coordinator_;
110 std::string trigger_prefix_;
Definition: registrar.hpp:116
Definition: registrar.hpp:34
std::unique_ptr< cloe::Registrar > with_trigger_prefix(const std::string &prefix) const override
Definition: registrar.hpp:77
std::unique_ptr< cloe::Registrar > with_static_prefix(const std::string &prefix) const override
Definition: registrar.hpp:67
void register_api_handler(const std::string &endpoint, cloe::HandlerType t, cloe::Handler h) override
Definition: registrar.hpp:57
std::unique_ptr< cloe::Registrar > with_api_prefix(const std::string &prefix) const override
Definition: registrar.hpp:72
void register_static_handler(const std::string &endpoint, cloe::Handler h) override
Definition: registrar.hpp:53
std::function< void(const Request &, Response &)> Handler
Definition: cloe_fwd.hpp:58
HandlerType
Definition: registrar.hpp:83