AnCH Framework 0.1
Another C++ Hack Framework
Loading...
Searching...
No Matches
flux.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2012 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include <functional>
23#include <future>
24
25
26namespace anch {
27
49 template<typename... T>
50 class Flux {
51
52 // Attributes +
53 private:
55 bool _con;
56
58 std::promise<std::function<void(const T&...)>> _pcon;
59
61 std::shared_future<std::function<void(const T&...)>> _consumer;
62
64 bool _fin;
65
67 std::promise<std::function<void()>> _pfin;
68
70 std::shared_future<std::function<void()>> _finalizer;
71
73 bool _err;
74
76 std::promise<std::function<void()>> _perr;
77
79 std::shared_future<std::function<void()>> _errorHandler;
80 // Attributes -
81
82 // Constructors +
83 public:
88 // Constructors -
89
90 // Destructor +
91 public:
95 virtual ~Flux();
96 // Destructor -
97
98 // Methods +
99 public:
109 void ready();
110
116 void push(const T&... object);
117
121 void finalize();
122 // Methods -
123
124 // Accessors +
125 public:
133 void setConsumer(std::function<void(const T&...)> consumer);
134
142 void setFinalizer(std::function<void()> finalizer);
143
151 void setErrorHandler(std::function<void()> errorHandler);
152 // Accessors -
153
154 };
155
156}
157
158#include "impl/flux.hpp"
void setConsumer(std::function< void(const T &...)> consumer)
virtual ~Flux()
void push(const T &... object)
void setFinalizer(std::function< void()> finalizer)
void ready()
void finalize()
void setErrorHandler(std::function< void()> errorHandler)
AnCH framework base namespace.
Definition app.hpp:28