From: <ro...@us...> - 2013-07-16 19:15:57
|
Revision: 3111 http://sourceforge.net/p/nscldaq/code/3111 Author: ron-fox Date: 2013-07-16 19:15:53 +0000 (Tue, 16 Jul 2013) Log Message: ----------- Add support for onEnd in the event segment per request from Thomkins. Modified Paths: -------------- branches/nscldaq-10.2-001-development/configure.ac branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.am branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.in branches/nscldaq-10.2-001-development/sbs/nsclapi/Makefile.am branches/nscldaq-10.2-001-development/sbs/puretcl/Makefile.am branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.cpp branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.h branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.cpp branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.h branches/nscldaq-10.2-001-development/sbs/readout/CExperiment.cpp branches/nscldaq-10.2-001-development/sbs/readout/Makefile.am branches/nscldaq-10.2-001-development/usb/ccusb/commands/Makefile.am Modified: branches/nscldaq-10.2-001-development/configure.ac =================================================================== --- branches/nscldaq-10.2-001-development/configure.ac 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/configure.ac 2013-07-16 19:15:53 UTC (rev 3111) @@ -3,7 +3,7 @@ AC_PREREQ(2.61) -AC_INIT(nscldaq, 10.2-002, fo...@ns...) +AC_INIT(nscldaq, 10.2-003, fo...@ns...) AC_CONFIG_SRCDIR([/utilities/StringsToIntegers.h]) AC_CONFIG_HEADER([config.h]) Modified: branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.am =================================================================== --- branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.am 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.am 2013-07-16 19:15:53 UTC (rev 3111) @@ -32,9 +32,10 @@ include_HEADERS = CEventOrderClient.h fragment.h CEVBClientApp.h EVBFramework.h \ - CEVBFrameworkApp.h GetOpt.h + CEVBFrameworkApp.h GetOpt.h fragio.h + noinst_HEADERS = CFragmentHandlerCommand.h CFragmentHandler.h cmdline.h \ CInputStatsCommand.h COrdererOutput.h COutputStatsObserver.h COutputStatsCommand.h \ CDataLateStatistics.h CDLateStatsCommand.h CLateScriptObserver.h COnLateDataCommand.h \ @@ -73,7 +74,7 @@ TCL_EVB_PACKAGE_FILES=evbRdoCallouts.tcl -TCL_TEST_FILES=tclTests.tcl managerTests.test +TCL_TEST_FILES=tclTests.tcl cbmanagerTests.test cmanagerCallbacks.test EXTRA_DIST=protocol.xml api.xml orderer.xml frag2ring.xml Asserts.h \ $(TCL_PACKAGE_FILE) \ Modified: branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.in =================================================================== --- branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.in 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/daq/eventbuilder/Makefile.in 2013-07-16 19:15:53 UTC (rev 3111) @@ -309,7 +309,7 @@ FRAMEWORK_SOURCEFILES = GetOpt.cpp Main.cpp options.ggo FRAMEWORK_SKELETON = Makefile_Skeleton $(FRAMEWORK_SOURCEFILES) include_HEADERS = CEventOrderClient.h fragment.h CEVBClientApp.h EVBFramework.h \ - CEVBFrameworkApp.h GetOpt.h + CEVBFrameworkApp.h GetOpt.h fragio.h noinst_HEADERS = CFragmentHandlerCommand.h CFragmentHandler.h cmdline.h \ CInputStatsCommand.h COrdererOutput.h COutputStatsObserver.h COutputStatsCommand.h \ @@ -346,7 +346,7 @@ late.tcl outputStatistics.tcl utility.tcl TCL_EVB_PACKAGE_FILES = evbRdoCallouts.tcl -TCL_TEST_FILES = tclTests.tcl managerTests.test +TCL_TEST_FILES = tclTests.tcl cbmanagerTests.test cmanagerCallbacks.test EXTRA_DIST = protocol.xml api.xml orderer.xml frag2ring.xml Asserts.h \ $(TCL_PACKAGE_FILE) \ $(TCL_TEST_FILES) options.ggo \ Modified: branches/nscldaq-10.2-001-development/sbs/nsclapi/Makefile.am =================================================================== --- branches/nscldaq-10.2-001-development/sbs/nsclapi/Makefile.am 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/nsclapi/Makefile.am 2013-07-16 19:15:53 UTC (rev 3111) @@ -23,4 +23,4 @@ -EXTRA_DIST = sbsVmeApi.xml caennet.xml camac.xml cratelocator.xml wienercamac.xml \ No newline at end of file +EXTRA_DIST = sbsVmeApi.xml \ No newline at end of file Modified: branches/nscldaq-10.2-001-development/sbs/puretcl/Makefile.am =================================================================== --- branches/nscldaq-10.2-001-development/sbs/puretcl/Makefile.am 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/puretcl/Makefile.am 2013-07-16 19:15:53 UTC (rev 3111) @@ -1,6 +1,7 @@ EXTRA_DIST = camac.tcl \ wienercamac.tcl \ - caennet.tcl cratelocator.tcl + caennet.tcl cratelocator.tcl \ + caennet.xml camac.xml cratelocator.xml wienercamac.xml PACKAGE = @prefix@/TclLibs/sbspuretcl Modified: branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.cpp =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.cpp 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.cpp 2013-07-16 19:15:53 UTC (rev 3111) @@ -42,6 +42,7 @@ }; + /* Visitor that disables what it visits: */ @@ -53,6 +54,21 @@ } }; +/* + Visitor for on end: +*/ +class OnEndVisitorE : public CCompoundEventSegment::CVisitor +{ +private: + CExperiment* m_pExperiment; +public: + OnEndVisitorE(CExperiment* pExp) : m_pExperiment(pExp) {} + + virtual void operator()(CEventSegment* pSegment) { + pSegment->onEnd(m_pExperiment); + } +}; + /*! Initialize the event segments by visiting them with a InitializeVisitor @@ -140,8 +156,19 @@ return nRead; } +/** + * onEnd + * Visit all children with an OnEndVisitorE + * + * @param pExperiment - Pointer to the experiment object. + */ +void +CCompoundEventSegment::onEnd(CExperiment* pExperiment) +{ + OnEndVisitorE visitor(pExperiment); + visit(visitor); +} - // Type-safe adaptor to CComposite: /*! Modified: branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.h =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.h 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/CCompoundEventSegment.h 2013-07-16 19:15:53 UTC (rev 3111) @@ -41,6 +41,8 @@ #endif #endif +class CExperiment; + /*! CCompound event segment is a CEventSegment that is also a Composite. The composite class is inherited but re-exposed via a type-safe adaptor @@ -69,6 +71,7 @@ virtual void clear(); virtual void disable(); virtual size_t read(void* pBuffer, size_t maxwords); + virtual void onEnd(CExperiment* pExperiment); // Type-safe adaptor to CComposite: Modified: branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.cpp =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.cpp 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.cpp 2013-07-16 19:15:53 UTC (rev 3111) @@ -68,6 +68,23 @@ return 0; } +/** + * onEnd + * + * Concrete subclasses may override this method to provide application specific + * actions at the end of the run. This is invoked: + * - After the trigger thread has exited. + * - In the Tcl main thread by the end of run event handler. + * - Prior to generating the end of run record. + * + * @param pExperiment - Pointer to the experiment object. + */ +void +CEventSegment::onEnd(CExperiment* pExperiment) +{ + // Stub to make this not pure virtual. +} + /*! Event segments are not composites: */ Modified: branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.h =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.h 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/CEventSegment.h 2013-07-16 19:15:53 UTC (rev 3111) @@ -27,6 +27,10 @@ #endif #endif +// Forward references: + +class CExperiment; + /*! This is an abstract base class for event segments. An event segment reads out a @@ -49,6 +53,7 @@ virtual void clear(); virtual void disable(); virtual size_t read(void* pBuffer, size_t maxwords) = 0; + virtual void onEnd(CExperiment* pExperiment); virtual bool isComposite() const; Modified: branches/nscldaq-10.2-001-development/sbs/readout/CExperiment.cpp =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/CExperiment.cpp 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/CExperiment.cpp 2013-07-16 19:15:53 UTC (rev 3111) @@ -280,6 +280,7 @@ } if (m_pReadout) { m_pReadout->disable(); + m_pReadout->onEnd(this); } // @@ -583,6 +584,8 @@ CExperiment::ScheduleEndRunBuffer(bool pause) { + + sleep(1); pEndRunEvent pEvent = reinterpret_cast<pEndRunEvent>(Tcl_Alloc(sizeof(EndRunEvent))); pEvent->tclEvent.proc = CExperiment::HandleEndRunEvent; @@ -600,7 +603,7 @@ // so that the thread and its thread local storage stays alive for the duration // of the event handling...for now kludge it up this way. - usleep(1000); + sleep(1); } /*! Modified: branches/nscldaq-10.2-001-development/sbs/readout/Makefile.am =================================================================== --- branches/nscldaq-10.2-001-development/sbs/readout/Makefile.am 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/sbs/readout/Makefile.am 2013-07-16 19:15:53 UTC (rev 3111) @@ -78,7 +78,7 @@ libSBSProductionReadout_la_LDFLAGS = -version-info 1:0:0 \ - $(TCL_LDFLAGS) $(THREADLD_FLAGS) + $(TCL_LDFLAGS) $(THREADLD_FLAGS) -Wl,"-rpath=@libdir@" EXTRA_DIST = options.ggo Skeleton.cpp UserMakefile.in SBSRdoMakeIncludes.in SBSReadout.xml Modified: branches/nscldaq-10.2-001-development/usb/ccusb/commands/Makefile.am =================================================================== --- branches/nscldaq-10.2-001-development/usb/ccusb/commands/Makefile.am 2013-06-26 17:43:27 UTC (rev 3110) +++ branches/nscldaq-10.2-001-development/usb/ccusb/commands/Makefile.am 2013-07-16 19:15:53 UTC (rev 3111) @@ -16,7 +16,7 @@ -I@top_srcdir@/usb/ccusb/router \ -I@top_srcdir@/usb/ccusb/daqconfig \ -I@top_srcdir@/usb/ccusb \ - -I@top_srcdir@/usb/ccusb/ccusb \ + -I@top_srcdir@/usb/ccusb/ccusb \ -I@top_srcdir@/base/tclplus \ -I@top_srcdir@/base/exception \ -I@top_srcdir@/base/headers \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |