Changeset 10575 for trunk/FACT++/src
- Timestamp:
- 05/04/11 16:01:52 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/FACT++/src/dataLogger.cc
r10570 r10575 481 481 #endif 482 482 483 484 AddStateName(kSM_NightlyOpen, "NightlyFileOpen", "Add description here");485 AddStateName(kSM_WaitingRun, "WaitForRun", "Add description here");486 AddStateName(kSM_Logging, "Logging", "Add description here");487 AddStateName(kSM_BadNightlyConfig, "ErrNightlyFolder", "Add description here");488 AddStateName(kSM_BadRunConfig, "ErrRunFolder", "Add description here");489 490 /*Add the possible transitions for this machine*/491 AddTransition(kSM_NightlyOpen, fTransStart, kSM_Ready, kSM_BadNightlyConfig)483 //Give a name to this machine's specific states 484 AddStateName(kSM_NightlyOpen, "NightlyFileOpen", "The summary files for the night are open."); 485 AddStateName(kSM_WaitingRun, "WaitForRun", "The summary files for the night are open and we wait for a run to be started."); 486 AddStateName(kSM_Logging, "Logging", "The summary files for the night and the files for a single run are open."); 487 AddStateName(kSM_BadNightlyConfig, "ErrNightlyFolder", "The folder for the nighly summary files is invalid."); 488 AddStateName(kSM_BadRunConfig, "ErrRunFolder", "The folder for the run files is invalid."); 489 490 /*Add the possible transitions for this machine*/ 491 AddTransition(kSM_NightlyOpen, fTransStart, kSM_Ready, kSM_BadNightlyConfig) 492 492 (boost::bind(&DataLogger::StartPlease, this)) 493 ("start the Nightly logging. Nightly file location must be specified already"); 494 495 AddTransition(kSM_Ready, fTransStop, kSM_NightlyOpen, kSM_WaitingRun, kSM_Logging) 496 (boost::bind(&DataLogger::GoToReadyPlease, this)) 497 ("stop the data logging"); 498 499 AddTransition(kSM_Logging, fTransStartRun, kSM_WaitingRun, kSM_BadRunConfig) 500 (boost::bind(&DataLogger::StartRunPlease, this)) 501 ("start the run logging. run file location must be specified already."); 502 503 AddTransition(kSM_WaitingRun, fTransStopRun, kSM_Logging) 504 (boost::bind(&DataLogger::StopRunPlease, this)) 505 (""); 506 507 AddTransition(kSM_Ready, fTransReset, kSM_Error, kSM_BadNightlyConfig, kSM_BadRunConfig, kSM_Error) 508 (boost::bind(&DataLogger::GoToReadyPlease, this)) 509 ("transition to exit error states. dunno if required or not, would close the Nightly file if already openned."); 510 511 AddTransition(kSM_WaitingRun, fTransWait, kSM_NightlyOpen) 512 (boost::bind(&DataLogger::NightlyToWaitRunPlease, this)); 513 514 /*Add the possible configurations for this machine*/ 515 AddConfiguration(fConfigDay, "C", kSM_Ready, kSM_BadNightlyConfig) 516 (boost::bind(&DataLogger::ConfigureNightlyFileName, this, _1)) 517 ("configure the Nightly file location. cannot be done before the file is actually opened"); 518 519 AddConfiguration(fConfigRun, "C", kSM_Ready, kSM_BadNightlyConfig, kSM_NightlyOpen, kSM_WaitingRun, kSM_BadRunConfig) 520 (boost::bind(&DataLogger::ConfigureRunFileName, this, _1)) 521 ("configure the run file location. cannot be done before the file is actually opened, and not in a dailly related error."); 522 AddConfiguration(fConfigRunNumber, "I", kSM_Ready, kSM_BadNightlyConfig, kSM_NightlyOpen, kSM_WaitingRun, kSM_BadRunConfig) 523 (boost::bind(&DataLogger::ConfigureRunNumber, this, _1)) 524 ("configure the run number. cannot be done in logging state"); 525 //Provide a logging command 526 //I get the feeling that I should be going through the EventImp 527 //instead of DimCommand directly, mainly because the commandHandler 528 //is already done in StateMachineImp.cc 529 //Thus I'll simply add a configuration, which I will treat as the logging command 530 AddConfiguration(fConfigLog, "C", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_BadRunConfig) 531 (boost::bind(&DataLogger::LogMessagePlease, this, _1)); 493 ("Start the nightly logging. Nightly file location must be specified already"); 494 495 AddTransition(kSM_Ready, fTransStop, kSM_NightlyOpen, kSM_WaitingRun, kSM_Logging) 496 (boost::bind(&DataLogger::GoToReadyPlease, this)) 497 ("Stop all data logging, close all files."); 498 499 AddTransition(kSM_Logging, fTransStartRun, kSM_WaitingRun, kSM_BadRunConfig) 500 (boost::bind(&DataLogger::StartRunPlease, this)) 501 ("Start the run logging. Run file location must be specified already."); 502 503 AddTransition(kSM_WaitingRun, fTransStopRun, kSM_Logging) 504 (boost::bind(&DataLogger::StopRunPlease, this)) 505 ("Wait for a run to be started, open run-files as soon as a run number arrives."); 506 507 AddTransition(kSM_Ready, fTransReset, kSM_Error, kSM_BadNightlyConfig, kSM_BadRunConfig, kSM_Error) 508 (boost::bind(&DataLogger::GoToReadyPlease, this)) 509 ("Transition to exit error states. Closes the nightly file if already opened."); 510 511 AddTransition(kSM_WaitingRun, fTransWait, kSM_NightlyOpen) 512 (boost::bind(&DataLogger::NightlyToWaitRunPlease, this)); 513 514 /*Add the possible configurations for this machine*/ 515 AddConfiguration(fConfigDay, "C", kSM_Ready, kSM_BadNightlyConfig) 516 (boost::bind(&DataLogger::ConfigureNightlyFileName, this, _1)) 517 ("Configure the folder for the nightly files." 518 "|Path[string]:Absolute or relative path name where the nightly files should be stored."); 519 520 AddConfiguration(fConfigRun, "C", kSM_Ready, kSM_BadNightlyConfig, kSM_NightlyOpen, kSM_WaitingRun, kSM_BadRunConfig) 521 (boost::bind(&DataLogger::ConfigureRunFileName, this, _1)) 522 ("Configure the folder for the run files." 523 "|Path[string]:Absolute or relative path name where the run files should be stored."); 524 525 AddConfiguration(fConfigRunNumber, "I", kSM_Ready, kSM_BadNightlyConfig, kSM_NightlyOpen, kSM_WaitingRun, kSM_BadRunConfig) 526 (boost::bind(&DataLogger::ConfigureRunNumber, this, _1)) 527 ("configure the run number. cannot be done in logging state"); 528 529 //Provide a logging command 530 //I get the feeling that I should be going through the EventImp 531 //instead of DimCommand directly, mainly because the commandHandler 532 //is already done in StateMachineImp.cc 533 //Thus I'll simply add a configuration, which I will treat as the logging command 534 AddConfiguration(fConfigLog, "C", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_BadRunConfig) 535 (boost::bind(&DataLogger::LogMessagePlease, this, _1)) 536 ("Log a single message to the log-files." 537 "|Message[string]:Message to be logged."); 532 538 533 539 //Provide a print command 534 AddConfiguration(fPrintCommand, "", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_BadNightlyConfig, kSM_BadRunConfig) 535 (boost::bind(&DataLogger::PrintStatePlease, this, _1)); 536 540 AddConfiguration(fPrintCommand, kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_BadNightlyConfig, kSM_BadRunConfig) 541 (boost::bind(&DataLogger::PrintStatePlease, this, _1)) 542 ("Print information about the internal status of the data logger."); 543 537 544 fServiceList.SetHandler(this); 538 545 CheckForServicesUpdate(); 539 546 540 547 //start the monitoring service 541 548 fContinueMonitoring = true; … … 546 553 fToDim.code = 0; 547 554 fToDim.fileName[0] = '\0'; 548 fOpenedNightlyFiles = new DimDescribedService((GetName() + "/FILENAME_NIGHTLY").c_str(), "I:1;C", &fToDim, sizeof(int)+1, "Add description here");//"i:1;C", static_cast<void*>(fDimBuffer), 256); 549 fOpenedRunFiles = new DimDescribedService((GetName() + "/FILENAME_RUN").c_str(), "I:1;C", &fToDim, sizeof(int)+1, "Add description here"); 550 fNumSubAndFitsData.numSubscriptions = 0; 555 556 fOpenedNightlyFiles = new DimDescribedService((GetName() + "/FILENAME_NIGHTLY").c_str(), "I:1;C", &fToDim, sizeof(int)+1, 557 "Path and base name which is used to compile the filenames for the nightly files." 558 "|Type[int]:type of open files (1=log, 2=rep, 4=fits)" 559 "|Name[string]:path and base file name"); 560 561 fOpenedRunFiles = new DimDescribedService((GetName() + "/FILENAME_RUN").c_str(), "I:1;C", &fToDim, sizeof(int)+1, 562 "Path and base name which is used to compile the filenames for the run files." 563 "|Type[int]:type of open files (1=log, 2=rep, 4=fits)" 564 "|Name[string]:path and base file name"); 565 566 fNumSubAndFitsData.numSubscriptions = 0; 551 567 fNumSubAndFitsData.numOpenFits = 0; 552 fNumSubAndFits = new DimDescribedService((GetName() + "/NUM_SUBS").c_str(), "I:2", &fNumSubAndFitsData, sizeof(NumSubAndFitsType), "Add description here"); 553 //black/white list 568 fNumSubAndFits = new DimDescribedService((GetName() + "/NUM_SUBS").c_str(), "I:2", &fNumSubAndFitsData, sizeof(NumSubAndFitsType), 569 "Shows number of services to which the data logger is currently subscribed and the total number of open files." 570 "|Scubscriptions[int]:number of dim services to which the data logger is currently subscribed." 571 "|NumOpenFiles[int]:number of files currently open by the data logger"); 572 573 //black/white list 554 574 fIsBlackList = true; 555 575 fGreyList.clear(); … … 560 580 fOpenedFilesIsOn = true; 561 581 fNumSubAndFitsIsOn = true; 562 //provide services control commands 582 583 //provide services control commands 563 584 AddConfiguration(fDebugOnOff, "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready) 564 (boost::bind(&DataLogger::SetDebugOnOff, this, _1)); 565 AddConfiguration(fStatsPeriod, "F", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready) 566 (boost::bind(&DataLogger::SetStatsPeriod, this, _1)); 585 (boost::bind(&DataLogger::SetDebugOnOff, this, _1)) 586 ("Switch debug mode on off. Debug mode prints ifnormation about every service written to a file." 587 "|Enable[bool]:Enable of disable debuig mode (yes/no)."); 588 589 AddConfiguration(fStatsPeriod, "F", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready) 590 (boost::bind(&DataLogger::SetStatsPeriod, this, _1)) 591 ("Interval in which the data-logger statitistics service (STATS) is updated." 592 "Interval[s]:Floating point value in seconds."); 593 567 594 AddConfiguration(fStartStopOpenedFiles, "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready) 568 (boost::bind(&DataLogger::SetOpenedFilesOnOff ,this, _1)); 595 (boost::bind(&DataLogger::SetOpenedFilesOnOff ,this, _1)) 596 ("Can be used to switch the service off which distributes information about the open files."); 597 569 598 AddConfiguration(fStartStopNumSubsAndFits, "B:1", kSM_NightlyOpen, kSM_Logging, kSM_WaitingRun, kSM_Ready) 570 (boost::bind(&DataLogger::SetNumSubsAndFitsOnOff, this, _1)); 599 (boost::bind(&DataLogger::SetNumSubsAndFitsOnOff, this, _1)) 600 ("Can be used to switch the service off which distributes information about the number of subscriptions and open files."); 601 571 602 fDestructing = false; 572 603 if(fDebugIsOn) 573 604 { 574 Debug("DataLogger Init Done."); 575 605 Debug("DataLogger Init Done."); 606 } 576 607 } 577 608 // --------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.