moved some alert functions from the header to the cpp file

This commit is contained in:
Arvid Norberg 2009-11-26 21:40:10 +00:00
parent e1aa90daab
commit 072d3b0f48
2 changed files with 313 additions and 229 deletions

View File

@ -39,9 +39,8 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/config.hpp"
#include "libtorrent/assert.hpp"
#include "libtorrent/identify_client.hpp"
#include "libtorrent/socket_io.hpp"
//#include "libtorrent/socket_io.hpp"
#include "libtorrent/address.hpp"
#include "libtorrent/escape_string.hpp" // to_hex
namespace libtorrent
{
@ -51,17 +50,7 @@ namespace libtorrent
: handle(h)
{}
virtual std::string message() const
{
if (!handle.is_valid()) return " - ";
if (handle.name().empty())
{
char msg[41];
to_hex((char const*)&handle.info_hash()[0], 20, msg);
return msg;
}
return handle.name();
}
virtual std::string message() const;
torrent_handle handle;
};
@ -77,12 +66,7 @@ namespace libtorrent
const static int static_category = alert::peer_notification;
virtual int category() const { return static_category; }
virtual std::string message() const
{
error_code ec;
return torrent_alert::message() + " peer (" + ip.address().to_string(ec)
+ ", " + identify_client(pid) + ")";
}
virtual std::string message() const;
tcp::endpoint ip;
peer_id pid;
@ -98,10 +82,7 @@ namespace libtorrent
const static int static_category = alert::tracker_notification;
virtual int category() const { return static_category; }
virtual std::string message() const
{
return torrent_alert::message() + " (" + url + ")";
}
virtual std::string message() const;
std::string url;
};
@ -127,13 +108,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(read_piece_alert);
const static int static_category = alert::storage_notification;
virtual std::string message() const
{
char msg[200];
snprintf(msg, sizeof(msg), "%s: piece %s %u", torrent_alert::message().c_str()
, buffer ? "successful" : "failed", piece);
return msg;
}
virtual std::string message() const;
boost::shared_array<char> buffer;
int piece;
@ -151,13 +126,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(file_completed_alert);
const static int static_category = alert::progress_notification;
virtual std::string message() const
{
char msg[200 + TORRENT_MAX_PATH];
snprintf(msg, sizeof(msg), "%s: file %d finished downloading"
, torrent_alert::message().c_str(), index);
return msg;
}
virtual std::string message() const;
int index;
};
@ -175,13 +144,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(file_renamed_alert);
const static int static_category = alert::storage_notification;
virtual std::string message() const
{
char msg[200 + TORRENT_MAX_PATH * 2];
snprintf(msg, sizeof(msg), "%s: file %d renamed to %s", torrent_alert::message().c_str()
, index, name.c_str());
return msg;
}
virtual std::string message() const;
std::string name;
int index;
@ -201,13 +164,7 @@ namespace libtorrent
const static int static_category = alert::storage_notification;
virtual std::string message() const
{
char ret[200 + TORRENT_MAX_PATH * 2];
snprintf(ret, sizeof(ret), "%s: failed to rename file %d: %s"
, torrent_alert::message().c_str(), index, error.message().c_str());
return ret;
}
virtual std::string message() const;
int index;
error_code error;
@ -234,20 +191,7 @@ namespace libtorrent
const static int static_category = alert::performance_warning;
virtual std::string message() const
{
static char const* warning_str[] =
{
"max outstanding disk writes reached",
"max outstanding piece requests reached",
"upload limit too low (download rate will suffer)",
"download limit too low (upload rate will suffer)",
"send buffer watermark too low (upload rate will suffer)"
};
return torrent_alert::message() + ": performance warning: "
+ warning_str[warning_code];
}
virtual std::string message() const;
performance_warning_t warning_code;
};
@ -266,16 +210,7 @@ namespace libtorrent
const static int static_category = alert::status_notification;
virtual std::string message() const
{
static char const* state_str[] =
{"checking (q)", "checking", "dl metadata"
, "downloading", "finished", "seeding", "allocating"
, "checking (r)"};
return torrent_alert::message() + ": state changed to: "
+ state_str[state];
}
virtual std::string message() const;
torrent_status::state_t state;
torrent_status::state_t prev_state;
@ -312,14 +247,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(tracker_error_alert);
const static int static_category = alert::tracker_notification | alert::error_notification;
virtual std::string message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s (%d) %s (%d)"
, torrent_alert::message().c_str(), status_code
, msg.c_str(), times_in_row);
return ret;
}
virtual std::string message() const;
int times_in_row;
int status_code;
@ -338,10 +266,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(tracker_warning_alert);
const static int static_category = alert::tracker_notification | alert::error_notification;
virtual std::string message() const
{
return tracker_alert::message() + " warning: " + msg;
}
virtual std::string message() const;
std::string msg;
};
@ -359,13 +284,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(scrape_reply_alert);
virtual std::string message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s scrape reply: %u %u"
, torrent_alert::message().c_str(), incomplete, complete);
return ret;
}
virtual std::string message() const;
int incomplete;
int complete;
@ -390,8 +309,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(scrape_failed_alert);
const static int static_category = alert::tracker_notification | alert::error_notification;
virtual std::string message() const
{ return tracker_alert::message() + " scrape failed: " + msg; }
virtual std::string message() const;
std::string msg;
};
@ -407,13 +325,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(tracker_reply_alert);
virtual std::string message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s received peers: %u"
, torrent_alert::message().c_str(), num_peers);
return ret;
}
virtual std::string message() const;
int num_peers;
};
@ -428,13 +340,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(dht_reply_alert);
virtual std::string message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s received DHT peers: %u"
, torrent_alert::message().c_str(), num_peers);
return ret;
}
virtual std::string message() const;
int num_peers;
};
@ -449,11 +355,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(tracker_announce_alert);
virtual std::string message() const
{
const static char* event_str[] = {"none", "completed", "started", "stopped"};
return tracker_alert::message() + " sending announce (" + event_str[event] + ")";
}
virtual std::string message() const;
int event;
};
@ -470,13 +372,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(hash_failed_alert);
const static int static_category = alert::status_notification;
virtual std::string message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s hash for piece %u failed"
, torrent_alert::message().c_str(), piece_index);
return ret;
}
virtual std::string message() const;
int piece_index;
};
@ -490,8 +386,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(peer_ban_alert);
virtual std::string message() const
{ return peer_alert::message() + " banned peer"; }
virtual std::string message() const;
};
struct TORRENT_EXPORT peer_unsnubbed_alert: peer_alert
@ -503,8 +398,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(peer_unsnubbed_alert);
virtual std::string message() const
{ return peer_alert::message() + " peer unsnubbed"; }
virtual std::string message() const;
};
struct TORRENT_EXPORT peer_snubbed_alert: peer_alert
@ -516,8 +410,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(peer_snubbed_alert);
virtual std::string message() const
{ return peer_alert::message() + " peer snubbed"; }
virtual std::string message() const;
};
struct TORRENT_EXPORT peer_error_alert: peer_alert
@ -597,13 +490,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(invalid_request_alert);
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer sent an invalid piece request (piece: %u start: %u len: %u)"
, torrent_alert::message().c_str(), request.piece, request.start, request.length);
return ret;
}
virtual std::string message() const;
peer_request request;
};
@ -634,13 +521,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(piece_finished_alert);
const static int static_category = alert::progress_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s piece: %u finished downloading"
, torrent_alert::message().c_str(), piece_index);
return ret;
}
virtual std::string message() const;
int piece_index;
};
@ -658,13 +539,7 @@ namespace libtorrent
const static int static_category = alert::progress_notification
| alert::peer_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer dropped block ( piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
virtual std::string message() const;
int block_index;
int piece_index;
@ -683,13 +558,7 @@ namespace libtorrent
const static int static_category = alert::progress_notification
| alert::peer_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer timed out request ( piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
virtual std::string message() const;
int block_index;
int piece_index;
@ -707,13 +576,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(block_finished_alert);
const static int static_category = alert::progress_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s block finished downloading (piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
virtual std::string message() const;
int block_index;
int piece_index;
@ -732,13 +595,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(block_downloading_alert);
const static int static_category = alert::progress_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s requested block (piece: %u block: %u) %s"
, torrent_alert::message().c_str(), piece_index, block_index, peer_speedmsg);
return ret;
}
virtual std::string message() const;
char const* peer_speedmsg;
int block_index;
@ -756,13 +613,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(unwanted_block_alert);
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s received block not in download queue (piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
virtual std::string message() const;
int block_index;
int piece_index;
@ -1077,13 +928,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(listen_failed_alert);
const static int static_category = alert::status_notification | alert::error_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "listening on %s failed: %s"
, print_endpoint(endpoint).c_str(), error.message().c_str());
return ret;
}
virtual std::string message() const;
tcp::endpoint endpoint;
error_code error;
@ -1098,12 +943,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(listen_succeeded_alert);
const static int static_category = alert::status_notification;
virtual std::string message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "successfully listening on %s", print_endpoint(endpoint).c_str());
return ret;
}
virtual std::string message() const;
tcp::endpoint endpoint;
};
@ -1122,12 +962,7 @@ namespace libtorrent
const static int static_category = alert::port_mapping_notification
| alert::error_notification;
virtual std::string message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
return std::string("could not map port using ") + type_str[map_type]
+ ": " + error.message();
}
virtual std::string message() const;
int mapping;
int map_type;
@ -1146,14 +981,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(portmap_alert);
const static int static_category = alert::port_mapping_notification;
virtual std::string message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
char ret[200];
snprintf(ret, sizeof(ret), "successfully mapped port using %s. external port: %u"
, type_str[map_type], external_port);
return ret;
}
virtual std::string message() const;
int mapping;
int external_port;
@ -1169,13 +997,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(portmap_log_alert);
const static int static_category = alert::port_mapping_notification;
virtual std::string message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
char ret[200];
snprintf(ret, sizeof(ret), "%s: %s", type_str[map_type], msg.c_str());
return ret;
}
virtual std::string message() const;
int map_type;
std::string msg;
@ -1238,16 +1060,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(dht_announce_alert);
const static int static_category = alert::dht_notification;
virtual std::string message() const
{
error_code ec;
char ih_hex[41];
to_hex((const char*)&info_hash[0], 20, ih_hex);
char msg[200];
snprintf(msg, sizeof(msg), "incoming dht announce: %s:%u (%s)"
, ip.to_string(ec).c_str(), port, ih_hex);
return msg;
}
virtual std::string message() const;
address ip;
int port;
@ -1263,14 +1076,7 @@ namespace libtorrent
TORRENT_DEFINE_ALERT(dht_get_peers_alert);
const static int static_category = alert::dht_notification;
virtual std::string message() const
{
char ih_hex[41];
to_hex((const char*)&info_hash[0], 20, ih_hex);
char msg[200];
snprintf(msg, sizeof(msg), "incoming dht get_peers: %s", ih_hex);
return msg;
}
virtual std::string message() const;
sha1_hash info_hash;
};

