projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adapt plugin system to use unified reference counting
[babeltrace.git]
/
plugins
/
iterator.c
diff --git
a/plugins/iterator.c
b/plugins/iterator.c
index 66f918c8dbe629a266fd14380c5e915943d970fa..4cfd1e49e3fc4871c7bdbf20ff174f6a1ecb2fca 100644
(file)
--- a/
plugins/iterator.c
+++ b/
plugins/iterator.c
@@
-27,15
+27,23
@@
*/
#include <babeltrace/compiler.h>
*/
#include <babeltrace/compiler.h>
+#include <babeltrace/ref.h>
#include <babeltrace/plugin/component.h>
#include <babeltrace/plugin/source-internal.h>
#include <babeltrace/plugin/notification/iterator.h>
#include <babeltrace/plugin/notification/iterator-internal.h>
static
#include <babeltrace/plugin/component.h>
#include <babeltrace/plugin/source-internal.h>
#include <babeltrace/plugin/notification/iterator.h>
#include <babeltrace/plugin/notification/iterator-internal.h>
static
-void bt_notification_iterator_destroy(struct bt_
notification_iterator *iterator
)
+void bt_notification_iterator_destroy(struct bt_
object *obj
)
{
{
-
+ struct bt_notification_iterator *iterator;
+
+ assert(obj);
+ iterator = container_of(obj, struct bt_notification_iterator,
+ base);
+ assert(iterator->user_destroy || !iterator->user_data);
+ iterator->user_destroy(iterator);
+ g_free(iterator);
}
BT_HIDDEN
}
BT_HIDDEN
@@
-44,7
+52,8
@@
struct bt_notification_iterator *bt_notification_iterator_create(
{
struct bt_notification_iterator *iterator = NULL;
{
struct bt_notification_iterator *iterator = NULL;
- if (!component || bt_component_get_type(component) != BT_COMPONENT_TYPE_SOURCE) {
+ if (!component ||
+ bt_component_get_type(component) != BT_COMPONENT_TYPE_SOURCE) {
goto end;
}
goto end;
}
@@
-53,7
+62,7
@@
struct bt_notification_iterator *bt_notification_iterator_create(
goto end;
}
goto end;
}
- bt_
ctf_ref_init(&iterator->ref_count
);
+ bt_
object_init(iterator, bt_notification_iterator_destroy
);
end:
return iterator;
}
end:
return iterator;
}
@@
-62,7
+71,8
@@
BT_HIDDEN
enum bt_notification_iterator_status bt_notification_iterator_validate(
struct bt_notification_iterator *iterator)
{
enum bt_notification_iterator_status bt_notification_iterator_validate(
struct bt_notification_iterator *iterator)
{
- enum bt_notification_iterator_status ret = BT_NOTIFICATION_ITERATOR_STATUS_OK;
+ enum bt_notification_iterator_status ret =
+ BT_NOTIFICATION_ITERATOR_STATUS_OK;
if (!iterator || !iterator->get || !iterator->next) {
ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL;
if (!iterator || !iterator->get || !iterator->next) {
ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL;
@@
-72,20
+82,18
@@
end:
return ret;
}
return ret;
}
-void bt_notification_iterator_get(struct bt_notification_iterator *iterator)
+enum bt_notification_iterator_status bt_notification_iterator_set_get_cb(
+ struct bt_notification_iterator *iterator,
+ bt_notification_iterator_get_cb get)
{
{
- if (!iterator) {
- return;
- }
+ enum bt_notification_iterator_status ret;
- bt_ctf_ref_get(&iterator->ref_count);
-}
-
-void bt_notification_iterator_put(struct bt_notification_iterator *iterator)
-{
- if (!iterator) {
- return;
+ if (!iterator || !get) {
+ ret = BT_NOTIFICATION_ITERATOR_STATUS_INVAL;
+ goto end;
}
}
- bt_ctf_ref_put(&iterator->ref_count, bt_notification_iterator_destroy);
+
+end:
+ return ret;
}
}
This page took
0.024931 seconds
and
4
git commands to generate.