1
0
Fork 0

Merge branch 'master' of https://github.com/fceller/ArangoDB into devel

This commit is contained in:
Frank Celler 2012-06-22 15:15:40 +02:00
commit 1a91bf0c14
7 changed files with 41 additions and 16 deletions

View File

@ -44,23 +44,7 @@ namespace triagens {
GeneralListenTask& operator= (GeneralListenTask const&);
public:
/*
////////////////////////////////////////////////////////////////////////////////
/// @brief listen to given address and port
////////////////////////////////////////////////////////////////////////////////
GeneralListenTask (S* server, string const& address, int port, bool reuseAddress)
: Task("GeneralListenTask"), ListenTask(address, port, reuseAddress), server(server) {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief listen to given port
////////////////////////////////////////////////////////////////////////////////
GeneralListenTask (S* server, int port, bool reuseAddress)
: Task("GeneralListenTask"), ListenTask(port, reuseAddress), server(server) {
}
*/
////////////////////////////////////////////////////////////////////////////////
/// @brief listen to given port
////////////////////////////////////////////////////////////////////////////////

View File

@ -403,6 +403,8 @@ void ApplicationScheduler::shutdown () {
sleep(1);
}
_scheduler->shutdown();
// delete the scheduler
delete _scheduler;
_scheduler = 0;

View File

@ -98,6 +98,10 @@ ListenTask::~ListenTask () {
if (listenSocket != -1) {
close(listenSocket);
}
if (readWatcher != 0) {
scheduler->uninstallEvent(readWatcher);
}
}
// -----------------------------------------------------------------------------

View File

@ -46,6 +46,9 @@ PeriodicTask::PeriodicTask (double offset, double intervall)
PeriodicTask::~PeriodicTask () {
if (watcher != 0) {
scheduler->uninstallEvent(watcher);
}
}
// -----------------------------------------------------------------------------

View File

@ -209,6 +209,22 @@ bool Scheduler::isShutdownInProgress () {
return stopping != 0;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief shuts down the scheduler
////////////////////////////////////////////////////////////////////////////////
void Scheduler::shutdown () {
for (set<Task*>::iterator i = taskRegistered.begin();
i != taskRegistered.end();
++i) {
deleteTask(*i);
}
taskRegistered.clear();
task2thread.clear();
current.clear();
}
////////////////////////////////////////////////////////////////////////////////
/// @brief registers a new task
////////////////////////////////////////////////////////////////////////////////
@ -263,6 +279,8 @@ void Scheduler::unregisterTask (Task* task) {
taskRegistered.erase(task);
--current[task->getName()];
}
task2thread.erase(i);
}
}

View File

@ -155,6 +155,12 @@ namespace triagens {
bool isShutdownInProgress ();
////////////////////////////////////////////////////////////////////////////////
/// @brief shuts down the scheduler
////////////////////////////////////////////////////////////////////////////////
void shutdown ();
////////////////////////////////////////////////////////////////////////////////
/// @brief registers a new task
////////////////////////////////////////////////////////////////////////////////

8
lib/valgrind.supp Normal file
View File

@ -0,0 +1,8 @@
{
ignore errors caused by realloc(PTR,0)
Memcheck:Leak
fun:malloc
fun:realloc
fun:ev_realloc
...
}