2 * Copyright (C) 2022 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: GPL-2.0-only
8 #ifndef LTTNG_UST_REGISTRY_EVENT_H
9 #define LTTNG_UST_REGISTRY_EVENT_H
11 #include "event-class.hpp"
14 #include <common/format.hpp>
15 #include <common/hashtable/hashtable.hpp>
16 #include <vendor/optional.hpp>
25 * Event registered from a UST tracer sent to the session daemon. This is
26 * indexed and matched by <event_name/signature>.
28 class registry_event : public lttng::sessiond::trace::event_class {
30 registry_event(unsigned int id,
31 unsigned int stream_class_id,
35 std::string signature,
36 std::vector<lttng::sessiond::trace::field::cuptr> fields,
38 nonstd::optional<std::string> model_emf_uri);
39 virtual ~registry_event() = default;
41 /* Both objd are set by the tracer. */
42 const int session_objd;
43 const int channel_objd;
44 const std::string signature;
47 * Flag for this channel if the metadata was dumped once during
50 bool _metadata_dumped;
53 * Node in the ust-registry hash table. The event name is used to
54 * initialize the node and the event_name/signature for the match function.
56 struct cds_lfht_node _node;
57 struct rcu_head _head;
60 void registry_event_destroy(registry_event *event);
63 } /* namespace sessiond */
64 } /* namespace lttng */
67 struct fmt::formatter<lttng::sessiond::ust::registry_event> : fmt::formatter<std::string> {
68 template <typename FormatCtx>
69 typename FormatCtx::iterator format(
70 const lttng::sessiond::ust::registry_event& event, FormatCtx& ctx)
72 return fmt::format_to(ctx.out(),
73 "{{ name = `{}`, signature = `{}`, id = {}, session objd = {}, channel objd = {} }}",
74 event.name, event.signature, event.id, event.session_objd,
79 #endif /* LTTNG_UST_REGISTRY_EVENT_H */