#include <smirtl.hxx>
class EvtBuilder: public SmiProxy
{
// Command Handler
void smiCommandHandler();
// Internal functions
void do_start();
void do_stop();
public:
// Constructor
EvtBuilder(char *domain, char *object):
SmiProxy(object)
{
attach(domain);
}
};
main(int argc, char *argv[])
{
int num = 123;
// Creatting the Proxy
EvtBuilder evtBuilder(argv[1], "EVT_BUILDER");
// Setting Volatile
evtBuilder.setVolatile();
// Setting object parameters
evtBuilder.setParameter("NEXT_RUN_NUMBER",123);
evtBuilder.setParameter("NEXT_RUN_TYPE","PHYSICS");
// Setting Object states
evtBuilder.setState("READY");
while(1)
{
pause();
}
}
void EvtBuilder::smiCommandHandler()
{
if(testAction("START"))
do_start();
else if(testAction("STOP"))
do_stop();
else if(testAction("RECOVER"))
do_stop();
}
void EvtBuilder::do_start()
{
// Getting Action Parameters
int runNumber = getParameterInt("RUN_NR");
char *runType =
getParameterString("RUN_TYPE");
// Setting Object parameters
runNumber++;
setParameter("NEXT_RUN_NUMBER",runNumber);
setParameter("NEXT_RUN_TYPE",runType);
setState("RUNNING");
}
void EvtBuilder::do_stop()
{
setState("READY");
}