Skip to content

Commit 3e79e2e

Browse files
committed
[http_server] Update comments and add noexcept to proper methods
1 parent 50f71f0 commit 3e79e2e

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

libraries/http_server/http_server/dynamic_routing_table.hh

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ namespace li {
1111

1212
namespace internal {
1313

14-
// A simple memory pool for drt_node objects
14+
/**
15+
* A memory pool for drt_node objects that manages node allocation and lifetime
16+
*/
1517
template <typename T> struct drt_node_pool {
16-
template <typename... Args> T* allocate(Args&&... args) {
18+
template <typename... Args> T* allocate(Args&&... args) noexcept {
1719
auto new_node = std::make_unique<T>(std::forward<Args>(args)...);
1820
T* ptr = new_node.get();
1921
pool_.emplace_back(std::move(new_node));
@@ -24,20 +26,20 @@ template <typename T> struct drt_node_pool {
2426
};
2527

2628
template <typename V> struct drt_node {
27-
drt_node() : pool_(nullptr), v_{0, nullptr} {}
28-
drt_node(drt_node_pool<drt_node>& pool) : pool_(pool), v_{0, nullptr} {}
29+
drt_node() noexcept : pool_(nullptr), v_{0, nullptr} {}
30+
drt_node(drt_node_pool<drt_node>& pool) noexcept : pool_(pool), v_{0, nullptr} {}
2931

3032
struct iterator {
3133
const drt_node<V>* ptr;
3234
std::string_view first;
3335
V second;
3436

35-
auto operator->() { return this; }
36-
bool operator==(const iterator& b) const { return this->ptr == b.ptr; }
37-
bool operator!=(const iterator& b) const { return this->ptr != b.ptr; }
37+
auto operator->() noexcept { return this; }
38+
bool operator==(const iterator& b) const noexcept { return this->ptr == b.ptr; }
39+
bool operator!=(const iterator& b) const noexcept { return this->ptr != b.ptr; }
3840
};
3941

40-
auto end() const { return iterator{nullptr, std::string_view(), V()}; }
42+
auto end() const noexcept { return iterator{nullptr, std::string_view(), V()}; }
4143

4244
auto& find_or_create(std::string_view r, unsigned int c) {
4345
if (c == r.size())
@@ -68,7 +70,7 @@ template <typename V> struct drt_node {
6870
}
6971

7072
// Find a route.
71-
iterator find(const std::string_view& r, unsigned int c) const {
73+
iterator find(const std::string_view& r, unsigned int c) const noexcept {
7274
// We found the route r.
7375
if ((c == r.size() and v_.handler != nullptr) or (children_.size() == 0))
7476
return iterator{this, r, v_};
@@ -116,9 +118,8 @@ template <typename V> struct drt_node {
116118
};
117119

118120
template <typename V> struct dynamic_routing_table_impl {
119-
dynamic_routing_table_impl() : root(pool) {}
121+
dynamic_routing_table_impl() noexcept : root(pool) {}
120122

121-
// Find a route and return reference to a procedure.
122123
auto& operator[](const std::string_view& r) {
123124
auto [itr, is_inserted] = strings.emplace(std::string(r));
124125
std::string_view r2(*itr);
@@ -130,41 +131,40 @@ template <typename V> struct dynamic_routing_table_impl {
130131
return root.find_or_create(r, 0);
131132
}
132133

133-
// Find a route and return an iterator.
134-
auto find(const std::string_view& r) const { return root.find(r, 0); }
134+
auto find(const std::string_view& r) const noexcept { return root.find(r, 0); }
135135

136136
template <typename F> void for_all_routes(F f) const { root.for_all_routes(f); }
137-
auto end() const { return root.end(); }
137+
auto end() const noexcept { return root.end(); }
138138

139139
std::unordered_set<std::string> strings;
140140
drt_node_pool<drt_node<V>> pool;
141141
drt_node<V> root;
142142
};
143143
} // namespace internal
144144

145+
/**
146+
* A dynamic routing table that supports route registration and lookup.
147+
*/
145148
template <typename V> struct dynamic_routing_table {
146-
dynamic_routing_table() : impl_(std::make_shared<internal::dynamic_routing_table_impl<V>>()) {}
147-
dynamic_routing_table(const dynamic_routing_table& other) : impl_(other.impl_) {}
149+
dynamic_routing_table() noexcept
150+
: impl_(std::make_shared<internal::dynamic_routing_table_impl<V>>()) {}
151+
dynamic_routing_table(const dynamic_routing_table& other) noexcept : impl_(other.impl_) {}
148152

149-
// Assignment operator
150-
dynamic_routing_table& operator=(const dynamic_routing_table& other) {
153+
dynamic_routing_table& operator=(const dynamic_routing_table& other) noexcept {
151154
if (this != &other) {
152155
impl_ = other.impl_;
153156
}
154157
return *this;
155158
}
156159

157-
// Find a route and return reference to a procedure.
158160
auto& operator[](const std::string_view& r) { return impl_->operator[](r); }
159161
auto& operator[](const std::string& s) { return impl_->operator[](s); }
160162

161-
// Find a route and return an iterator.
162-
auto find(const std::string_view& r) const { return impl_->find(r); }
163-
163+
auto find(const std::string_view& r) const noexcept { return impl_->find(r); }
164164
template <typename F> void for_all_routes(F f) const { impl_->for_all_routes(f); }
165-
auto end() const { return impl_->end(); }
165+
auto end() const noexcept { return impl_->end(); }
166166

167-
private:
167+
private:
168168
std::shared_ptr<internal::dynamic_routing_table_impl<V>> impl_;
169169
};
170170

0 commit comments

Comments
 (0)