Use internal_error for priority queue exceptions.

This commit is contained in:
rakshasa
2012-05-31 20:16:26 +09:00
parent cf77a17399
commit 78f64a3e08
+10 -9
View File
@@ -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.");
} }
} }