Functions
test_tbb_dfp_mce.cxx File Reference
#include "tbb_mock.h"
#include "WireCellTbb/NodeWrapper.h"
#include "WireCellTbb/SinkCat.h"
#include "WireCellTbb/SourceCat.h"
#include "WireCellTbb/QueuedoutCat.h"
#include "WireCellUtil/Testing.h"
#include <tbb/flow_graph.h>
#include <string>
#include <deque>
#include <iostream>

Go to the source code of this file.

Functions

WireCell::INode::pointer get_node (const std::string &node_desc)
 
WireCellTbb::Node make_node (tbb::flow::graph &graph, const std::string &node_desc)
 
bool connect (WireCellTbb::Node sender, WireCellTbb::Node receiver, size_t sport=0, size_t rport=0)
 
int main ()
 

Function Documentation

bool connect ( WireCellTbb::Node  sender,
WireCellTbb::Node  receiver,
size_t  sport = 0,
size_t  rport = 0 
)

Definition at line 68 of file test_tbb_dfp_mce.cxx.

69 {
70  using namespace WireCellTbb;
71 
72  Assert(sender);
73  Assert(receiver);
74  auto sports = sender->sender_ports();
75  auto rports = receiver->receiver_ports();
76 
77  Assert(sports.size() > sport);
78  Assert(rports.size() > rport);
79 
80  sender_type* s = sports[sport];
81  receiver_type* r = rports[rport];
82  Assert(s);
83  Assert(r);
84 
85  cerr << "Connecting " << s << " and " << r << endl;
86  make_edge(*s, *r);
87  return true;
88 }
#define Assert
Definition: Testing.h:7
tbb::flow::sender< boost::any > sender_type
Definition: NodeWrapper.h:15
static QCString * s
Definition: config.cpp:1042
QTextStream & endl(QTextStream &s)
tbb::flow::receiver< boost::any > receiver_type
Definition: NodeWrapper.h:16
WireCell::INode::pointer get_node ( const std::string node_desc)

Definition at line 22 of file test_tbb_dfp_mce.cxx.

23 {
24  using namespace WireCell;
25 
26  if (node_desc == "source") { // note actual desc should be class or class:inst
28  }
29  if (node_desc == "drift") { // note actual desc should be class or class:inst
31  }
32  if (node_desc == "sink") { // note actual desc should be class or class:inst
34  }
35  return nullptr;
36 }
std::shared_ptr< INode > pointer
Access subclass facet by pointer.
Definition: IComponent.h:33
Definition: Main.h:22
int main ( void  )

Definition at line 90 of file test_tbb_dfp_mce.cxx.

91 {
92  using namespace WireCellTbb;
93 
95  Node source = make_node(graph, "source");
96  Assert(source);
97  Node drift = make_node(graph, "drift");
98  Assert(drift);
99  Node sink = make_node(graph, "sink");
100  Assert(sink);
101 
102  Assert (connect(source, drift));
103  Assert (connect(drift, sink));
104 
105  // fixme: in general all nodes should be initialize()'d but so far only source nodes need it.
106  source->initialize();
107 
108  graph.wait_for_all();
109 
110  return 0;
111 }
const CharType(& source)[N]
Definition: pointer.h:1147
def graph(desc, maker=maker)
Definition: apa.py:294
std::shared_ptr< NodeWrapper > Node
Definition: NodeWrapper.h:51
#define Assert
Definition: Testing.h:7
WireCellTbb::Node make_node(tbb::flow::graph &graph, const std::string &node_desc)
bool connect(WireCellTbb::Node sender, WireCellTbb::Node receiver, size_t sport=0, size_t rport=0)
WireCellTbb::Node make_node ( tbb::flow::graph &  graph,
const std::string node_desc 
)

Definition at line 40 of file test_tbb_dfp_mce.cxx.

41 {
42  using namespace WireCell;
43  using namespace WireCellTbb;
44 
45  INode::pointer wcnode = get_node(node_desc);
46  if (! wcnode) {
47  cerr << "Failed to get node for " << node_desc << endl;
48  return nullptr;
49  }
50 
51  cerr << "Getting node from category: " << wcnode->category() << endl;
52  switch (wcnode->category()) {
53  case INode::sourceNode:
54  return Node(new SourceNodeWrapper(graph, wcnode));
55  case INode::sinkNode:
56  return Node(new SinkNodeWrapper(graph, wcnode));
57  // case INode::functionNode:
58  // return Node(new FunctionWrapper(graph, wcnode));
60  return Node(new QueuedoutWrapper(graph, wcnode));
61  default:
62  return nullptr;
63  }
64  return nullptr;
65 }
QMapNodeBase Node
Definition: qmap.cpp:41
def graph(desc, maker=maker)
Definition: apa.py:294
WireCell::INode::pointer get_node(const std::string &node_desc)
std::shared_ptr< Interface > pointer
Definition: Interface.h:16
Definition: Main.h:22
QTextStream & endl(QTextStream &s)