Skip to content

Commit ff88ebe

Browse files
committed
UPD | plan
1 parent 0de7538 commit ff88ebe

5 files changed

Lines changed: 28 additions & 15 deletions

File tree

main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ int main() {
126126
db->add_slave(std::move(slave)).unwrap();
127127

128128
manapi::unwrap(co_await route.config(manapi::fs::path::join(".", "config.json")));
129-
manapi::unwrap(co_await route.start ());
130129
});
131130

132131
cb();

src/ManapiErrors.cpp

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99
#include "std/ManapiAsyncContext.hpp"
1010
#include "./include/ManapiUtils.hpp"
1111

12+
struct manapi_errors_string_hash
13+
{
14+
using hash_type = std::hash<std::string_view>;
15+
using is_transparent = void;
16+
17+
std::size_t operator()(const char* str) const { return hash_type{}(str); }
18+
std::size_t operator()(std::string_view str) const { return hash_type{}(str); }
19+
std::size_t operator()(std::string const& str) const { return hash_type{}(str); }
20+
};
21+
22+
1223
static const char* level_strings[] = {
1324
"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL"
1425
};
@@ -28,19 +39,17 @@ static int log_trace_enabled = -1;
2839

2940
static std::mutex log_mx;
3041

31-
static std::unordered_map <std::string_view, std::unique_ptr <char, manapi::ev::chars_deleter>> log_names_enabled;
42+
static std::unordered_set<std::string, manapi_errors_string_hash, std::equal_to<>> log_names_enabled;
3243

3344
void manapi::debug::set_log_name_enabled(const char *name, bool enabled) {
3445
if (enabled) {
35-
auto const len = ::strlen(name);
36-
std::unique_ptr<char, manapi::ev::chars_deleter> data( new char (len + 1));
37-
::strcpy(data.get(), name);
38-
data.get()[len] = '\0';
39-
std::string_view sv (data.get(), len);
40-
log_names_enabled.insert({sv, std::move(data)});
46+
log_names_enabled.insert(std::string(name));
47+
}
48+
else {
49+
auto it = log_names_enabled.find(std::string_view(name));
50+
if (it != log_names_enabled.end())
51+
log_names_enabled.erase(it);
4152
}
42-
else
43-
log_names_enabled.erase(std::string_view(name));
4453
}
4554

4655
void manapi::debug::set_log_trace_enabled (int value) MANAPIHTTP_NOEXCEPT {

src/ManapiHttp.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ struct manapi::net::http::server::data2_t : manapi::net::http::site::data_t {
3838
async::promise_sync<void>::resolve_t resolve_stop;
3939
std::shared_ptr<ev::async> init_watcher;
4040
uint8_t flags;
41+
42+
~data2_t () {
43+
std::cout << "OH NO\n";
44+
}
4145
};
4246

4347
manapi::net::http::server::server() : site() {
@@ -151,8 +155,6 @@ manapi::future<manapi::status> manapi::net::http::server::stop() {
151155

152156
// короч. мне лень. это проблема не сегодняшнего меня
153157

154-
async::current()->eventloop()->unsubscribe_finish(std::exchange(data->event_id, 0));
155-
async::current()->eventloop()->unsubscribe_clean_up(std::exchange(data->clean_up_id, 0));
156158

157159
co_await stop_pool(data);
158160

@@ -195,6 +197,9 @@ manapi::future<manapi::status> manapi::net::http::server::stop() {
195197
if (data->flags & MANAPI_HTTP_SERVER_FLAG_RUNNING)
196198
data->flags ^= MANAPI_HTTP_SERVER_FLAG_RUNNING;
197199

200+
async::current()->eventloop()->unsubscribe_finish(std::exchange(data->event_id, 0));
201+
async::current()->eventloop()->unsubscribe_clean_up(std::exchange(data->clean_up_id, 0));
202+
198203
co_return status_ok();
199204
}
200205
catch (std::exception const &e) {

src/http/ManapiSite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ manapi::future<manapi::status> manapi::net::http::site::config(std::string path)
290290
co_return status_already_exists("http:config already exists");
291291

292292

293-
this->data->event_id = async::current()->eventloop()->subscribe_finish(-1, [p, data = this->data] () mutable
293+
this->data->event_id = async::current()->eventloop()->subscribe_finish(-1, [p] () mutable
294294
-> future<> {
295295
auto res = co_await p->stop();
296296
manapi_log_trace(manapi::debug::LOG_TRACE_HIGH, "http:Stop status=%.*s", res.msg().size(), res.msg().data());

src/worker/ManapiHttp3Cloudflare.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ enum http_v3_stream_flags {
4141
};
4242

4343
struct manapi::net::worker::http_v3_cloudflare_quiche::connection_t {
44-
std::string_view cid;
44+
std::string cid;
4545
int flags;
4646
http_v3_cloudflare_quiche *worker;
4747
quiche_conn *conn;
@@ -734,7 +734,7 @@ void manapi::net::worker::http_v3_cloudflare_quiche::onrecv(const std::shared_pt
734734
try {
735735
std::string conn_id{dcid, dcid_len};
736736

737-
auto p = std::make_unique<connection_t>(std::string_view{conn_id}, 0, this, quiche_conn_, nullptr, std::map<int64_t, shared_conn>{});
737+
auto p = std::make_unique<connection_t>(conn_id, 0, this, quiche_conn_, nullptr, std::map<int64_t, shared_conn>{});
738738
connection = std::shared_ptr<worker::connection> (new worker::connection{p.release()}, connection_interface_eraser);
739739

740740
conn_data = connection->as<connection_t>();

0 commit comments

Comments
 (0)