mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-09 19:52:31 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ee64f8ea50 | |||
| bf1265d954 | |||
| 6c3c77a2b7 | |||
| 120fcb0273 | |||
| c36956813d | |||
| 05563b4c9b | |||
| a544f8ad68 | |||
| b35413ea71 | |||
| f9f19fb041 |
@@ -11,8 +11,7 @@ namespace input {
|
|||||||
|
|
||||||
void
|
void
|
||||||
InputEvent::insert() {
|
InputEvent::insert() {
|
||||||
torrent::this_thread::poll()->open(this);
|
torrent::this_thread::poll()->open_and_insert_read(this);
|
||||||
torrent::this_thread::poll()->insert_read(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
+9
-8
@@ -112,8 +112,9 @@ main(int argc, char** argv) {
|
|||||||
|
|
||||||
torrent::log_initialize();
|
torrent::log_initialize();
|
||||||
|
|
||||||
// TODO: Create a fake thread object for initializing other processes and enabling logging.
|
torrent::runtime::initialize_worker_process_and_main_thread([argc, argv]() {
|
||||||
torrent::initialize_main_thread();
|
parse_config_file(argc, argv, [](auto& path) { parse_config_file_comments("worker", path); });
|
||||||
|
});
|
||||||
|
|
||||||
// Block SIGCHLD until all threads are created, then unblock on main-thread, to avoid SIGCHLD
|
// Block SIGCHLD until all threads are created, then unblock on main-thread, to avoid SIGCHLD
|
||||||
// interrupting other threads.
|
// interrupting other threads.
|
||||||
@@ -136,12 +137,10 @@ main(int argc, char** argv) {
|
|||||||
// # do:log.open_file=system,/usr/rakshasa/system.log
|
// # do:log.open_file=system,/usr/rakshasa/system.log
|
||||||
// # do:log.add_output=system,system
|
// # do:log.add_output=system,system
|
||||||
//
|
//
|
||||||
parse_config_file(argc, argv, [](auto& path) {
|
// # do-worker:log.open_file=system,/usr/rakshasa/system-worker.log
|
||||||
if (path.empty())
|
// # do-worker:log.add_output=system,system
|
||||||
return;
|
//
|
||||||
|
parse_config_file(argc, argv, [](auto& path) { parse_config_file_comments("", path); });
|
||||||
parse_config_file_comments(path);
|
|
||||||
});
|
|
||||||
|
|
||||||
control = new Control;
|
control = new Control;
|
||||||
|
|
||||||
@@ -164,6 +163,8 @@ main(int argc, char** argv) {
|
|||||||
torrent::initialize();
|
torrent::initialize();
|
||||||
torrent::main_thread::set_client_callback(&client_perform);
|
torrent::main_thread::set_client_callback(&client_perform);
|
||||||
|
|
||||||
|
torrent::runtime::initialize_worker_process();
|
||||||
|
|
||||||
scgi::ThreadScgi::create_thread();
|
scgi::ThreadScgi::create_thread();
|
||||||
session::ThreadSession::create_thread();
|
session::ThreadSession::create_thread();
|
||||||
|
|
||||||
|
|||||||
@@ -108,6 +108,6 @@ OptionParser::call_int_pair(slot_int_pair slot, const std::string& arg) {
|
|||||||
|
|
||||||
if (a < 0 || b < 0)
|
if (a < 0 || b < 0)
|
||||||
throw std::runtime_error("Invalid argument, \"" + arg + "\" should be positive numbers");
|
throw std::runtime_error("Invalid argument, \"" + arg + "\" should be positive numbers");
|
||||||
|
|
||||||
slot(a, b);
|
slot(a, b);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -109,8 +109,7 @@ void
|
|||||||
SCgi::activate() {
|
SCgi::activate() {
|
||||||
assert(torrent::this_thread::thread() == scgi_thread::thread());
|
assert(torrent::this_thread::thread() == scgi_thread::thread());
|
||||||
|
|
||||||
torrent::this_thread::poll()->open(this);
|
torrent::this_thread::poll()->open_and_insert_read(this);
|
||||||
torrent::this_thread::poll()->insert_read(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This should close the fd to avoid reuse.
|
// TODO: This should close the fd to avoid reuse.
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ SCgiTask::open(SCgi* parent, int fd) {
|
|||||||
// m_trusted=false into the next reuse, given that the
|
// m_trusted=false into the next reuse, given that the
|
||||||
// UNTRUSTED_CONNECTION=0 parse branch is a no-op.
|
// UNTRUSTED_CONNECTION=0 parse branch is a no-op.
|
||||||
|
|
||||||
torrent::this_thread::poll()->open(this);
|
torrent::this_thread::poll()->open_and_insert_read(this);
|
||||||
torrent::this_thread::poll()->insert_read(this);
|
|
||||||
|
|
||||||
auto lock = std::lock_guard<std::mutex>(m_result_mutex);
|
auto lock = std::lock_guard<std::mutex>(m_result_mutex);
|
||||||
|
|
||||||
|
|||||||
+7
-3
@@ -108,18 +108,22 @@ config_comment_log(const std::string& command, const std::string& raw_args) {
|
|||||||
throw torrent::input_error("Unknown log command: " + command);
|
throw torrent::input_error("Unknown log command: " + command);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call special commands in the format "# do:command=args" in the config file.
|
// Call special commands in the format "# do:command=args" or "# do-<category>:command=args" in the config file.
|
||||||
void
|
void
|
||||||
parse_config_file_comments(const std::string& path) {
|
parse_config_file_comments(const std::string& category, const std::string& path) {
|
||||||
|
if (path.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
std::fstream file(path, std::ios::in);
|
std::fstream file(path, std::ios::in);
|
||||||
|
|
||||||
if (!file.is_open())
|
if (!file.is_open())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string line;
|
std::string line;
|
||||||
|
std::string prefix = category.empty() ? "# do:" : "# do-" + category + ":";
|
||||||
|
|
||||||
while (std::getline(file, line)) {
|
while (std::getline(file, line)) {
|
||||||
if (line.size() <= 5 || line.compare(0, 5, "# do:") != 0)
|
if (line.size() <= prefix.size() || line.compare(0, prefix.size(), prefix) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto equal_pos = line.find('=');
|
auto equal_pos = line.find('=');
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
int parse_main_options(int argc, char** argv);
|
int parse_main_options(int argc, char** argv);
|
||||||
void parse_config_file(int argc, char** argv, std::function<void (const std::string&)> parse_fn);
|
void parse_config_file(int argc, char** argv, std::function<void (const std::string&)> parse_fn);
|
||||||
void parse_config_file_comments(const std::string& path);
|
void parse_config_file_comments(const std::string& category, const std::string& path);
|
||||||
|
|
||||||
void load_session_torrents(const std::string& path);
|
void load_session_torrents(const std::string& path);
|
||||||
void load_arg_torrents(char** first, char** last);
|
void load_arg_torrents(char** first, char** last);
|
||||||
|
|||||||
Reference in New Issue
Block a user