source: XIOS/dev/dev_olga/src/filter/source_filter.hpp @ 1653

Last change on this file since 1653 was 1653, checked in by oabramkina, 5 years ago

Developments for visualization of XIOS workflow.

Branch is spawned from trunk r1649.

Boost library is used for producing Graphviz DOT files. Current results: a DOT file representing a static workflow. For a complete proof of concept, DOT files for each timestamp should be generated. The necessary information has been collected by XIOS, it only requires rearranging the information for graphing (changes in classes CWorkflowGraph and CGraphviz).

File size: 2.9 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      /*!
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       *
57       * \param date the date associated to the data
58       * \param data an array containing the data
59       */
60      void streamDataFromServer(CDate date, const std::map<int, CArray<double, 1> >& data);
61
62      /*!
63       * Signals the filter graph that the end of stream was reached.
64       *
65       * \param date the date at which the end of stream occurred
66       */
67      void signalEndOfStream(CDate date);
68
69    private:
70      CGrid* grid;             //!< The grid attached to the data the filter can accept
71      const CDuration offset;  //!< The offset applied to the timestamp of all packets
72      const bool hasMissingValue;
73      const double defaultValue;
74      const bool compression ; //!< indicates if data need to be compressed : on client side : true, on server side : false
75      const bool mask ;        //!< indicates whether grid mask should be applied (true for clients, false for servers)
76  }; // class CSourceFilter
77} // namespace xios
78
79#endif //__XIOS_CSourceFilter__
Note: See TracBrowser for help on using the repository browser.