All pastes #179584 Raw Edit

zeroflag

public text v1 · immutable
#179584 ·published 2006-09-22 10:28 UTC
rendered paste body
	void TaskStateObject::setTaskState(TaskState::eTaskState newstate)
	{
		if (newstate != this->mTaskState && this->isStateChangeValid(this->mTaskState, newstate))
		{

			if (this->onStateChange(newstate))
			{
				this->mTaskState = newstate;
			}
		}
	}

	bool TaskStateObject::onStateChange(TaskState::eTaskState newstate)
	{
		switch(newstate)
		{
		case TaskState::Created:
			break;
		case TaskState::Initialize:
			break;
		case TaskState::InitializeWait:
			break;
		case TaskState::InitializeLink:
			break;
		case TaskState::Active:
			break;
		case TaskState::Suspended:
			break;
		case TaskState::Terminated:
			break;
		}
		return false;
	}

	bool TaskStateObject::isStateChangeValid(TaskState::eTaskState oldstate, TaskState::eTaskState newstate)
	{
		return 
			(oldstate == TaskState::Created && newstate == TaskState::Initialize) ||
			(oldstate == TaskState::Initialize && newstate == TaskState::InitializeWait) ||
			(oldstate == TaskState::InitializeWait && newstate == TaskState::InitializeLink) ||
			(oldstate == TaskState::InitializeLink && newstate == TaskState::Active) ||
			(oldstate == TaskState::Active && (newstate == TaskState::Suspended || newstate == TaskState::Terminated));
	}