X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fcomponent-source.c;fp=lib%2Fgraph%2Fcomponent-source.c;h=2d5039aa8d7323ef42138478d8b22622a6cc95b6;hb=d94d92ac6656fd252a5d7bb4f6c76935ba18e62e;hp=0000000000000000000000000000000000000000;hpb=28e6ca8b6e08d1cdd1af81ae819aa39baa206eaf;p=babeltrace.git diff --git a/lib/graph/component-source.c b/lib/graph/component-source.c new file mode 100644 index 00000000..2d5039aa --- /dev/null +++ b/lib/graph/component-source.c @@ -0,0 +1,121 @@ +/* + * Copyright 2015 Jérémie Galarneau + * + * Author: Jérémie Galarneau + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#define BT_LOG_TAG "COMP-SOURCE" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +BT_HIDDEN +void bt_component_source_destroy(struct bt_component *component) +{ +} + +BT_HIDDEN +struct bt_component *bt_component_source_create( + struct bt_component_class *class) +{ + struct bt_component_source *source = NULL; + + source = g_new0(struct bt_component_source, 1); + if (!source) { + BT_LOGE_STR("Failed to allocate one source component."); + goto end; + } + +end: + return (void *) source; +} + +uint64_t bt_component_source_get_output_port_count( + struct bt_component_source *comp) +{ + return bt_component_get_output_port_count((void *) comp); +} + +struct bt_port_output *bt_component_source_borrow_output_port_by_name( + struct bt_component_source *comp, const char *name) +{ + return bt_component_borrow_output_port_by_name((void *) comp, name); +} + +struct bt_self_component_port_output * +bt_self_component_source_borrow_output_port_by_name( + struct bt_self_component_source *comp, const char *name) +{ + return (void *) bt_component_borrow_output_port_by_name( + (void *) comp, name); +} + +struct bt_port_output *bt_component_source_borrow_output_port_by_index( + struct bt_component_source *comp, uint64_t index) +{ + return bt_component_borrow_output_port_by_index((void *) comp, index); +} + +struct bt_self_component_port_output * +bt_self_component_source_borrow_output_port_by_index( + struct bt_self_component_source *comp, uint64_t index) +{ + return (void *) bt_component_borrow_output_port_by_index( + (void *) comp, index); +} + +enum bt_self_component_status bt_self_component_source_add_output_port( + struct bt_self_component_source *self_comp, + const char *name, void *user_data, + struct bt_self_component_port_output **self_port) +{ + struct bt_component *comp = (void *) self_comp; + int status = BT_SELF_COMPONENT_STATUS_OK; + struct bt_port *port = NULL; + + /* bt_component_add_output_port() logs details and errors */ + port = (void *) bt_component_add_output_port(comp, name, user_data); + if (!port) { + status = BT_SELF_COMPONENT_STATUS_NOMEM; + goto end; + } + + if (self_port) { + /* Move reference to user */ + *self_port = (void *) port; + port = NULL; + } + +end: + bt_object_put_ref(port); + return status; +}