Skip to content

Commit 3d1862b

Browse files
committed
oak: Use fable and cloe namespace for respective types
Additionally: - Add required includes - Sort includes
1 parent 22fb91f commit 3d1862b

File tree

6 files changed

+74
-67
lines changed

6 files changed

+74
-67
lines changed

oak/include/oak/registrar.hpp

+10-14
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,15 @@
2929
#include <string>
3030
#include <utility>
3131

32-
#include <cloe/handler.hpp> // for Handler
32+
#include <cloe/handler.hpp> // for Handler, Response
3333

3434
#include "oak/route_muxer.hpp" // for Muxer
3535

3636
namespace oak {
3737

38-
class Server;
38+
class Server; // from oak/server.hpp
3939

40-
using Handler = cloe::Handler;
41-
42-
using Response = cloe::Response;
43-
44-
using Middleware = std::function<Handler(Handler)>;
40+
using Middleware = std::function<cloe::Handler(cloe::Handler)>;
4541

4642
using Logger = std::function<void(const std::string&)>;
4743

@@ -72,7 +68,7 @@ class Registrar {
7268
Registrar with_middleware(Middleware m) const;
7369
std::string prefix() const { return prefix_; }
7470
Middleware middleware() const { return middleware_; }
75-
virtual void register_handler(const std::string& route, Handler h);
71+
virtual void register_handler(const std::string& route, cloe::Handler h);
7672

7773
protected:
7874
Registrar(const std::string& prefix, Middleware m) : prefix_(prefix), middleware_(m) {}
@@ -112,7 +108,7 @@ class ProxyRegistrar {
112108
std::string prefix() const { return prefix_; }
113109
Middleware middleware() const { return middleware_; }
114110

115-
void register_handler(const std::string& route, T select, Handler h) {
111+
void register_handler(const std::string& route, T select, cloe::Handler h) {
116112
assert(route.size() != 0 && route[0] == '/');
117113
assert(registrars_.size() != 0);
118114
if (middleware_) {
@@ -150,7 +146,7 @@ class StaticRegistrar : public Registrar {
150146
}
151147
virtual ~StaticRegistrar() = default;
152148

153-
void register_handler(const std::string& route, Handler h) override;
149+
void register_handler(const std::string& route, cloe::Handler h) override;
154150

155151
void set_prefix(const std::string& prefix) { prefix_ = prefix; }
156152
void set_logger(Logger logger) { logger_ = logger; }
@@ -185,7 +181,7 @@ class LockedRegistrar : public StaticRegistrar {
185181
public:
186182
using StaticRegistrar::StaticRegistrar;
187183

188-
void register_handler(const std::string& route, Handler h) override;
184+
void register_handler(const std::string& route, cloe::Handler h) override;
189185

190186
/**
191187
* Return a unique lock guard so that the backing data can be modified.
@@ -225,7 +221,7 @@ class BufferRegistrar : public StaticRegistrar {
225221
/**
226222
* Do not register handlers that want to make use of Request.
227223
*/
228-
void register_handler(const std::string& route, Handler h) override;
224+
void register_handler(const std::string& route, cloe::Handler h) override;
229225

230226
/**
231227
* Refresh the entire buffer by calling every single registered
@@ -247,8 +243,8 @@ class BufferRegistrar : public StaticRegistrar {
247243

248244
protected:
249245
mutable std::shared_mutex access_;
250-
Muxer<Response> buffer_;
251-
Muxer<Handler> handlers_;
246+
Muxer<cloe::Response> buffer_;
247+
Muxer<cloe::Handler> handlers_;
252248
};
253249

254250
} // namespace oak

oak/include/oak/server.hpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
#include <string> // for string
2727
#include <vector> // for vector<>
2828

29-
#include <oatpp/network/Server.hpp>
29+
#include <cloe/cloe_fwd.hpp> // for Handler
30+
#include <fable/fable_fwd.hpp> // for Json
31+
#include <oatpp/network/Server.hpp> // for Server
3032

31-
#include "oak/registrar.hpp" // for StaticRegistrar, BufferRegistrar
33+
#include "oak/registrar.hpp" // for StaticRegistrar, BufferRegistrar
3234

3335
namespace oak {
3436

@@ -91,7 +93,7 @@ class Server {
9193
/**
9294
* Return endpoint data in json format.
9395
*/
94-
cloe::Json endpoints_to_json(const std::vector<std::string>& endpoints) const;
96+
fable::Json endpoints_to_json(const std::vector<std::string>& endpoints) const;
9597

9698
/**
9799
* Stop the server.
@@ -111,7 +113,7 @@ class Server {
111113
/**
112114
* Add a handler with the route muxer in the internal handler routine.
113115
*/
114-
void add_handler(const std::string& key, Handler h);
116+
void add_handler(const std::string& key, cloe::Handler h);
115117

116118
private:
117119
// Configuration

oak/src/oak/registrar.cpp

+13-12
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@
2323
#include "oak/registrar.hpp"
2424

2525
#include <map>
26+
#include <memory>
2627
#include <mutex>
2728
#include <shared_mutex>
28-
#include <memory>
2929
#include <string>
3030

31-
#include <cloe/core.hpp> // for Json, logger::get
32-
#include "oak/server.hpp" // for Server
31+
#include <cloe/handler.hpp> // for Request, Response, Handler
32+
3333
#include "oak/request_stub.hpp" // for RequestStub
34+
#include "oak/server.hpp" // for Server
3435

3536
namespace oak {
3637

@@ -40,7 +41,7 @@ Middleware chain_middleware(Middleware x, Middleware y) {
4041
} else if (y == nullptr) {
4142
return x;
4243
} else {
43-
return [x, y](Handler h) -> Handler { return y(x(h)); };
44+
return [x, y](cloe::Handler h) -> cloe::Handler { return y(x(h)); };
4445
}
4546
}
4647

@@ -65,7 +66,7 @@ Registrar Registrar::with_middleware(Middleware m) const {
6566
return Registrar(this, prefix_, chain_middleware(middleware_, m));
6667
}
6768

68-
void Registrar::register_handler(const std::string& route, Handler h) {
69+
void Registrar::register_handler(const std::string& route, cloe::Handler h) {
6970
assert(route.size() != 0 && route[0] == '/');
7071
assert(proxy_ != nullptr);
7172
if (middleware_) {
@@ -78,7 +79,7 @@ void Registrar::register_handler(const std::string& route, Handler h) {
7879
proxy_->register_handler(endpoint, h);
7980
}
8081

81-
void StaticRegistrar::register_handler(const std::string& route, Handler h) {
82+
void StaticRegistrar::register_handler(const std::string& route, cloe::Handler h) {
8283
assert(route.size() != 0 && route[0] == '/');
8384
assert(proxy_ == nullptr);
8485
auto endpoint = prefix_ + route;
@@ -91,21 +92,21 @@ void StaticRegistrar::register_handler(const std::string& route, Handler h) {
9192
endpoints_.push_back(endpoint);
9293
}
9394

94-
void LockedRegistrar::register_handler(const std::string& route, Handler h) {
95+
void LockedRegistrar::register_handler(const std::string& route, cloe::Handler h) {
9596
assert(route.size() != 0 && route[0] == '/');
9697
assert(proxy_ == nullptr);
97-
h = [this, h](const cloe::Request& q, Response& r) {
98+
h = [this, h](const cloe::Request& q, cloe::Response& r) {
9899
std::shared_lock read_lock(this->access_);
99100
h(q, r);
100101
};
101102

102103
StaticRegistrar::register_handler(route, h);
103104
}
104105

105-
void BufferRegistrar::register_handler(const std::string& route, Handler h) {
106+
void BufferRegistrar::register_handler(const std::string& route, cloe::Handler h) {
106107
assert(route.size() != 0 && route[0] == '/');
107108
assert(proxy_ == nullptr);
108-
auto key = Muxer<Handler>::normalize(prefix_ + route);
109+
auto key = Muxer<cloe::Handler>::normalize(prefix_ + route);
109110
log(key);
110111
if (middleware_) {
111112
handlers_.add(key, middleware_(h));
@@ -116,7 +117,7 @@ void BufferRegistrar::register_handler(const std::string& route, Handler h) {
116117
// Since it's not available to the server yet, we don't need to
117118
// lock for refreshing the route.
118119
refresh_route(key);
119-
server_->add_handler(key, [this, key](const cloe::Request&, Response& r) {
120+
server_->add_handler(key, [this, key](const cloe::Request&, cloe::Response& r) {
120121
// Technically it's not necessary to lock, but when we are updating the
121122
// buffers, we do not want any requests to get through.
122123
std::shared_lock read_lock(this->access_);
@@ -136,7 +137,7 @@ void BufferRegistrar::refresh_buffer() {
136137
void BufferRegistrar::refresh_route(const std::string& key) {
137138
const RequestStub q;
138139
auto handler = handlers_.get_unsafe(key).first;
139-
Response r;
140+
cloe::Response r;
140141
handler(q, r);
141142
buffer_.set_unsafe(key, r);
142143
}

oak/src/oak/request_stub.hpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121

2222
#pragma once
2323

24-
#include <cloe/handler.hpp> // for Request
24+
#include <map> // for map<>
25+
#include <stdexcept> // for logic_error
26+
#include <string> // for string
27+
28+
#include <cloe/handler.hpp> // for Request, RequestMethod, ContentType
2529

2630
namespace oak {
2731

oak/src/oak/server.cpp

+34-31
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,16 @@
3030
#include <sstream> // for stringstream
3131
#include <string> // for string
3232

33-
#include <oatpp/web/server/HttpConnectionHandler.hpp>
3433
#include <oatpp/network/tcp/server/ConnectionProvider.hpp>
34+
#include <oatpp/web/server/HttpConnectionHandler.hpp>
3535

36-
#include <cloe/core.hpp> // for logger::get
37-
#include <cloe/handler.hpp> // for Request
38-
using namespace cloe; // NOLINT(build/namespaces)
36+
#include <cloe/core/logger.hpp> // for logger::get
37+
#include <cloe/handler.hpp> // for Request
38+
#include <fable/json.hpp> // for Json
39+
using namespace cloe; // NOLINT(build/namespaces)
3940

40-
#include "oak/route_muxer.hpp" // for Muxer<>
4141
#include "oak/request_stub.hpp" // for RequestStub
42+
#include "oak/route_muxer.hpp" // for Muxer<>
4243

4344
namespace oak {
4445

@@ -62,7 +63,7 @@ class Request : public cloe::Request {
6263
explicit Request(const oatpp::web::protocol::http::incoming::Request& req) {
6364
auto head = req.getStartingLine();
6465
dest_ = head.path.std_str();
65-
endpoint_ = Muxer<Handler>::normalize(dest_);
66+
endpoint_ = Muxer<cloe::Handler>::normalize(dest_);
6667
for (const auto& [k, v] : req.getQueryParameters().getAll()) {
6768
queries_[k.std_str()] = v.std_str();
6869
}
@@ -94,9 +95,9 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
9495
GreedyHandler() {
9596
muxer.set_default([this](const cloe::Request& q, cloe::Response& r) {
9697
logger()->debug("404 {}", q.endpoint());
97-
r.not_found(Json{
98+
r.not_found(fable::Json{
9899
{"error", "cannot find handler"},
99-
{"endpoints", Json(this->muxer.routes())},
100+
{"endpoints", fable::Json(this->muxer.routes())},
100101
});
101102
});
102103
}
@@ -109,7 +110,8 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
109110
* gets passed through. The muxer has a default endpoint, so the nominal case
110111
* is that every request is passed to some handler from the muxer.
111112
*/
112-
std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
113+
std::shared_ptr<OutgoingResponse> handle(
114+
const std::shared_ptr<IncomingRequest>& request) override {
113115
auto to_response_impl = [](const cloe::Response& r) -> std::shared_ptr<OutgoingResponse> {
114116
auto code = Status(static_cast<int>(r.status()), "");
115117
auto type = cloe::as_cstr(r.type());
@@ -127,11 +129,11 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
127129
muxer.get(q.endpoint()).first(q, r);
128130
return to_response_impl(r);
129131
} catch (const std::exception& e) {
130-
Response err;
132+
cloe::Response err;
131133
err.error(StatusCode::SERVER_ERROR, std::string(e.what()));
132134
return to_response_impl(err);
133135
} catch (...) {
134-
Response err;
136+
cloe::Response err;
135137
err.error(StatusCode::SERVER_ERROR, std::string("unknown error occurred"));
136138
return to_response_impl(err);
137139
}
@@ -140,7 +142,7 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
140142
/**
141143
* Add a handler for a specific endpoint.
142144
*/
143-
void add(const std::string& key, Handler h) { muxer.add(key, h); }
145+
void add(const std::string& key, cloe::Handler h) { muxer.add(key, h); }
144146

145147
/**
146148
* Return a list of all registered endpoints.
@@ -150,11 +152,11 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
150152
/**
151153
* Return endpoint data in json format.
152154
*/
153-
cloe::Json endpoints_to_json(const std::vector<std::string>& endpoints) const {
154-
cloe::Json j;
155+
fable::Json endpoints_to_json(const std::vector<std::string>& endpoints) const {
156+
fable::Json j;
155157
for (const auto& endpoint : endpoints) {
156158
const RequestStub q;
157-
Response r;
159+
cloe::Response r;
158160
try {
159161
muxer.get(endpoint).first(q, r);
160162
} catch (std::logic_error& e) {
@@ -163,7 +165,7 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
163165
continue;
164166
}
165167
if (r.status() == cloe::StatusCode::OK && r.type() == cloe::ContentType::JSON) {
166-
j[endpoint] = cloe::Json(r.body());
168+
j[endpoint] = fable::Json(r.body());
167169
}
168170
}
169171
return j;
@@ -173,7 +175,7 @@ class GreedyHandler : public oatpp::web::server::HttpRequestHandler {
173175
cloe::Logger logger() { return cloe::logger::get("cloe-server"); }
174176

175177
private:
176-
Muxer<Handler> muxer;
178+
Muxer<cloe::Handler> muxer;
177179
};
178180

179181
void Server::listen() {
@@ -191,11 +193,8 @@ void Server::listen() {
191193
router->route("DELETE", "/*", handler_);
192194

193195
auto handler = oatpp::web::server::HttpConnectionHandler::createShared(router);
194-
auto provider = oatpp::network::tcp::server::ConnectionProvider::createShared({
195-
listen_addr_,
196-
static_cast<v_uint16>(listen_port_),
197-
oatpp::network::Address::IP_4
198-
});
196+
auto provider = oatpp::network::tcp::server::ConnectionProvider::createShared(
197+
{listen_addr_, static_cast<v_uint16>(listen_port_), oatpp::network::Address::IP_4});
199198

200199
server_ = oatpp::network::Server::createShared(provider, handler);
201200
server_->run(true);
@@ -213,23 +212,27 @@ void Server::stop() {
213212
listening_ = false;
214213
}
215214

216-
void Server::add_handler(const std::string& key, Handler h) {
217-
handler_->add(key, std::move(h));
218-
}
215+
void Server::add_handler(const std::string& key, cloe::Handler h) { handler_->add(key, std::move(h)); }
219216

220-
std::vector<std::string> Server::endpoints() const {
221-
return handler_->endpoints();
222-
}
217+
std::vector<std::string> Server::endpoints() const { return handler_->endpoints(); }
223218

224-
cloe::Json Server::endpoints_to_json(const std::vector<std::string>& endpoints) const {
219+
fable::Json Server::endpoints_to_json(const std::vector<std::string>& endpoints) const {
225220
return handler_->endpoints_to_json(endpoints);
226221
}
227222

228223
Server::Server(const std::string& addr, int port)
229-
: listen_addr_(addr), listen_port_(port), listen_threads_(3), listening_(false), handler_(new GreedyHandler()) {}
224+
: listen_addr_(addr)
225+
, listen_port_(port)
226+
, listen_threads_(3)
227+
, listening_(false)
228+
, handler_(new GreedyHandler()) {}
230229

231230
Server::Server()
232-
: listen_addr_("127.0.0.1"), listen_port_(8080), listen_threads_(3), listening_(false), handler_(new GreedyHandler()) {}
231+
: listen_addr_("127.0.0.1")
232+
, listen_port_(8080)
233+
, listen_threads_(3)
234+
, listening_(false)
235+
, handler_(new GreedyHandler()) {}
233236

234237
Server::~Server() {
235238
if (this->is_listening()) {

0 commit comments

Comments
 (0)