source: XIOS/trunk/src/filter/source_filter.hpp @ 1934

Last change on this file since 1934 was 1704, checked in by yushan, 5 years ago

Introducing the new graph functionality. Attribute build_workflow_graph=.TRUE. is used in the field definition section in the xml file to enable the workflow graph of the field and other fields referecing to it. A more detailed document will be available soon on the graph fuctionality.

File size: 2.9 KB
RevLine 
[638]1#ifndef __XIOS_CSourceFilter__
2#define __XIOS_CSourceFilter__
3
4#include <map>
5
6#include "output_pin.hpp"
7
8namespace xios
9{
10  class CGrid;
11
12  /*!
13   * A source filter is the entry point of the data in the graph of filters.
14   */
15  class CSourceFilter : public COutputPin
16  {
17    public:
18      /*!
19       * Constructs a source filter accepting data attached to the specified grid.
20       *
[1021]21       * \param gc the garbage collector associated with this filter
[638]22       * \param grid the grid to which the data is attached
[1637]23       * \param compression
24       * \param mask
[756]25       * \param offset the offset applied to the timestamp of all packets
[1021]26       * \param manualTrigger whether the output should be triggered manually
[1158]27       * \param hasMissingValue whether data has missing value
28       * \param defaultValue missing value to detect
[638]29       */
[1021]30      CSourceFilter(CGarbageCollector& gc, CGrid* grid,
[1637]31                    bool compression = true,
32                    bool mask = false,
[1158]33                    const CDuration offset = NoneDu, bool manualTrigger = false,
34                    bool hasMissingValue = false,
35                    double defaultValue = 0.0);
[638]36
[1704]37      inline StdString GetName(void) {return StdString("Source filter");};
38
[638]39      /*!
40       * Transforms the data received from the model into a packet and send it
41       * in the filter graph. The array containing the data can safely be reused
42       * immediately after this method returns.
43       *
[643]44       * \param date the date associated to the data
[638]45       * \param data an array containing the data
46       */
47      template <int N>
[643]48      void streamData(CDate date, const CArray<double, N>& data);
[638]49
[1704]50      void virtual buildGraph(CDataPacketPtr packet);
51
[638]52      /*!
53       * Transforms the data received from the server into a packet and send it
54       * in the filter graph. The array containing the data can safely be reused
55       * immediately after this method returns.
56       *
[643]57       * \param date the date associated to the data
[638]58       * \param data an array containing the data
59       */
[643]60      void streamDataFromServer(CDate date, const std::map<int, CArray<double, 1> >& data);
[638]61
62      /*!
63       * Signals the filter graph that the end of stream was reached.
64       *
[643]65       * \param date the date at which the end of stream occurred
[638]66       */
[643]67      void signalEndOfStream(CDate date);
[1704]68      int filterID;
[638]69
70    private:
[1637]71      CGrid* grid;             //!< The grid attached to the data the filter can accept
72      const CDuration offset;  //!< The offset applied to the timestamp of all packets
[1201]73      const bool hasMissingValue;
74      const double defaultValue;
[1637]75      const bool compression ; //!< indicates if data need to be compressed : on client side : true, on server side : false
76      const bool mask ;        //!< indicates whether grid mask should be applied (true for clients, false for servers)
[638]77  }; // class CSourceFilter
78} // namespace xios
79
80#endif //__XIOS_CSourceFilter__
Note: See TracBrowser for help on using the repository browser.