source: XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/client_from_client_source_filter.cpp @ 2010

Last change on this file since 2010 was 1973, checked in by ymipsl, 4 years ago

Big cleaning on XIOS coupling branch
YM

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.7 KB
Line 
1#include "grid.hpp"
2#include "exception.hpp"
3#include "calendar_util.hpp"
4#include "field.hpp"
5#include "context.hpp"
6#include "grid.hpp"
7#include <limits>
8
9namespace xios
10{
11    CClientFromClientSourceFilter::CClientFromClientSourceFilter(CGarbageCollector& gc, CField* field)
12     : COutputPin(gc, true)
13    {
14      CContext* context = CContext::getCurrent();
15      field_=field ;
16      grid_= field-> getGrid();
17
18      freqOp_ = field->freq_op ;
19      lastDateReceived_ = context->getCalendar()->getInitDate();
20      offset_ = field->freq_offset ;
21    }
22
23  void CClientFromClientSourceFilter::streamData(CEventServer& event)
24  {
25    // unlikely to input from file server where data are received at ts=0
26    // for coupling, it would be after the first freq_op, because for now we don't have
27    // restart mecanism to send the value at ts=0. It must be changed in future
28 
29    if (wasDataAlreadyReceived_) lastDateReceived_ = lastDateReceived_ + freqOp_;
30    else wasDataAlreadyReceived_ = true ;
31
32    CDate date = lastDateReceived_ + offset_; // not sure is usefull check it for all filters
33
34    CDataPacketPtr packet(new CDataPacket);
35    packet->date = date;
36    packet->timestamp = date;
37    packet->status = CDataPacket::NO_ERROR;
38
39    grid_->getClientFromClientConnector()->transfer(event,packet->data) ;
40    onOutputReady(packet);
41  }
42
43  bool CClientFromClientSourceFilter::isDataLate(void)
44  {
45    bool isDataLate ;
46    CDate currentDate = CContext::getCurrent()->getCalendar()->getCurrentDate() ;
47    if (wasDataAlreadyReceived_) isDataLate = lastDateReceived_ + offset_ + freqOp_ <= currentDate ;
48    else isDataLate = CContext::getCurrent()->getCalendar()->getInitDate()+ offset_ <= currentDate ;
49  }
50
51} // namespace xios
Note: See TracBrowser for help on using the repository browser.