mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 09:31:45 +00:00
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:
@@ -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()
|
||||
{
|
||||
|
Reference in New Issue
Block a user