7 #ifndef WIRECELL_IHYDRANODE 8 #define WIRECELL_IHYDRANODE 13 #include <boost/any.hpp> 26 typedef std::shared_ptr<IHydraNodeBase>
pointer;
34 virtual bool operator()(any_queue_vector& anyinq,
35 any_queue_vector& anyoutq) = 0;
49 template <
typename InputTuple,
typename OutputTuple>
70 auto inq = ih.from_any_queue(anyinq);
71 output_queues_type outq;
73 bool ok = (*this)(inq, outq);
75 anyoutq = oh.as_any_queue(outq);
79 anyinq = ih.as_any_queue(inq);
84 virtual bool operator()(input_queues_type& inqs,
85 output_queues_type& outqs) = 0;
90 return ih.type_names();
95 return oh.type_names();
std::shared_ptr< IHydraNodeBase > pointer
virtual std::vector< std::string > input_types()
OutputTuple output_tuple_type
virtual int concurrency()
By default assume hydra nodes can do their thing stateless.
virtual ~IHydraNodeBase()
virtual bool operator()(any_queue_vector &anyinq, any_queue_vector &anyoutq)
Translate call from any to types and back.
input_shqed::shared_queued_tuple_type input_queues_type
virtual bool operator()(any_queue_vector &anyinq, any_queue_vector &anyoutq)=0
The calling signature:
shared_queued< InputTuple > input_shqed
std::vector< any_queue > any_queue_vector
output_shqed::shared_queued_tuple_type output_queues_type
std::deque< boost::any > any_queue
virtual std::vector< std::string > output_types()
virtual NodeCategory category()
Return the behavior category type.
shared_queued< OutputTuple > output_shqed
InputTuple input_tuple_type