| File: | daq/storage/modules/src/SeqRootMergerModule.cc |
| Warning: | line 55, column 36 Potential leak of memory pointed to by 'evtbuf' |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /************************************************************************** | |||
| 2 | * basf2 (Belle II Analysis Software Framework) * | |||
| 3 | * Author: The Belle II Collaboration * | |||
| 4 | * * | |||
| 5 | * See git log for contributors and copyright holders. * | |||
| 6 | * This file is licensed under LGPL-3.0, see LICENSE.md. * | |||
| 7 | **************************************************************************/ | |||
| 8 | ||||
| 9 | #include <daq/storage/modules/SeqRootMergerModule.h> | |||
| 10 | ||||
| 11 | #include <framework/core/Environment.h> | |||
| 12 | ||||
| 13 | #include <cstdlib> | |||
| 14 | #include <cstdio> | |||
| 15 | #include <fcntl.h> | |||
| 16 | ||||
| 17 | using namespace Belle2; | |||
| 18 | ||||
| 19 | //----------------------------------------------------------------- | |||
| 20 | // Register the Module | |||
| 21 | //----------------------------------------------------------------- | |||
| 22 | REG_MODULE(SeqRootMerger)namespace { struct ModuleProxySeqRootMerger: public ModuleProxyBase { ModuleProxySeqRootMerger(): ModuleProxyBase("SeqRootMerger" , "" "daq") {} virtual ::Belle2::Module* createInstance() const override final { return new SeqRootMergerModule(); } } proxySeqRootMergerModule ; }; | |||
| 23 | ||||
| 24 | //----------------------------------------------------------------- | |||
| 25 | // Implementation | |||
| 26 | //----------------------------------------------------------------- | |||
| 27 | ||||
| 28 | SeqRootMergerModule::SeqRootMergerModule() : Module() | |||
| 29 | { | |||
| 30 | B2INFO("SeqRootMerger: Constructor done.")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "SeqRootMerger: Constructor done."; Belle2 ::LogSystem::Instance().sendMessage(Belle2::LogMessage(Belle2 ::LogConfig::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__ , "daq/storage/modules/src/SeqRootMergerModule.cc", 30, 0)); } ; } } while(false); | |||
| 31 | } | |||
| 32 | ||||
| 33 | ||||
| 34 | SeqRootMergerModule::~SeqRootMergerModule() | |||
| 35 | { | |||
| 36 | ||||
| 37 | } | |||
| 38 | ||||
| 39 | void SeqRootMergerModule::initialize() | |||
| 40 | { | |||
| 41 | const std::vector<std::string>& inputFiles = Environment::Instance().getInputFilesOverride(); | |||
| 42 | for (size_t i = 0; i < inputFiles.size(); i++) { | |||
| 43 | m_file.push_back(new SeqFile(inputFiles[i].c_str(), "r")); | |||
| 44 | } | |||
| 45 | m_streamer = new DataStoreStreamer(); | |||
| 46 | readFile(); | |||
| 47 | } | |||
| 48 | ||||
| 49 | int SeqRootMergerModule::readFile() | |||
| 50 | { | |||
| 51 | B2INFO("SeqRootMerger: initialize() started.")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "SeqRootMerger: initialize() started."; Belle2 ::LogSystem::Instance().sendMessage(Belle2::LogMessage(Belle2 ::LogConfig::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__ , "daq/storage/modules/src/SeqRootMergerModule.cc", 51, 0)); } ; } } while(false); | |||
| 52 | ||||
| 53 | char* evtbuf = new char[EvtMessage::c_MaxEventSize]; | |||
| 54 | while (true) { | |||
| 55 | if (m_file.size() == 0) return 0; | |||
| ||||
| 56 | int i = rand() % m_file.size(); | |||
| 57 | int size = m_file[i]->read(evtbuf, EvtMessage::c_MaxEventSize); | |||
| 58 | if (size > 0) { | |||
| 59 | EvtMessage* evtmsg = new EvtMessage(evtbuf); | |||
| 60 | m_streamer->restoreDataStore(evtmsg); | |||
| 61 | if (evtmsg->type() == MSG_STREAMERINFO) { | |||
| 62 | B2INFO("Reading StreamerInfo")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "Reading StreamerInfo"; Belle2::LogSystem ::Instance().sendMessage(Belle2::LogMessage(Belle2::LogConfig ::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__, "daq/storage/modules/src/SeqRootMergerModule.cc" , 62, 0)); }; } } while(false); | |||
| 63 | delete evtmsg; | |||
| 64 | } else { | |||
| 65 | delete evtmsg; | |||
| 66 | break; | |||
| 67 | } | |||
| 68 | } else { | |||
| 69 | m_file.erase(m_file.begin() + i); | |||
| 70 | } | |||
| 71 | } | |||
| 72 | delete [] evtbuf; | |||
| 73 | ||||
| 74 | return m_file.size(); | |||
| 75 | } | |||
| 76 | ||||
| 77 | void SeqRootMergerModule::event() | |||
| 78 | { | |||
| 79 | readFile(); | |||
| ||||
| 80 | } | |||
| 81 | ||||
| 82 | void SeqRootMergerModule::beginRun() | |||
| 83 | { | |||
| 84 | B2INFO("SeqRootMerger: beginRun called.")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "SeqRootMerger: beginRun called."; Belle2 ::LogSystem::Instance().sendMessage(Belle2::LogMessage(Belle2 ::LogConfig::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__ , "daq/storage/modules/src/SeqRootMergerModule.cc", 84, 0)); } ; } } while(false); | |||
| 85 | } | |||
| 86 | ||||
| 87 | void SeqRootMergerModule::endRun() | |||
| 88 | { | |||
| 89 | B2INFO("SeqRootMerger: endRun done.")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "SeqRootMerger: endRun done."; Belle2::LogSystem ::Instance().sendMessage(Belle2::LogMessage(Belle2::LogConfig ::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__, "daq/storage/modules/src/SeqRootMergerModule.cc" , 89, 0)); }; } } while(false); | |||
| 90 | } | |||
| 91 | ||||
| 92 | ||||
| 93 | void SeqRootMergerModule::terminate() | |||
| 94 | { | |||
| 95 | B2INFO("SeqRootMerger: terminate called")do { if (Belle2::LogSystem::Instance().isLevelEnabled(Belle2:: LogConfig::c_Info, 0, "daq")) { { LogVariableStream varStream ; varStream << "SeqRootMerger: terminate called"; Belle2 ::LogSystem::Instance().sendMessage(Belle2::LogMessage(Belle2 ::LogConfig::c_Info, std::move(varStream), "daq", __PRETTY_FUNCTION__ , "daq/storage/modules/src/SeqRootMergerModule.cc", 95, 0)); } ; } } while(false); | |||
| 96 | } | |||
| 97 | ||||
| 98 |