Changeset 11359


Ignore:
Timestamp:
07/12/11 13:12:01 (13 years ago)
Author:
tbretz
Message:
Implemented a solution to solve a multi-threading issue in factOut; added the possibility to allow output of kDebug messages coming from the event builder.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/EventBuilderWrapper.h

    r11350 r11359  
    197197
    198198public:
    199     DataFileRaw(uint32_t id) : DataFileImp(id)  { }
     199    DataFileRaw(uint32_t id) : DataFileImp(id), fPosTail(0) { }
    200200    ~DataFileRaw() { Close(); }
    201201
     
    751751    bool fDebugStream;
    752752    bool fDebugRead;
     753    bool fDebugLog;
    753754
    754755    int Write(const Time &time, const std::string &txt, int qos)
     
    798799        fDimStatistics1 ("FAD_CONTROL/STATISTICS1",      "I:3;I:2;X:4;I:3;I:1;I:2;C:40;I:40;I:40;X:40", ""),
    799800        fDimStatistics2 ("FAD_CONTROL/STATISTICS2",      "I:1;I:280;X:40;I:40;I:4;I:4;I:2;I:2;I:3;C:40",  ""),
    800         fDebugStream(false), fDebugRead(false)
     801        fDebugStream(false), fDebugRead(false), fDebugLog(false)
    801802    {
    802803        if (This)
     
    851852            return;
    852853        }
     854
     855        fLastMessage.clear();
    853856
    854857        for (size_t i=0; i<40; i++)
     
    974977
    975978    void SetOutputFormat(FileFormat_t f) { fFileFormat = f; }
     979
     980    void SetDebugLog(bool b) { fDebugLog = b; }
    976981
    977982    void SetDebugStream(bool b)
     
    13321337    }
    13331338
     1339    map<boost::thread::id, string> fLastMessage;
     1340
    13341341    void factOut(int severity, int err, const char *message)
    13351342    {
    1336         // FIXME: Make the output to the console stream thread-safe
     1343        if (!fDebugLog && severity==99)
     1344            return;
     1345
    13371346        ostringstream str;
     1347        //str << boost::this_thread::get_id() << " ";
    13381348        str << "EventBuilder(";
    13391349        if (err<0)
     
    13431353        str << "): " << message;
    13441354
    1345         static string last;
    1346         if (str.str()==last)
     1355        string &old = fLastMessage[boost::this_thread::get_id()];
     1356
     1357        if (str.str()==old)
    13471358            return;
    1348 
    1349         last = str.str();
     1359        old = str.str();
     1360
    13501361        fMsg.Update(str, severity);
    13511362    }
     
    17051716    void factOut(int severity, int err, const char *message)
    17061717    {
    1707         if (severity!=99)
    1708             EventBuilderWrapper::This->factOut(severity, err, message);
     1718        EventBuilderWrapper::This->factOut(severity, err, message);
    17091719    }
    17101720
Note: See TracChangeset for help on using the changeset viewer.