source: XIOS/dev/dev_trunk_omp/src/filter/source_filter.hpp @ 1677

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

MARK: Dynamic workflow graph developement. Branch up to date with trunk @1663.

File size: 3.1 KB
Line 
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       *
21       * \param gc the garbage collector associated with this filter
22       * \param grid the grid to which the data is attached
23       * \param compression
24       * \param mask
25       * \param offset the offset applied to the timestamp of all packets
26       * \param manualTrigger whether the output should be triggered manually
27       * \param hasMissingValue whether data has missing value
28       * \param defaultValue missing value to detect
29       * \param[in] buildWorkflowGraph indicates whether the workflow will be visualized
30       */
31      CSourceFilter(CGarbageCollector& gc, CGrid* grid,
32                    bool compression = true,
33                    bool mask = false,
34                    const CDuration offset = NoneDu, bool manualTrigger = false,
35                    bool hasMissingValue = false,
36                    double defaultValue = 0.0,
37                                        bool buildWorkflowGraph = false);
38
39      inline StdString GetName(void) {return StdString("Source filter");};
40
41      /*!
42       * Transforms the data received from the model into a packet and send it
43       * in the filter graph. The array containing the data can safely be reused
44       * immediately after this method returns.
45       *
46       * \param date the date associated to the data
47       * \param data an array containing the data
48       */
49      template <int N>
50      void streamData(CDate date, const CArray<double, N>& data);
51
52      template <int N>
53      void streamData(CDate date, const CArray<double, N>& data, const StdString field_id);
54
55      /*!
56       * Transforms the data received from the server into a packet and send it
57       * in the filter graph. The array containing the data can safely be reused
58       * immediately after this method returns.
59       *
60       * \param date the date associated to the data
61       * \param data an array containing the data
62       */
63      void streamDataFromServer(CDate date, const std::map<int, CArray<double, 1> >& data);
64
65      /*!
66       * Signals the filter graph that the end of stream was reached.
67       *
68       * \param date the date at which the end of stream occurred
69       */
70      void signalEndOfStream(CDate date);
71      std::pair<int, int> filterID;
72      std::vector<int> filterIDoutputs;
73
74    private:
75      CGrid* grid;             //!< The grid attached to the data the filter can accept
76      const CDuration offset;  //!< The offset applied to the timestamp of all packets
77      const bool hasMissingValue;
78      const double defaultValue;
79      const bool compression ; //!< indicates if data need to be compressed : on client side : true, on server side : false
80      const bool mask ;        //!< indicates whether grid mask should be applied (true for clients, false for servers)
81
82  }; // class CSourceFilter
83} // namespace xios
84
85#endif //__XIOS_CSourceFilter__
Note: See TracBrowser for help on using the repository browser.