Pass connection as a reference
This commit is contained in:
parent
b1d9bff111
commit
f18a440b20
|
@ -10,9 +10,9 @@ namespace {
|
|||
|
||||
} // namespace
|
||||
|
||||
auto irc_parse_thread(Connection * connection) -> void
|
||||
auto irc_parse_thread(Connection& connection) -> void
|
||||
{
|
||||
connection->add_listener<LineEvent>([connection](LineEvent const& event)
|
||||
connection.add_listener<LineEvent>([&connection](LineEvent const& event)
|
||||
{
|
||||
auto const msg = parse_irc_message(event.line);
|
||||
auto const recognized = IrcCommandHash::in_word_set(msg.command.data(), msg.command.size());
|
||||
|
@ -21,6 +21,6 @@ auto irc_parse_thread(Connection * connection) -> void
|
|||
&& recognized->min_args <= msg.args.size()
|
||||
&& recognized->max_args >= msg.args.size()
|
||||
? recognized->command : IrcCommand::UNKNOWN;
|
||||
connection->make_event<IrcMsgEvent>(command, msg);
|
||||
connection.make_event<IrcMsgEvent>(command, msg);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -293,4 +293,4 @@ struct IrcMsgEvent : Event
|
|||
IrcMsg const& irc;
|
||||
};
|
||||
|
||||
auto irc_parse_thread(Connection * connection) -> void;
|
||||
auto irc_parse_thread(Connection& connection) -> void;
|
||||
|
|
14
main.cpp
14
main.cpp
|
@ -32,9 +32,9 @@
|
|||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
auto unhandled_message_thread(Connection * connection) -> void
|
||||
auto unhandled_message_thread(Connection& connection) -> void
|
||||
{
|
||||
connection->add_listener<IrcMsgEvent>([](IrcMsgEvent const& event)
|
||||
connection.add_listener<IrcMsgEvent>([](IrcMsgEvent const& event)
|
||||
{
|
||||
if (IrcCommand::UNKNOWN == event.command)
|
||||
{
|
||||
|
@ -54,11 +54,11 @@ auto start(boost::asio::io_context & io, Settings const& settings) -> void
|
|||
auto connection = std::make_shared<Connection>(io);
|
||||
|
||||
watchdog_thread(*connection);
|
||||
irc_parse_thread(connection.get());
|
||||
ping_thread(connection.get());
|
||||
registration_thread(connection.get(), settings.password, settings.username, settings.realname, settings.nickname);
|
||||
snote_thread(connection.get());
|
||||
unhandled_message_thread(connection.get());
|
||||
irc_parse_thread(*connection);
|
||||
ping_thread(*connection);
|
||||
registration_thread(*connection, settings.password, settings.username, settings.realname, settings.nickname);
|
||||
snote_thread(*connection);
|
||||
unhandled_message_thread(*connection);
|
||||
|
||||
boost::asio::co_spawn(
|
||||
io,
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
#include "irc_parse_thread.hpp"
|
||||
#include "write_irc.hpp"
|
||||
|
||||
auto ping_thread(Connection * connection) -> void
|
||||
auto ping_thread(Connection& connection) -> void
|
||||
{
|
||||
connection->add_listener<IrcMsgEvent>([connection](IrcMsgEvent& event)
|
||||
connection.add_listener<IrcMsgEvent>([&connection](IrcMsgEvent& event)
|
||||
{
|
||||
auto& irc = event.irc;
|
||||
if (IrcCommand::PING == event.command)
|
||||
{
|
||||
send_pong(*connection, irc.args[0]);
|
||||
send_pong(connection, irc.args[0]);
|
||||
event.handled_ = true;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
#include "connection.hpp"
|
||||
#include "thread.hpp"
|
||||
|
||||
auto ping_thread(Connection * connection) -> void;
|
||||
auto ping_thread(Connection& connection) -> void;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
namespace {
|
||||
struct RegistrationThread : std::enable_shared_from_this<RegistrationThread>
|
||||
{
|
||||
Connection * connection_;
|
||||
Connection& connection_;
|
||||
std::string password_;
|
||||
std::string username_;
|
||||
std::string realname_;
|
||||
|
@ -28,7 +28,7 @@ struct RegistrationThread : std::enable_shared_from_this<RegistrationThread>
|
|||
Stage stage_;
|
||||
|
||||
RegistrationThread(
|
||||
Connection * connection_,
|
||||
Connection& connection_,
|
||||
std::string password,
|
||||
std::string username,
|
||||
std::string realname,
|
||||
|
@ -47,7 +47,7 @@ struct RegistrationThread : std::enable_shared_from_this<RegistrationThread>
|
|||
};
|
||||
|
||||
RegistrationThread::RegistrationThread(
|
||||
Connection * connection,
|
||||
Connection& connection,
|
||||
std::string password,
|
||||
std::string username,
|
||||
std::string realname,
|
||||
|
@ -63,12 +63,12 @@ RegistrationThread::RegistrationThread(
|
|||
|
||||
auto RegistrationThread::on_connect() -> void
|
||||
{
|
||||
send_cap_ls(*connection_);
|
||||
send_pass(*connection_, password_);
|
||||
send_user(*connection_, username_, realname_);
|
||||
send_nick(*connection_, nickname_);
|
||||
send_cap_ls(connection_);
|
||||
send_pass(connection_, password_);
|
||||
send_user(connection_, username_, realname_);
|
||||
send_nick(connection_, nickname_);
|
||||
|
||||
connection_->remove_listener(connect_handle_);
|
||||
connection_.remove_listener(connect_handle_);
|
||||
}
|
||||
|
||||
auto RegistrationThread::send_req() -> void
|
||||
|
@ -103,13 +103,13 @@ auto RegistrationThread::send_req() -> void
|
|||
if (not outstanding.empty())
|
||||
{
|
||||
request.pop_back();
|
||||
send_cap_req(*connection_, request);
|
||||
send_cap_req(connection_, request);
|
||||
stage_ = Stage::AckReply;
|
||||
}
|
||||
else
|
||||
{
|
||||
send_cap_end(*connection_);
|
||||
connection_->remove_listener(message_handle_);
|
||||
send_cap_end(connection_);
|
||||
connection_.remove_listener(message_handle_);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -128,8 +128,8 @@ auto RegistrationThread::capack(IrcMsg const& msg) -> void
|
|||
);
|
||||
if (outstanding.empty())
|
||||
{
|
||||
send_cap_end(*connection_);
|
||||
connection_->remove_listener(message_handle_);
|
||||
send_cap_end(connection_);
|
||||
connection_.remove_listener(message_handle_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ auto RegistrationThread::on_msg(IrcMsg const& msg) -> void
|
|||
} // namespace
|
||||
|
||||
auto registration_thread(
|
||||
Connection * connection,
|
||||
Connection& connection,
|
||||
std::string password,
|
||||
std::string username,
|
||||
std::string realname,
|
||||
|
@ -202,14 +202,14 @@ auto registration_thread(
|
|||
) -> void
|
||||
{
|
||||
auto const thread = std::make_shared<RegistrationThread>(connection, password, username, realname, nickname);
|
||||
thread->message_handle_ = connection->add_listener<IrcMsgEvent>([thread](IrcMsgEvent const& event)
|
||||
thread->message_handle_ = connection.add_listener<IrcMsgEvent>([thread](IrcMsgEvent const& event)
|
||||
{
|
||||
if (IrcCommand::CAP == event.command)
|
||||
{
|
||||
thread->on_msg(event.irc);
|
||||
}
|
||||
});
|
||||
thread->connect_handle_ = connection->add_listener<ConnectEvent>([thread](ConnectEvent const&)
|
||||
thread->connect_handle_ = connection.add_listener<ConnectEvent>([thread](ConnectEvent const&)
|
||||
{
|
||||
thread->on_connect();
|
||||
});
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
#include <string>
|
||||
|
||||
auto registration_thread(
|
||||
Connection * connection,
|
||||
Connection& connection,
|
||||
std::string password,
|
||||
std::string username,
|
||||
std::string realname,
|
||||
std::string nickname
|
||||
) -> void;
|
||||
) -> void;
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include <cstring>
|
||||
|
||||
|
||||
auto snote_thread(Connection * connection) -> void
|
||||
auto snote_thread(Connection& connection) -> void
|
||||
{
|
||||
static char const* const prefix = "*** Notice -- ";
|
||||
connection->add_listener<IrcMsgEvent>([connection](IrcMsgEvent& event)
|
||||
connection.add_listener<IrcMsgEvent>([&connection](IrcMsgEvent& event)
|
||||
{
|
||||
auto& args = event.irc.args;
|
||||
if (IrcCommand::NOTICE == event.command
|
||||
|
@ -17,7 +17,7 @@ auto snote_thread(Connection * connection) -> void
|
|||
&& args[1].starts_with(prefix))
|
||||
{
|
||||
event.handled_ = true;
|
||||
connection->make_event<SnoteEvent>(args[1].substr(strlen(prefix)));
|
||||
connection.make_event<SnoteEvent>(args[1].substr(strlen(prefix)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -11,4 +11,4 @@ struct SnoteEvent : Event
|
|||
std::string_view raw;
|
||||
};
|
||||
|
||||
auto snote_thread(Connection * connection) -> void;
|
||||
auto snote_thread(Connection& connection) -> void;
|
||||
|
|
Loading…
Reference in New Issue
Block a user