added proper constructors for ConveyorStorage children
This commit is contained in:
parent
259710afd5
commit
c60157ed89
|
@ -290,7 +290,8 @@ void ConveyorSinks::add(Conveyor<void> &&sink) {
|
||||||
|
|
||||||
Own<SinkConveyorNode> sink_node = nullptr;
|
Own<SinkConveyorNode> sink_node = nullptr;
|
||||||
try {
|
try {
|
||||||
sink_node = heap<SinkConveyorNode>(std::move(nas.first), *this);
|
sink_node =
|
||||||
|
heap<SinkConveyorNode>(nas.second, std::move(nas.first), *this);
|
||||||
} catch (std::bad_alloc &) {
|
} catch (std::bad_alloc &) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -469,6 +469,7 @@ private:
|
||||||
std::queue<ErrorOr<UnfixVoid<T>>> storage;
|
std::queue<ErrorOr<UnfixVoid<T>>> storage;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
AdaptConveyorNode();
|
||||||
~AdaptConveyorNode();
|
~AdaptConveyorNode();
|
||||||
|
|
||||||
void setFeeder(AdaptConveyorFeeder<T> *feeder);
|
void setFeeder(AdaptConveyorFeeder<T> *feeder);
|
||||||
|
@ -677,11 +678,14 @@ private:
|
||||||
ConveyorSinks *conveyor_sink;
|
ConveyorSinks *conveyor_sink;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SinkConveyorNode(Own<ConveyorNode> &&node, ConveyorSinks &conv_sink)
|
SinkConveyorNode(ConveyorStorage *child_store, Own<ConveyorNode> node,
|
||||||
: child(std::move(node)), conveyor_sink{&conv_sink} {}
|
ConveyorSinks &conv_sink)
|
||||||
|
: ConveyorEventStorage{child_store}, child{std::move(node)},
|
||||||
|
conveyor_sink{&conv_sink} {}
|
||||||
|
|
||||||
SinkConveyorNode(Own<ConveyorNode> &&node)
|
SinkConveyorNode(ConveyorStorage *child_store, Own<ConveyorNode> node)
|
||||||
: child(std::move(node)), conveyor_sink{nullptr} {}
|
: ConveyorEventStorage{child_store}, child{std::move(node)},
|
||||||
|
conveyor_sink{nullptr} {}
|
||||||
|
|
||||||
// Event only queued if a critical error occured
|
// Event only queued if a critical error occured
|
||||||
void fire() override {
|
void fire() override {
|
||||||
|
@ -788,7 +792,7 @@ private:
|
||||||
MergeConveyorNode *merger;
|
MergeConveyorNode *merger;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Appendage(ConveyorStorage *child_str, Own<ConveyorNode> n,
|
Appendage(ConveyorStorage *child_store, Own<ConveyorNode> n,
|
||||||
MergeConveyorNode &m)
|
MergeConveyorNode &m)
|
||||||
: ConveyorStorage{child_store}, child{std::move(n)}, merger{&m} {}
|
: ConveyorStorage{child_store}, child{std::move(n)}, merger{&m} {}
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,8 @@ std::pair<Conveyor<T>, MergeConveyor<T>> Conveyor<T>::merge() {
|
||||||
template <>
|
template <>
|
||||||
template <typename ErrorFunc>
|
template <typename ErrorFunc>
|
||||||
SinkConveyor Conveyor<void>::sink(ErrorFunc &&error_func) {
|
SinkConveyor Conveyor<void>::sink(ErrorFunc &&error_func) {
|
||||||
Own<SinkConveyorNode> sink_node = heap<SinkConveyorNode>(std::move(node));
|
Own<SinkConveyorNode> sink_node =
|
||||||
|
heap<SinkConveyorNode>(storage, std::move(node));
|
||||||
ConveyorStorage *storage_ptr =
|
ConveyorStorage *storage_ptr =
|
||||||
static_cast<ConveyorStorage *>(sink_node.get());
|
static_cast<ConveyorStorage *>(sink_node.get());
|
||||||
if (storage) {
|
if (storage) {
|
||||||
|
@ -284,6 +285,9 @@ template <typename T> size_t AdaptConveyorFeeder<T>::space() const {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
AdaptConveyorNode<T>::AdaptConveyorNode() : ConveyorEventStorage{nullptr} {}
|
||||||
|
|
||||||
template <typename T> AdaptConveyorNode<T>::~AdaptConveyorNode() {
|
template <typename T> AdaptConveyorNode<T>::~AdaptConveyorNode() {
|
||||||
if (feeder) {
|
if (feeder) {
|
||||||
feeder->setFeedee(nullptr);
|
feeder->setFeedee(nullptr);
|
||||||
|
|
Loading…
Reference in New Issue