View File

@ -33,7 +33,9 @@ POSSIBILITY OF SUCH DAMAGE.
#include "libtorrent/pch.hpp"
#include "libtorrent/alert.hpp"
#include "libtorrent/alert_types.hpp"
#include "libtorrent/io_service.hpp"
#include "libtorrent/socket_io.hpp"
#include "libtorrent/time.hpp"
#include <boost/bind.hpp>
@ -43,6 +45,282 @@ namespace libtorrent {
alert::~alert() {}
ptime alert::timestamp() const { return m_timestamp; }
std::string torrent_alert::message() const
{
if (!handle.is_valid()) return " - ";
if (handle.name().empty())
{
char msg[41];
to_hex((char const*)&handle.info_hash()[0], 20, msg);
return msg;
}
return handle.name();
}
std::string peer_alert::message() const
{
error_code ec;
return torrent_alert::message() + " peer (" + ip.address().to_string(ec)
+ ", " + identify_client(pid) + ")";
}
std::string tracker_alert::message() const
{
return torrent_alert::message() + " (" + url + ")";
}
std::string read_piece_alert::message() const
{
char msg[200];
snprintf(msg, sizeof(msg), "%s: piece %s %u", torrent_alert::message().c_str()
, buffer ? "successful" : "failed", piece);
return msg;
}
std::string file_completed_alert::message() const
{
char msg[200 + TORRENT_MAX_PATH];
snprintf(msg, sizeof(msg), "%s: file %d finished downloading"
, torrent_alert::message().c_str(), index);
return msg;
}
std::string file_renamed_alert::message() const
{
char msg[200 + TORRENT_MAX_PATH * 2];
snprintf(msg, sizeof(msg), "%s: file %d renamed to %s", torrent_alert::message().c_str()
, index, name.c_str());
return msg;
}
std::string file_rename_failed_alert::message() const
{
char ret[200 + TORRENT_MAX_PATH * 2];
snprintf(ret, sizeof(ret), "%s: failed to rename file %d: %s"
, torrent_alert::message().c_str(), index, error.message().c_str());
return ret;
}
std::string performance_alert::message() const
{
static char const* warning_str[] =
{
"max outstanding disk writes reached",
"max outstanding piece requests reached",
"upload limit too low (download rate will suffer)",
"download limit too low (upload rate will suffer)",
"send buffer watermark too low (upload rate will suffer)"
};
return torrent_alert::message() + ": performance warning: "
+ warning_str[warning_code];
}
std::string state_changed_alert::message() const
{
static char const* state_str[] =
{"checking (q)", "checking", "dl metadata"
, "downloading", "finished", "seeding", "allocating"
, "checking (r)"};
return torrent_alert::message() + ": state changed to: "
+ state_str[state];
}
std::string tracker_error_alert::message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s (%d) %s (%d)"
, torrent_alert::message().c_str(), status_code
, msg.c_str(), times_in_row);
return ret;
}
std::string tracker_warning_alert::message() const
{
return tracker_alert::message() + " warning: " + msg;
}
std::string scrape_reply_alert::message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s scrape reply: %u %u"
, torrent_alert::message().c_str(), incomplete, complete);
return ret;
}
std::string scrape_failed_alert::message() const
{
return tracker_alert::message() + " scrape failed: " + msg;
}
std::string tracker_reply_alert::message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s received peers: %u"
, torrent_alert::message().c_str(), num_peers);
return ret;
}
std::string dht_reply_alert::message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s received DHT peers: %u"
, torrent_alert::message().c_str(), num_peers);
return ret;
}
std::string tracker_announce_alert::message() const
{
const static char* event_str[] = {"none", "completed", "started", "stopped"};
return tracker_alert::message() + " sending announce (" + event_str[event] + ")";
}
std::string hash_failed_alert::message() const
{
char ret[400];
snprintf(ret, sizeof(ret), "%s hash for piece %u failed"
, torrent_alert::message().c_str(), piece_index);
return ret;
}
std::string peer_ban_alert::message() const
{
return peer_alert::message() + " banned peer";
}
std::string peer_unsnubbed_alert::message() const
{
return peer_alert::message() + " peer unsnubbed";
}
std::string peer_snubbed_alert::message() const
{
return peer_alert::message() + " peer snubbed";
}
std::string invalid_request_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer sent an invalid piece request (piece: %u start: %u len: %u)"
, torrent_alert::message().c_str(), request.piece, request.start, request.length);
return ret;
}
std::string piece_finished_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s piece: %u finished downloading"
, torrent_alert::message().c_str(), piece_index);
return ret;
}
std::string request_dropped_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer dropped block ( piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
std::string block_timeout_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s peer timed out request ( piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
std::string block_finished_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s block finished downloading (piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
std::string block_downloading_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s requested block (piece: %u block: %u) %s"
, torrent_alert::message().c_str(), piece_index, block_index, peer_speedmsg);
return ret;
}
std::string unwanted_block_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "%s received block not in download queue (piece: %u block: %u)"
, torrent_alert::message().c_str(), piece_index, block_index);
return ret;
}
std::string listen_failed_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "listening on %s failed: %s"
, print_endpoint(endpoint).c_str(), error.message().c_str());
return ret;
}
std::string listen_succeeded_alert::message() const
{
char ret[200];
snprintf(ret, sizeof(ret), "successfully listening on %s", print_endpoint(endpoint).c_str());
return ret;
}
std::string portmap_error_alert::message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
return std::string("could not map port using ") + type_str[map_type]
+ ": " + error.message();
}
std::string portmap_alert::message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
char ret[200];
snprintf(ret, sizeof(ret), "successfully mapped port using %s. external port: %u"
, type_str[map_type], external_port);
return ret;
}
std::string portmap_log_alert::message() const
{
static char const* type_str[] = {"NAT-PMP", "UPnP"};
char ret[200];
snprintf(ret, sizeof(ret), "%s: %s", type_str[map_type], msg.c_str());
return ret;
}
std::string dht_announce_alert::message() const
{
error_code ec;
char ih_hex[41];
to_hex((const char*)&info_hash[0], 20, ih_hex);
char msg[200];
snprintf(msg, sizeof(msg), "incoming dht announce: %s:%u (%s)"
, ip.to_string(ec).c_str(), port, ih_hex);
return msg;
}
std::string dht_get_peers_alert::message() const
{
char ih_hex[41];
to_hex((const char*)&info_hash[0], 20, ih_hex);
char msg[200];
snprintf(msg, sizeof(msg), "incoming dht get_peers: %s", ih_hex);
return msg;
}
alert_manager::alert_manager(io_service& ios)
: m_alert_mask(alert::error_notification)
, m_queue_size_limit(queue_size_limit_default)