source: XIOS/dev/dev_trunk_graph/src/filter/client_to_server_store_filter.cpp @ 2019

Last change on this file since 2019 was 2019, checked in by yushan, 3 years ago

Graph intermedia commit to a tmp branch

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#include "client_to_server_store_filter.hpp"
2#include "exception.hpp"
3#include "field.hpp"
4#include "utils.hpp"
5#include "context_client.hpp"
6#include "timer.hpp"
7#include "field.hpp"
8#include "grid.hpp"
9#include "workflow_graph.hpp"
10
11namespace xios
12{
13  CClientToServerStoreFilter::CClientToServerStoreFilter(CGarbageCollector& gc, CField* field, CContextClient* client)
14    : CInputPin(gc, 1)
15    , field_(field), client_(client), graphEnabled(false)
16  {
17    if (!field)
18      ERROR("CFileWriterFilter::CFileWriterFilter(CField* field)",
19            "The field cannot be null.");
20  }
21
22  void CClientToServerStoreFilter::onInputReady(std::vector<CDataPacketPtr> data)
23  {
24    buildWorkflowGraph(data);
25
26    CTimer::get("Field : send data").resume();
27    CEventClient event(field_->getType(), CField::EVENT_ID_UPDATE_DATA);
28    CMessage message ;
29    message<<field_->getId() << data[0]->timestamp ;
30    field_->getSentGrid()->getClientToServerConnector(client_)->transfer(data[0]->data, client_, event, message) ;
31    CTimer::get("Field : send data").suspend();
32   }
33 
34  void CClientToServerStoreFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data)
35  {
36    if(this->graphEnabled)
37    {
38      this->graphPackage->filterId = CWorkflowGraph::getNodeSize();
39      if(!data[0]->graphPackage) data[0]->graphPackage = new CGraphDataPackage;
40      data[0]->graphPackage->currentField = this->graphPackage->inFields[0];
41      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
42     
43      CWorkflowGraph::addNode("Client to Server Store filter", 5, true, 1, data[0]);
44     
45      CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]);
46      data[0]->graphPackage->fromFilter = this->graphPackage->filterId;
47    }
48  }
49
50  bool CClientToServerStoreFilter::mustAutoTrigger() const
51  {
52    return true;
53  }
54
55  bool CClientToServerStoreFilter::isDataExpected(const CDate& date) const
56  {
57    return true;
58  }
59} // namespace xios
Note: See TracBrowser for help on using the repository browser.