mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-13 20:56:17 +00:00
Use internal_error for priority queue exceptions.
This commit is contained in:
@@ -37,12 +37,13 @@
|
|||||||
#ifndef RAK_PRIORITY_QUEUE_DEFAULT_H
|
#ifndef RAK_PRIORITY_QUEUE_DEFAULT_H
|
||||||
#define RAK_PRIORITY_QUEUE_DEFAULT_H
|
#define RAK_PRIORITY_QUEUE_DEFAULT_H
|
||||||
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <tr1/functional>
|
#include <tr1/functional>
|
||||||
#include <rak/allocators.h>
|
#include <rak/allocators.h>
|
||||||
#include <rak/priority_queue.h>
|
#include <rak/priority_queue.h>
|
||||||
#include <rak/timer.h>
|
#include <rak/timer.h>
|
||||||
|
|
||||||
|
#include "torrent/exceptions.h"
|
||||||
|
|
||||||
namespace rak {
|
namespace rak {
|
||||||
|
|
||||||
class priority_item {
|
class priority_item {
|
||||||
@@ -52,7 +53,7 @@ public:
|
|||||||
priority_item() {}
|
priority_item() {}
|
||||||
~priority_item() {
|
~priority_item() {
|
||||||
if (is_queued())
|
if (is_queued())
|
||||||
throw std::logic_error("priority_item::~priority_item() called on a queued item.");
|
throw torrent::internal_error("priority_item::~priority_item() called on a queued item.");
|
||||||
|
|
||||||
m_time = timer();
|
m_time = timer();
|
||||||
m_slot = slot_void();
|
m_slot = slot_void();
|
||||||
@@ -101,16 +102,16 @@ priority_queue_perform(priority_queue_default* queue, timer t) {
|
|||||||
inline void
|
inline void
|
||||||
priority_queue_insert(priority_queue_default* queue, priority_item* item, timer t) {
|
priority_queue_insert(priority_queue_default* queue, priority_item* item, timer t) {
|
||||||
if (t == timer())
|
if (t == timer())
|
||||||
throw std::logic_error("priority_queue_insert(...) received a bad timer.");
|
throw torrent::internal_error("priority_queue_insert(...) received a bad timer.");
|
||||||
|
|
||||||
if (!item->is_valid())
|
if (!item->is_valid())
|
||||||
throw std::logic_error("priority_queue_insert(...) called on an invalid item.");
|
throw torrent::internal_error("priority_queue_insert(...) called on an invalid item.");
|
||||||
|
|
||||||
if (item->is_queued())
|
if (item->is_queued())
|
||||||
throw std::logic_error("priority_queue_insert(...) called on an already queued item.");
|
throw torrent::internal_error("priority_queue_insert(...) called on an already queued item.");
|
||||||
|
|
||||||
if (queue->find(item) != queue->end())
|
if (queue->find(item) != queue->end())
|
||||||
throw std::logic_error("priority_queue_insert(...) item found in queue.");
|
throw torrent::internal_error("priority_queue_insert(...) item found in queue.");
|
||||||
|
|
||||||
item->set_time(t);
|
item->set_time(t);
|
||||||
queue->push(item);
|
queue->push(item);
|
||||||
@@ -124,16 +125,16 @@ priority_queue_erase(priority_queue_default* queue, priority_item* item) {
|
|||||||
// Check is_valid() after is_queued() so that it is safe to call
|
// Check is_valid() after is_queued() so that it is safe to call
|
||||||
// erase on untouched instances.
|
// erase on untouched instances.
|
||||||
if (!item->is_valid())
|
if (!item->is_valid())
|
||||||
throw std::logic_error("priority_queue_erase(...) called on an invalid item.");
|
throw torrent::internal_error("priority_queue_erase(...) called on an invalid item.");
|
||||||
|
|
||||||
// Clear time before erasing to force it to the top.
|
// Clear time before erasing to force it to the top.
|
||||||
item->clear_time();
|
item->clear_time();
|
||||||
|
|
||||||
if (!queue->erase(item))
|
if (!queue->erase(item))
|
||||||
throw std::logic_error("priority_queue_erase(...) could not find item in queue.");
|
throw torrent::internal_error("priority_queue_erase(...) could not find item in queue.");
|
||||||
|
|
||||||
if (queue->find(item) != queue->end())
|
if (queue->find(item) != queue->end())
|
||||||
throw std::logic_error("priority_queue_erase(...) item still in queue.");
|
throw torrent::internal_error("priority_queue_erase(...) item still in queue.");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user