source: XIOS/dev/dev_olga/src/filter/file_writer_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: 1.7 KB
Line 
1#ifndef __XIOS_CFileWriterFilter__
2#define __XIOS_CFileWriterFilter__
3
4#include "input_pin.hpp"
5
6namespace xios
7{
8  class CField;
9
10  /*!
11   * A terminal filter which transmits the packets it receives to a field for writting in a file.
12   */
13  class CFileWriterFilter : public CInputPin
14  {
15    public:
16      /*!
17       * Constructs the filter (with one input slot) associated to the specified field
18       * and a garbage collector.
19       *
20       * \param gc the associated garbage collector
21       * \param field the associated field
22       */
23      CFileWriterFilter(CGarbageCollector& gc, CField* field);
24
25      inline StdString GetName(void) {return StdString("File writer filter");};
26
27      /*!
28       * Tests if the filter must auto-trigger.
29       *
30       * \return true if the filter must auto-trigger
31       */
32      bool virtual mustAutoTrigger() const;
33
34      /*!
35       * Tests whether data is expected for the specified date.
36       *
37       * \param date the date associated to the data
38       */
39      bool virtual isDataExpected(const CDate& date) const;
40
41      /*!
42       * Returns filter's id needed in case of building workflow graph
43       */
44      int getFilterId();
45
46    protected:
47      /*!
48       * Callbacks a field to write a packet to a file.
49       *
50       * \param data a vector of packets corresponding to each slot
51       */
52      void virtual onInputReady(std::vector<CDataPacketPtr> data);
53
54    private:
55      CField* field;                          //<! The associated field
56      std::map<Time, CDataPacketPtr> packets; //<! The stored packets
57      int filterId;                           //<! Filter's id needed in case of building a workflow
58
59  }; // class CFileWriterFilter
60} // namespace xios
61
62#endif //__XIOS_CFileWriterFilter__
Note: See TracBrowser for help on using the repository browser.