~awuerl/blitzortung-tracker/0.9

« back to all changes in this revision

Viewing changes to source/lib/data/EventsFile.cc

  • Committer: Andreas Wuerl
  • Date: 2012-03-08 22:02:31 UTC
  • Revision ID: andi@debian-20120308220231-8dc444kpv5b4s72p
backported most of the 1.0 features

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
    }
68
68
 
69
69
    void EventsFile::write(const Events& events) {
70
 
      writeEvents(name_, events); 
 
70
      header_.set(events);
 
71
      writeEvents(events); 
71
72
    }
72
73
 
73
74
    void EventsFile::append(const Events& events) {
74
 
 
75
75
      header_.set(events);
76
76
 
77
77
      if (header_.fileExists(name_)) {
78
 
        writeEvents(name_, events, true);
 
78
        writeEvents(events, true);
79
79
      } else {
80
 
        writeEvents(name_, events);
 
80
        writeEvents(events);
81
81
      }
82
82
    }
83
83
    
84
 
    void EventsFile::writeEvents(const std::string& name, const Events& events, bool append) {
 
84
    void EventsFile::writeEvents(const Events& events, bool append) {
85
85
 
86
86
      if (events.size() > 0) {
87
87
 
88
88
        if (logger_.isDebugEnabled())
89
 
          logger_.debugStream() << "writeEvents() " << name << " append: " << append;
90
 
 
91
 
        header_.set(events);
92
 
 
93
 
        setFilename(name);
 
89
          logger_.debugStream() << "writeEvents() " << name_ << " append: " << append;
 
90
 
 
91
        if (events.getDataFormat() != events.front().getWaveform().getArray().getFormat()) {
 
92
          std::cout << std::endl << "  " << events.getDataFormat() << " vs. " << events.front().getWaveform().getArray().getFormat() << std::endl;
 
93
          throw exception::Base("data::EventsFile() writeEvents() events format mismatch");
 
94
        }
 
95
 
 
96
        setFilename(name_);
94
97
 
95
98
        if (append) {
96
99
          EventsHeader header;
109
112
        
110
113
        open(std::ios::out | std::ios::binary | std::ios::app);
111
114
 
112
 
        if (logger_.isDebugEnabled())
 
115
        if (logger_.isDebugEnabled()) {
113
116
          logger_.debugStream() << "writeEvents() write " << events.size() << " events (" << events.front().getSize() << " bytes per event)";
 
117
          logger_.debugStream() << "writeEvents() wfm size " << *events.getDataFormat() << " " << Waveform::GetSize(*events.front().getWaveform().getArray().getFormat());
 
118
          logger_.debugStream() << "writeEvents() format " << *events.getDataFormat() << " " << &events.getDataFormat();
 
119
        }
114
120
 
115
121
        unsigned int position = fstream_.tellg();
116
122
 
117
123
        for (Event::CVI event = events.begin(); event != events.end(); event++) {
118
124
          event->toStream(fstream_);
119
125
          if (logger_.isDebugEnabled()) {
120
 
            logger_.debugStream() << "writeEvents()   position " << fstream_.tellg() << " delta " << (int(fstream_.tellg()) - position);
 
126
            logger_.debugStream() << "writeEvents()   position " << position << " delta " << (int(fstream_.tellg()) - position);
121
127
            position = fstream_.tellg();
122
128
          }
123
129
 
205
211
 
206
212
      Events::AP events(readInternal(startIndex, numberOfEvents));
207
213
 
 
214
      logger_.debugStream() << "read() events format " << events->getDataFormat() << " " << &events->getDataFormat();
 
215
 
208
216
      close();
209
217
 
210
218
      return events;
216
224
      
217
225
      seekEvent(startIndex);
218
226
 
219
 
      for(unsigned int i=0; i < (unsigned int)(numberOfEvents); i++) {
220
 
        Event::AP event(header_.createEvent(fstream_));
221
 
 
222
 
        events->add(event);
 
227
      for (unsigned int i=0; i < (unsigned int)(numberOfEvents); i++) {
 
228
        events->add(header_.createEvent(fstream_));
223
229
      }
224
230
 
 
231
      logger_.debugStream() << "readInternal() events with format " << events->getDataFormat() << " " << &events->getDataFormat();
 
232
 
 
233
      for (Event::VI event=events->begin(); event != events->end(); event++)
 
234
        logger_.debugStream() << "  " << event->getWaveform().getArray().getFormat() << &event->getWaveform().getArray().getFormat();
 
235
 
225
236
      return events;
226
237
    }
227
238
  }