diff options
Diffstat (limited to 'lib/Task.cc')
| -rw-r--r-- | lib/Task.cc | 220 | 
1 files changed, 110 insertions, 110 deletions
| diff --git a/lib/Task.cc b/lib/Task.cc index afa697c..55a4540 100644 --- a/lib/Task.cc +++ b/lib/Task.cc @@ -1,110 +1,110 @@ -#include <sys/time.h> -#include <iostream> -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include "TaskMan.h" -#include "Task.h" -#include "BString.h" -#include "gettext.h" - -Task::Task() : current(0), state(TASK_ON_HOLD), stopped(false), suspended(false), wbta(0) { -    TaskMan::AddTask(this); -} - -Task::~Task() { -    TaskMan::RemoveFromWatches(this); -} - -int Task::Do() throw (GeneralException) { -    return TASK_ON_HOLD; -} - -int Task::Run() { -    try { -	state = Do(); -    } -    catch (TaskSwitch) { -	return state; -    } -    catch (GeneralException e) { -	std::cerr << _("Task ") << GetName() << _(" caused an unexpected exception: \"") << e.GetMsg() << _("\". Terminating.\n"); -	state = TASK_DONE; -	return TASK_DONE; -    } -     -    return state; -} - -int Task::DryRun() { -    while (state != TASK_DONE) { -	try { -	    state = Do(); -	} -	catch (TaskSwitch) { -	} -	catch (GeneralException e) { -	    std::cerr << _("Task ") << GetName() << _(" caused an unexpected exception during dry-run: \"") << e.GetMsg() << _("\". Terminating.\n"); -	    state = TASK_DONE; -	} -    } -     -    return state; -} - -int Task::GetState() { -    return state; -} - -String Task::GetName() { -    return _("Unknow Task"); -} - -void Task::Suspend(int newstate) throw (GeneralException) { -    if (newstate != -1) { -	state = newstate; -    } -    suspended = true; -    throw TaskSwitch(); -} - -void Task::WaitFor(Handle * h, int flags) { -    h->SetNonBlock(); -    TaskMan::WaitFor(h, this, flags); -} - -void Task::WaitFor(Task * t) { -    t->wbta = this; -} - -void Task::WaitFor(pid_t p) { -    TaskMan::WaitFor(p, this); -} - -void Task::WaitFor(timeval t, int flags) { -    TaskMan::WaitFor(t, this, flags); -} - -void Task::SetBurst() { -    state = TASK_BURST; -} - -void Task::Stop() { -    stopped = true; -} - -void Task::Restart() { -    stopped = false; -} - -bool Task::IsStopped() { -    return stopped; -} - -Task * Task::WaitedBy() { -    return wbta; -} - -void Task::RemoveFromWatches() { -    wbta = 0; -} +#include <sys/time.h>
 +#include <iostream>
 +#ifdef HAVE_CONFIG_H
 +#include "config.h"
 +#endif
 +#include "TaskMan.h"
 +#include "Task.h"
 +#include "BString.h"
 +#include "gettext.h"
 +
 +Task::Task() : current(0), state(TASK_ON_HOLD), stopped(false), suspended(false), wbta(0) {
 +    TaskMan::AddTask(this);
 +}
 +
 +Task::~Task() {
 +    TaskMan::RemoveFromWatches(this);
 +}
 +
 +int Task::Do() throw (GeneralException) {
 +    return TASK_ON_HOLD;
 +}
 +
 +int Task::Run() {
 +    try {
 +	state = Do();
 +    }
 +    catch (TaskSwitch) {
 +	return state;
 +    }
 +    catch (GeneralException e) {
 +	std::cerr << _("Task ") << GetName() << _(" caused an unexpected exception: \"") << e.GetMsg() << _("\". Terminating.\n");
 +	state = TASK_DONE;
 +	return TASK_DONE;
 +    }
 +    
 +    return state;
 +}
 +
 +int Task::DryRun() {
 +    while (state != TASK_DONE) {
 +	try {
 +	    state = Do();
 +	}
 +	catch (TaskSwitch) {
 +	}
 +	catch (GeneralException e) {
 +	    std::cerr << _("Task ") << GetName() << _(" caused an unexpected exception during dry-run: \"") << e.GetMsg() << _("\". Terminating.\n");
 +	    state = TASK_DONE;
 +	}
 +    }
 +    
 +    return state;
 +}
 +
 +int Task::GetState() {
 +    return state;
 +}
 +
 +String Task::GetName() {
 +    return _("Unknow Task");
 +}
 +
 +void Task::Suspend(int newstate) throw (GeneralException) {
 +    if (newstate != -1) {
 +	state = newstate;
 +    }
 +    suspended = true;
 +    throw TaskSwitch();
 +}
 +
 +void Task::WaitFor(Handle * h, int flags) {
 +    h->SetNonBlock();
 +    TaskMan::WaitFor(h, this, flags);
 +}
 +
 +void Task::WaitFor(Task * t) {
 +    t->wbta = this;
 +}
 +
 +void Task::WaitFor(pid_t p) {
 +    TaskMan::WaitFor(p, this);
 +}
 +
 +void Task::WaitFor(timeval t, int flags) {
 +    TaskMan::WaitFor(t, this, flags);
 +}
 +
 +void Task::SetBurst() {
 +    state = TASK_BURST;
 +}
 +
 +void Task::Stop() {
 +    stopped = true;
 +}
 +
 +void Task::Restart() {
 +    stopped = false;
 +}
 +
 +bool Task::IsStopped() {
 +    return stopped;
 +}
 +
 +Task * Task::WaitedBy() {
 +    return wbta;
 +}
 +
 +void Task::RemoveFromWatches() {
 +    wbta = 0;
 +}
 | 
