// $Id$ /************************************************************ * The Data Acquisition Backbone Core (DABC) * ************************************************************ * Copyright (C) 2009 - * * GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * * Planckstr. 1, 64291 Darmstadt, Germany * * Contact: http://dabc.gsi.de * ************************************************************ * This software can be used under the GPL license * * agreements as stated in LICENSE.txt file * * which is part of the distribution. * ************************************************************/ #include "dabc/MultiplexerModule.h" #include "dabc/Port.h" dabc::MultiplexerModule::MultiplexerModule(const char* name, dabc::Command cmd) : dabc::ModuleAsync(name, cmd), fQueue(100), fDataRateName() { std::string poolname = Cfg(dabc::xmlPoolName, cmd).AsStdStr("Pool"); CreatePoolHandle(poolname.c_str()); int numinp = Cfg(dabc::xmlNumInputs, cmd).AsInt(1); int numout = Cfg(dabc::xmlNumOutputs, cmd).AsInt(1); fDataRateName = Cfg("DataRateName", cmd).AsStdStr(); for (int n=0;n0)) { unsigned id = fQueue.Pop(); dabc::Buffer buf = Input(id)->Recv(); if (buf.null()) EOUT(("Fail to get buffer from input %u", id)); if (!fDataRateName.empty()) Par(fDataRateName).SetDouble(buf.GetTotalSize()/1024./1024.); SendToAllOutputs(buf); } }