-struct RunInData final
-{
- RunInCompClsQueryFunc compClsCtxFunc;
- RunInCompClsInitFunc compCtxFunc;
- RunInMsgIterClsInitFunc msgIterCtxFunc;
-};
-
-static const RunInData& runInDataFromMethodData(void * const methodData)
-{
- return *static_cast<const RunInData *>(methodData);
-}
-
-static bt_component_class_initialize_method_status
-compClsInit(bt_self_component_source * const selfComp, bt_self_component_source_configuration *,
- const bt_value *, void * const initMethodData)
-{
- const auto status =
- bt_self_component_source_add_output_port(selfComp, "out", initMethodData, nullptr);
-
- BT_ASSERT(status == BT_SELF_COMPONENT_ADD_PORT_STATUS_OK);
-
- auto& data = runInDataFromMethodData(initMethodData);
-
- if (data.compCtxFunc) {
- data.compCtxFunc(bt_self_component_source_as_self_component(selfComp));
- }
-
- return BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK;
-}
-
-static bt_component_class_query_method_status
-compClsQuery(bt_self_component_class_source * const selfCompCls, bt_private_query_executor *,
- const char *, const bt_value *, void * const methodData,
- const bt_value ** const result)
-{
- auto& data = runInDataFromMethodData(methodData);
-
- if (data.compClsCtxFunc) {
- data.compClsCtxFunc(bt_self_component_class_source_as_self_component_class(selfCompCls));
- }
-
- *result = bt_value_null;
- return BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK;
-}