merge the trunk with the development of ZeroMQ branch

git-svn-id: https://subversion.gsi.de/fairroot/fairbase/trunk@22451 0381ead4-6506-0410-b988-94b70fbc4730
This commit is contained in:
Mohammad Al-Turany
2013-10-25 12:42:48 +00:00
parent d65d7e490f
commit 5121fe3ae5
36 changed files with 1291 additions and 727 deletions

View File

@@ -5,36 +5,165 @@
* Author: dklein
*/
#include <iostream>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include "FairMQStateMachine.h"
#include "FairMQLogger.h"
FairMQStateMachine::FairMQStateMachine() :
fState(START)
fState(IDLE)
{
}
FairMQStateMachine::RunStateMachine()
void FairMQStateMachine::ChangeState(int event)
{
void* status; //necessary for pthread_join
pthread_t state;
switch(fState) {
changeState(INIT);
case IDLE:
switch(event) {
while(fState != END) {
switch(fState) {
case INIT:
pthread_create(&state, NULL, &FairMQStateMachine::Init, this);
break;
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "IDLE --init--> INITIALIZING");
fState = INITIALIZING;
Init();
return;
case END:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "IDLE --end--> (o)");
return;
default:
return;
}
pthread_join(state, &status);
}
break;
case INITIALIZING:
switch(event) {
case SETOUTPUT:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "INITIALIZING --bind--> SETTINGOUTPUT");
fState = SETTINGOUTPUT;
InitOutput();
return;
default:
return;
}
break;
case SETTINGOUTPUT:
switch(event) {
case SETINPUT:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "SETTINGOUTPUT --connect--> SETTINGINPUT");
fState = SETTINGINPUT;
InitInput();
return;
default:
return;
}
break;
case SETTINGINPUT:
switch(event) {
case PAUSE:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "SETTINGINPUT --pause--> WAITING");
fState = WAITING;
Pause();
return;
case RUN:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "SETTINGINPUT --run--> RUNNING");
fState = RUNNING;
running_state = boost::thread(boost::bind(&FairMQStateMachine::Run, this));
return;
default:
return;
}
break;
case WAITING:
switch(event) {
case RUN:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "WAITING --run--> RUNNING");
fState = RUNNING;
running_state = boost::thread(boost::bind(&FairMQStateMachine::Run, this));
return;
case STOP:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "WAITING --stop--> IDLE");
fState = IDLE;
Shutdown();
return;
default:
return;
}
break;
case RUNNING:
switch(event) {
case PAUSE:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "RUNNING --pause--> WAITING");
fState = WAITING;
running_state.join();
return;
case STOP:
FairMQLogger::GetInstance()->Log(FairMQLogger::STATE, "RUNNING --stop--> IDLE");
fState = IDLE;
running_state.join();
Shutdown();
return;
default:
return;
}
break;
default:
break;
}//switch fState
}
void FairMQStateMachine::Init()
{
}
void FairMQStateMachine::Run()
{
}
void FairMQStateMachine::Pause()
{
}
void FairMQStateMachine::Shutdown()
{
}
void FairMQStateMachine::InitOutput()
{
}
void FairMQStateMachine::InitInput()
{
}
FairMQStateMachine::~FairMQStateMachine()
{