summaryrefslogtreecommitdiffstats
path: root/src/worker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/worker.h')
-rw-r--r--src/worker.h47
1 files changed, 30 insertions, 17 deletions
diff --git a/src/worker.h b/src/worker.h
index 5eb1987..63f8973 100644
--- a/src/worker.h
+++ b/src/worker.h
@@ -1,12 +1,13 @@
+#ifndef WORKER_H
+#define WORKER_H
+
#include <string>
#include <vector>
#include <list>
#include <unordered_map>
-#include <netinet/in.h>
-#include <arpa/inet.h>
#include <iostream>
-#include <fstream>
#include <mutex>
+#include <ctime>
#include "site_comm.h"
#include "ocelot.h"
@@ -14,35 +15,47 @@ enum tracker_status { OPEN, PAUSED, CLOSING }; // tracker status
class worker {
private:
- torrent_list torrents_list;
- user_list users_list;
- std::vector<std::string> whitelist;
- std::unordered_map<std::string, del_message> del_reasons;
config * conf;
mysql * db;
+ site_comm * s_comm;
+ torrent_list &torrents_list;
+ user_list &users_list;
+ std::vector<std::string> &whitelist;
+ std::unordered_map<std::string, del_message> del_reasons;
tracker_status status;
+ bool reaper_active;
time_t cur_time;
- site_comm * s_comm;
+
+ unsigned int announce_interval;
+ unsigned int del_reason_lifetime;
+ unsigned int peers_timeout;
+ unsigned int numwant_limit;
+ bool keepalive_enabled;
+ std::string site_password;
+ std::string report_password;
std::mutex del_reasons_lock;
- std::mutex ustats_lock;
+ void load_config(config * conf);
void do_start_reaper();
void reap_peers();
void reap_del_reasons();
std::string get_del_reason(int code);
- peer_list::iterator add_peer(peer_list &peer_list, std::string &peer_id);
- bool peer_is_visible(user_ptr &u, peer *p);
+ peer_list::iterator add_peer(peer_list &peer_list, const std::string &peer_id);
+ inline bool peer_is_visible(user_ptr &u, peer *p);
public:
- worker(torrent_list &torrents, user_list &users, std::vector<std::string> &_whitelist, config * conf_obj, mysql * db_obj, site_comm * sc);
- std::string work(std::string &input, std::string &ip);
- std::string announce(torrent &tor, user_ptr &u, params_type &params, params_type &headers, std::string &ip);
- std::string scrape(const std::list<std::string> &infohashes, params_type &headers);
- std::string update(params_type &params);
+ worker(config * conf_obj, torrent_list &torrents, user_list &users, std::vector<std::string> &_whitelist, mysql * db_obj, site_comm * sc);
+ void reload_config(config * conf);
+ std::string work(const std::string &input, std::string &ip, client_opts_t &client_opts);
+ std::string announce(const std::string &input, torrent &tor, user_ptr &u, params_type &params, params_type &headers, std::string &ip, client_opts_t &client_opts);
+ std::string scrape(const std::list<std::string> &infohashes, params_type &headers, client_opts_t &client_opts);
+ std::string update(params_type &params, client_opts_t &client_opts);
- bool signal(int sig);
+ void reload_lists();
+ bool shutdown();
tracker_status get_status() { return status; }
void start_reaper();
};
+#endif