Changeset 11837 for trunk/FACT++


Ignore:
Timestamp:
08/07/11 18:43:13 (13 years ago)
Author:
tbretz
Message:
Changed Dim services to ensure they send the time.
Location:
trunk/FACT++/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/DimDescriptionService.cc

    r11059 r11837  
    3737
    3838#include "dis.hxx"
     39#include "Time.h"
    3940
    4041using namespace std;
     
    118119    fData += fDescription + '\n';
    119120
     121    const Time t;
     122    fService->setTimestamp(t.Time_t(), t.ms());
    120123    fService->setData(const_cast<char*>(fData.c_str()));
    121124    fService->updateService();
     
    141144    fService=0;
    142145}
     146
     147void DimDescribedService::setTime(const Time &t)
     148{
     149    setTimestamp(t.Time_t(), t.ms());
     150}
     151
     152void DimDescribedService::setTime()
     153{
     154    setTime(Time());
     155}
     156
     157int DimDescribedService::Update(const Time &t)
     158{
     159    setTime(t);
     160    return updateService();
     161}
     162
     163int DimDescribedService::Update()
     164{
     165    return Update(Time());
     166}
     167
     168int DimDescribedService::Update(const string &data)
     169{
     170    return Update(data.data());
     171}
     172
     173int DimDescribedService::Update(const char *data)
     174{
     175    DimService::setData(const_cast<char*>(data));
     176    return Update();
     177}
  • trunk/FACT++/src/DimDescriptionService.h

    r11246 r11837  
    22#define FACT_DimDescriptionService
    33
     4#include <array>
    45#include <string>
    56#include <vector>
    67
     8class Time;
    79class DimService;
    810
     
    4547    }
    4648
    47     template<class T>
    48     void Update(const T &data)
     49    void setData(const void *ptr, size_t sz)
    4950    {
    50         //cout << "Update: " << svc.getName() << " (" << sizeof(T) << ")" << endl;
    51         setData(const_cast<T*>(&data), sizeof(T));
    52         updateService();
     51        DimService::setData(const_cast<void*>(ptr), sz);
    5352    }
    5453
    5554    template<typename T>
    56     void Update(const std::vector<T> &data)
     55    void setData(const std::vector<T> &data)
    5756    {
    58         //std::cout << "Update: " << getName() << " " << data.size() << " " << sizeof(T) << std::endl;
    59         setData(const_cast<T*>(data.data()), data.size()*sizeof(T));
    60         updateService();
     57        setData(data.data(), data.size()*sizeof(T));
     58    }
     59
     60    template<class T, size_t N>
     61    void setData(const std::array<T, N> &data)
     62    {
     63        setData(data.data(), N*sizeof(T));
     64    }
     65
     66    void setTime(const Time &t);
     67    void setTime();
     68
     69    int Update();
     70    int Update(const Time &t);
     71    int Update(const std::string &data);
     72    int Update(const char *data);
     73
     74    template<class T>
     75    int Update(const T &data)
     76    {
     77        setData(&data, sizeof(T));
     78        return Update();
     79    }
     80
     81    template<typename T>
     82    int Update(const std::vector<T> &data)
     83    {
     84        setData(data);
     85        return Update();
     86    }
     87
     88    template<class T, size_t N>
     89    int Update(const std::array<T, N> &data)
     90    {
     91        setData(data);
     92        return Update();
    6193    }
    6294
    6395    // FIXME: Implement callback with boost::function instead of Pointer to this
    64 
    6596};
    6697
  • trunk/FACT++/src/EventBuilderWrapper.h

    r11824 r11837  
    197197        uint32_t maxevt;
    198198
     199        string name;
     200
    199201        FAD::Configuration reference;
     202
     203        bool started;
    200204    };
    201205
    202206    map<uint32_t, RunDescription> fExpectedRuns;
    203207
    204     uint32_t StartNewRun(int64_t maxtime, int64_t maxevt, const FAD::Configuration &ref)
     208    uint32_t StartNewRun(int64_t maxtime, int64_t maxevt, const pair<string, FAD::Configuration> &ref)
    205209    {
    206210        if (maxtime<=0 || maxtime>24*60*60)
     
    213217            uint32_t(maxtime),
    214218            uint32_t(maxevt),
    215             ref
     219            ref.first,
     220            ref.second,
     221            false
    216222        };
    217223
    218224        // FIMXE: Maybe reset an event counter so that the mcp can count events?
     225
     226        fMsg.Info(" ==> TODO: Set a limit on the size of fExpectedRuns!");
    219227
    220228        fExpectedRuns[fRunNumber] = descr;
     
    484492    {
    485493        fMsg.Info(" ==> TODO: Update run configuration in database!");
     494        fMsg.Info(" ==> TODO: Remove run from fExpected runs in case of failure!");
     495        fMsg.Info(" ==> TODO: Write information from fTargetConfig to header!");
    486496
    487497        // Check if file already exists...
     
    563573    }
    564574
     575    virtual void CloseRun(uint32_t runid) { }
     576
    565577    int runClose(FileHandle_t handler, RUN_TAIL *tail, size_t)
    566578    {
    567579        fMsg.Info(" ==> TODO: Update run configuration in database!");
     580        fMsg.Info(" ==> TODO: Remove run from fExpected runs!");
    568581
    569582        DataProcessorImp *file = reinterpret_cast<DataProcessorImp*>(handler);
     
    581594
    582595        fLastClosed = file->GetRunId();
     596        CloseRun(fLastClosed);
    583597        UpdateRuns();
    584598
     
    710724        const FAD::EventHeader *end = reinterpret_cast<FAD::EventHeader*>(fadhd)+40;
    711725
     726        // FIMXE: Compare with target configuration
     727
    712728        for (const FAD::EventHeader *ptr=beg; ptr!=end; ptr++)
    713729        {
     
    813829    bool IsRunStarted() const
    814830    {
    815         return fExpectedRuns.find(fRunNumber-1)==fExpectedRuns.end();
     831        const map<uint32_t,RunDescription>::const_iterator it = fExpectedRuns.find(fRunNumber-1);
     832        return it==fExpectedRuns.end();// ? true : it->second.started;
    816833    }
    817834
     
    834851        CloseRunFile(runnr, time(NULL)+it->second.maxtime, it->second.maxevt);
    835852        // return: 0=close scheduled / >0 already closed / <0 does not exist
     853
     854        // FIXME: Move configuration from expected runs to runs which will soon
     855        //        be opened/closed
     856
     857        it->second.started = true;
    836858
    837859        fExpectedRuns.erase(it);
     
    10561078//        svc.setQuality(vec[40]<=vec[41]);
    10571079        svc.setData(const_cast<T*>(data.data()), sizeof(T)*n);
    1058         svc.updateService();
     1080        svc.Update();
    10591081    }
    10601082
  • trunk/FACT++/src/MessageDim.cc

    r11395 r11837  
    9191    // We have to use setData to make sure the DimService will
    9292    // hold a local copy of the data.
    93     setTimestamp(t.Time_t(), t.ms());
    94     setData(const_cast<char*>(txt.c_str()));
    9593    setQuality(qos);
    9694
    97     const int rc = updateService();
     95    const int rc = DimDescribedService::Update(txt);
    9896
    9997    dim_unlock();
  • trunk/FACT++/src/StateMachineDim.cc

    r11479 r11837  
    112112        return;
    113113
    114     fDescriptionStates.setData(const_cast<char*>((str0+str1+doc+'\n').c_str()));
    115     fDescriptionStates.updateService();
     114    fDescriptionStates.Update(str0+str1+doc+'\n');
    116115}
    117116
     
    131130
    132131    fSrvState.setQuality(state);
    133     fSrvState.setData(const_cast<char*>(msg.c_str()));
    134     fSrvState.updateService();
     132    fSrvState.Update(msg);
    135133
    136134    return msg;
    137135}
    138136
     137// --------------------------------------------------------------------------
     138//
     139//! In the case of dim this secures HandleEvent against dim's commandHandler
     140//!
    139141void StateMachineDim::Lock()
    140142{
    141 //    dim_lock();
    142 }
    143 
     143    dim_lock();
     144}
     145
     146// --------------------------------------------------------------------------
     147//
     148//! In the case of dim this secures HandleEvent against dim's commandHandler
     149//!
    144150void StateMachineDim::UnLock()
    145151{
    146 //    dim_unlock();
     152    dim_unlock();
    147153}
    148154
  • trunk/FACT++/src/datalogger.cc

    r11733 r11837  
    17571757    service->setData(reinterpret_cast<void*>(&fToDim), name.size()+1+sizeof(uint32_t));
    17581758    service->setQuality(0);
    1759     service->updateService();
     1759    service->Update();
    17601760}
    17611761// --------------------------------------------------------------------------
     
    18621862        NotifyOpenedFile(baseFileName, 7, fOpenedNightlyFiles);
    18631863        if (fNumSubAndFitsIsOn)
    1864             fNumSubAndFits->updateService();
     1864            fNumSubAndFits->Update();
    18651865    }
    18661866    //do the actual file open
     
    19301930
    19311931        if (fNumSubAndFitsIsOn)
    1932             fNumSubAndFits->updateService();
     1932            fNumSubAndFits->Update();
    19331933    }
    19341934}   
     
    22192219    NotifyOpenedFile("", 0, fOpenedRunFiles);
    22202220    if (fNumSubAndFitsIsOn)
    2221         fNumSubAndFits->updateService();
     2221        fNumSubAndFits->Update();
    22222222
    22232223    while (fRunNumber.size() > 0)
     
    22642264        NotifyOpenedFile("", 0, fOpenedNightlyFiles);
    22652265        if (fNumSubAndFitsIsOn)
    2266             fNumSubAndFits->updateService();
     2266            fNumSubAndFits->Update();
    22672267    }
    22682268#ifdef HAVE_FITS
  • trunk/FACT++/src/drivectrl.cc

    r11578 r11837  
    535535        void Update(DimDescribedService &svc, const Time &t, const array<double, N> &arr) const
    536536    {
    537         svc.setTimestamp(int(t.UnixTime()), t.ms());
    538         svc.setData(const_cast<double*>(arr.data()), arr.size()*sizeof(double));
    539         svc.updateService();
     537        svc.setData(arr);
     538        svc.Update(t);
    540539    }
    541540
Note: See TracChangeset for help on using the changeset viewer.