/* Helper functions for Python */
%{
-
-static void graph_listener_removed(void *py_callable)
+static
+void graph_listener_removed(void *py_callable)
{
BT_ASSERT(py_callable);
Py_DECREF(py_callable);
}
-static bt_graph_listener_status
-port_added_listener(
+static bt_graph_listener_func_status port_added_listener(
const void *component,
swig_type_info *component_swig_type,
bt_component_class_type component_class_type,
PyObject *py_component_ptr = NULL;
PyObject *py_port_ptr = NULL;
PyObject *py_res = NULL;
- bt_graph_listener_status status;
+ bt_graph_listener_func_status status;
py_component_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(component), component_swig_type, 0);
if (!py_component_ptr) {
BT_LOGF_STR("Failed to create component SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
py_port_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(port), port_swig_type, 0);
if (!py_port_ptr) {
BT_LOGF_STR("Failed to create port SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
py_res = PyObject_CallFunction(py_callable, "(OiOi)",
py_component_ptr, component_class_type, py_port_ptr, port_type);
if (!py_res) {
- bt2_py_loge_exception();
+ loge_exception("Graph's port added listener (Python)");
PyErr_Clear();
- status = BT_GRAPH_LISTENER_STATUS_ERROR;
+ status = __BT_FUNC_STATUS_ERROR;
goto end;
}
BT_ASSERT(py_res == Py_None);
- status = BT_GRAPH_LISTENER_STATUS_OK;
+ status = __BT_FUNC_STATUS_OK;
end:
Py_XDECREF(py_res);
Py_XDECREF(py_port_ptr);
Py_XDECREF(py_component_ptr);
-
return status;
}
-static bt_graph_listener_status
+static
+bt_graph_listener_func_status
source_component_output_port_added_listener(const bt_component_source *component_source,
const bt_port_output *port_output, void *py_callable)
{
port_output, SWIGTYPE_p_bt_port_output, BT_PORT_TYPE_OUTPUT, py_callable);
}
-static bt_graph_listener_status
+static
+bt_graph_listener_func_status
filter_component_input_port_added_listener(const bt_component_filter *component_filter,
const bt_port_input *port_input, void *py_callable)
{
port_input, SWIGTYPE_p_bt_port_input, BT_PORT_TYPE_INPUT, py_callable);
}
-static bt_graph_listener_status
+static
+bt_graph_listener_func_status
filter_component_output_port_added_listener(const bt_component_filter *component_filter,
const bt_port_output *port_output, void *py_callable)
{
port_output, SWIGTYPE_p_bt_port_output, BT_PORT_TYPE_OUTPUT, py_callable);
}
-static bt_graph_listener_status
+static
+bt_graph_listener_func_status
sink_component_input_port_added_listener(const bt_component_sink *component_sink,
const bt_port_input *port_input, void *py_callable)
{
port_input, SWIGTYPE_p_bt_port_input, BT_PORT_TYPE_INPUT, py_callable);
}
-static PyObject *
-bt_py3_graph_add_port_added_listener(struct bt_graph *graph,
- PyObject *py_callable)
+static
+PyObject *bt_bt2_graph_add_port_added_listener(struct bt_graph *graph,
+ PyObject *py_callable)
{
PyObject *py_listener_ids = NULL;
PyObject *py_listener_id = NULL;
int listener_id;
- bt_graph_status status;
+ bt_graph_add_listener_status status;
+ const char * const module_name =
+ "graph_add_port_added_listener() (Python)";
BT_ASSERT(graph);
BT_ASSERT(py_callable);
*/
py_listener_ids = PyTuple_New(4);
if (!py_listener_ids) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyTuple.");
goto error;
}
status = bt_graph_add_source_component_output_port_added_listener(
graph, source_component_output_port_added_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_source_component_output_port_added_listener has
+ * already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_filter_component_input_port_added_listener(
graph, filter_component_input_port_added_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_filter_component_input_port_added_listener has
+ * already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_filter_component_output_port_added_listener(
graph, filter_component_output_port_added_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_filter_component_output_port_added_listener has
+ * already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_sink_component_input_port_added_listener(
graph, sink_component_input_port_added_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_sink_component_input_port_added_listener has
+ * already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
return py_listener_ids;
}
-static bt_graph_listener_status
-ports_connected_listener(
+static
+bt_graph_listener_func_status ports_connected_listener(
const void *upstream_component,
swig_type_info *upstream_component_swig_type,
bt_component_class_type upstream_component_class_type,
PyObject *py_downstream_component_ptr = NULL;
PyObject *py_downstream_port_ptr = NULL;
PyObject *py_res = NULL;
- bt_graph_listener_status status;
+ bt_graph_listener_func_status status;
py_upstream_component_ptr = SWIG_NewPointerObj(SWIG_as_voidptr(upstream_component),
upstream_component_swig_type, 0);
if (!py_upstream_component_ptr) {
BT_LOGF_STR("Failed to create upstream component SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
SWIG_as_voidptr(upstream_port), SWIGTYPE_p_bt_port_output, 0);
if (!py_upstream_port_ptr) {
BT_LOGF_STR("Failed to create upstream port SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
downstream_component_swig_type, 0);
if (!py_downstream_component_ptr) {
BT_LOGF_STR("Failed to create downstream component SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
SWIG_as_voidptr(downstream_port), SWIGTYPE_p_bt_port_input, 0);
if (!py_downstream_port_ptr) {
BT_LOGF_STR("Failed to create downstream port SWIG pointer object.");
- status = BT_GRAPH_LISTENER_STATUS_NOMEM;
+ status = __BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
py_downstream_component_ptr, downstream_component_class_type,
py_downstream_port_ptr);
if (!py_res) {
- bt2_py_loge_exception();
+ loge_exception("Graph's port connected listener (Python)");
PyErr_Clear();
- status = BT_GRAPH_LISTENER_STATUS_ERROR;
+ status = __BT_FUNC_STATUS_ERROR;
goto end;
}
BT_ASSERT(py_res == Py_None);
- status = BT_GRAPH_LISTENER_STATUS_OK;
+ status = __BT_FUNC_STATUS_OK;
end:
Py_XDECREF(py_upstream_component_ptr);
Py_XDECREF(py_downstream_component_ptr);
Py_XDECREF(py_downstream_port_ptr);
Py_XDECREF(py_res);
-
return status;
}
-static bt_graph_listener_status
-source_filter_component_ports_connected_listener(
+static
+bt_graph_listener_func_status source_filter_component_ports_connected_listener(
const bt_component_source *source_component,
const bt_component_filter *filter_component,
const bt_port_output *upstream_port,
py_callable);
}
-static bt_graph_listener_status
-source_sink_component_ports_connected_listener(
+static
+bt_graph_listener_func_status source_sink_component_ports_connected_listener(
const bt_component_source *source_component,
const bt_component_sink *sink_component,
const bt_port_output *upstream_port,
py_callable);
}
-static bt_graph_listener_status
-filter_filter_component_ports_connected_listener(
+static
+bt_graph_listener_func_status filter_filter_component_ports_connected_listener(
const bt_component_filter *filter_component_left,
const bt_component_filter *filter_component_right,
const bt_port_output *upstream_port,
py_callable);
}
-static bt_graph_listener_status
-filter_sink_component_ports_connected_listener(
+static
+bt_graph_listener_func_status filter_sink_component_ports_connected_listener(
const bt_component_filter *filter_component,
const bt_component_sink *sink_component,
const bt_port_output *upstream_port,
py_callable);
}
-static PyObject*
-bt_py3_graph_add_ports_connected_listener(struct bt_graph *graph,
- PyObject *py_callable)
+static
+PyObject *bt_bt2_graph_add_ports_connected_listener(struct bt_graph *graph,
+ PyObject *py_callable)
{
PyObject *py_listener_ids = NULL;
PyObject *py_listener_id = NULL;
int listener_id;
- bt_graph_status status;
+ bt_graph_add_listener_status status;
+ const char * const module_name =
+ "graph_add_ports_connected_listener() (Python)";
BT_ASSERT(graph);
BT_ASSERT(py_callable);
* return all of their ids. */
py_listener_ids = PyTuple_New(4);
if (!py_listener_ids) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyTuple.");
goto error;
}
status = bt_graph_add_source_filter_component_ports_connected_listener(
graph, source_filter_component_ports_connected_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_source_filter_component_ports_connected_listener
+ * has already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_source_sink_component_ports_connected_listener(
graph, source_sink_component_ports_connected_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_source_sink_component_ports_connected_listener
+ * has already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_filter_filter_component_ports_connected_listener(
graph, filter_filter_component_ports_connected_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_filter_filter_component_ports_connected_listener
+ * has already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
status = bt_graph_add_filter_sink_component_ports_connected_listener(
graph, filter_sink_component_ports_connected_listener,
graph_listener_removed, py_callable, &listener_id);
- if (status != BT_GRAPH_STATUS_OK) {
+ if (status != __BT_FUNC_STATUS_OK) {
+ /*
+ * bt_graph_add_filter_sink_component_ports_connected_listener
+ * has already logged/appended an error cause.
+ */
goto error;
}
py_listener_id = PyLong_FromLong(listener_id);
if (!py_listener_id) {
+ BT_CURRENT_THREAD_ERROR_APPEND_CAUSE_FROM_UNKNOWN(module_name,
+ "Failed to allocate one PyLong.");
goto error;
}
Py_XDECREF(py_listener_id);
return py_listener_ids;
}
-
%}
-PyObject *bt_py3_graph_add_port_added_listener(struct bt_graph *graph,
+PyObject *bt_bt2_graph_add_port_added_listener(struct bt_graph *graph,
PyObject *py_callable);
-PyObject *bt_py3_graph_add_ports_connected_listener(struct bt_graph *graph,
+PyObject *bt_bt2_graph_add_ports_connected_listener(struct bt_graph *graph,
PyObject *py_callable);