#include "cpp-common/bt2/component-class-dev.hpp"
#include "cpp-common/bt2/component-class.hpp"
#include "cpp-common/bt2/graph.hpp"
+#include "cpp-common/bt2/plugin-load.hpp"
+#include "cpp-common/bt2/plugin.hpp"
+#include "cpp-common/bt2/query-executor.hpp"
+#include "cpp-common/bt2c/call.hpp"
#include "run-in.hpp"
const RunInData *_mRunInData;
};
-class DummySink : public bt2::UserSinkComponent<DummySink>
-{
-public:
- static constexpr auto name = "dummy";
-
- explicit DummySink(const bt2::SelfSinkComponent self, bt2::ConstMapValue, void *) :
- bt2::UserSinkComponent<DummySink>(self, "DUMMY-SINK")
- {
- this->_addInputPort("in");
- }
-
- void _graphIsConfigured()
- {
- _mMsgIter = this->_createMessageIterator(this->_inputPorts()["in"]);
- }
-
- bool _consume()
- {
- return _mMsgIter->next().has_value();
- }
-
-private:
- bt2::MessageIterator::Shared _mMsgIter;
-};
-
} /* namespace */
void runIn(RunInCompClsQueryFunc compClsCtxFunc, RunInCompClsInitFunc compCtxFunc,
const auto srcCompCls = bt2::SourceComponentClass::create<RunInSource>();
/* Execute a query (executes `compClsCtxFunc`) */
- {
- const auto queryExec = bt_query_executor_create_with_method_data(
- bt_component_class_source_as_component_class(srcCompCls->libObjPtr()), "", nullptr,
- &data);
-
- BT_ASSERT(queryExec);
-
- const bt_value *queryRes;
- const auto status = bt_query_executor_query(queryExec, &queryRes);
-
- BT_ASSERT(status == BT_QUERY_EXECUTOR_QUERY_STATUS_OK);
- bt_value_put_ref(queryRes);
- bt_query_executor_put_ref(queryExec);
- }
+ bt2::QueryExecutor::create(*srcCompCls, "object-name", data)->query();
/* Create graph */
const auto graph = bt2::Graph::create(0);
const auto srcComp = graph->addComponent(*srcCompCls, "the-source", data);
/* Add dummy sink component */
- const auto sinkComp =
- graph->addComponent(*bt2::SinkComponentClass::create<DummySink>(), "the-sink");
+ const auto sinkComp = bt2c::call([&] {
+ const auto utilsPlugin = bt2::findPlugin("utils");
+
+ BT_ASSERT(utilsPlugin);
+
+ const auto dummySinkCompCls = utilsPlugin->sinkComponentClasses()["dummy"];
+
+ BT_ASSERT(dummySinkCompCls);
+
+ return graph->addComponent(*dummySinkCompCls, "the-sink");
+ });
/* Connect ports */
const auto outPort = srcComp.outputPorts()["out"];