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;
|
||||
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 &) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -469,6 +469,7 @@ private:
|
|||
std::queue<ErrorOr<UnfixVoid<T>>> storage;
|
||||
|
||||
public:
|
||||
AdaptConveyorNode();
|
||||
~AdaptConveyorNode();
|
||||
|
||||
void setFeeder(AdaptConveyorFeeder<T> *feeder);
|
||||
|
@ -677,11 +678,14 @@ private:
|
|||
ConveyorSinks *conveyor_sink;
|
||||
|
||||
public:
|
||||
SinkConveyorNode(Own<ConveyorNode> &&node, ConveyorSinks &conv_sink)
|
||||
: child(std::move(node)), conveyor_sink{&conv_sink} {}
|
||||
SinkConveyorNode(ConveyorStorage *child_store, Own<ConveyorNode> node,
|
||||
ConveyorSinks &conv_sink)
|
||||
: ConveyorEventStorage{child_store}, child{std::move(node)},
|
||||
conveyor_sink{&conv_sink} {}
|
||||
|
||||
SinkConveyorNode(Own<ConveyorNode> &&node)
|
||||
: child(std::move(node)), conveyor_sink{nullptr} {}
|
||||
SinkConveyorNode(ConveyorStorage *child_store, Own<ConveyorNode> node)
|
||||
: ConveyorEventStorage{child_store}, child{std::move(node)},
|
||||
conveyor_sink{nullptr} {}
|
||||
|
||||
// Event only queued if a critical error occured
|
||||
void fire() override {
|
||||
|
@ -788,7 +792,7 @@ private:
|
|||
MergeConveyorNode *merger;
|
||||
|
||||
public:
|
||||
Appendage(ConveyorStorage *child_str, Own<ConveyorNode> n,
|
||||
Appendage(ConveyorStorage *child_store, Own<ConveyorNode> n,
|
||||
MergeConveyorNode &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 <typename ErrorFunc>
|
||||
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 =
|
||||
static_cast<ConveyorStorage *>(sink_node.get());
|
||||
if (storage) {
|
||||
|
@ -284,6 +285,9 @@ template <typename T> size_t AdaptConveyorFeeder<T>::space() const {
|
|||
return 0;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
AdaptConveyorNode<T>::AdaptConveyorNode() : ConveyorEventStorage{nullptr} {}
|
||||
|
||||
template <typename T> AdaptConveyorNode<T>::~AdaptConveyorNode() {
|
||||
if (feeder) {
|
||||
feeder->setFeedee(nullptr);
|
||||
|
|
Loading…
Reference in New Issue