#include <common/make-unique-wrapper.hpp>
+#include <lttng/lttng.h>
+
#include <cstdint>
#include <ctime>
-#include <lttng/lttng.h>
#include <string>
#include <unistd.h>
class registry_session : public lttng::sessiond::trace::trace_class {
public:
- using locked_ptr = std::unique_ptr<registry_session,
- lttng::details::create_unique_class<registry_session,
- details::locked_registry_session_release>::
- deleter>;
+ using locked_ptr =
+ std::unique_ptr<registry_session,
+ lttng::memory::create_deleter_class<
+ registry_session,
+ details::locked_registry_session_release>::deleter>;
- virtual lttng_buffer_type get_buffering_scheme() const noexcept = 0;
+ virtual lttng_buffer_type buffering_scheme() const noexcept = 0;
locked_ptr lock() noexcept;
void add_channel(uint64_t channel_key);
/* A channel is protected by its parent registry session's lock. */
- lttng::sessiond::ust::registry_channel& get_channel(uint64_t channel_key) const;
+ lttng::sessiond::ust::registry_channel& channel(uint64_t channel_key) const;
void remove_channel(uint64_t channel_key, bool notify);
void create_or_find_enum(int session_objd,
- const char *enum_name,
- struct lttng_ust_ctl_enum_entry *raw_entries,
- size_t nr_entries,
- uint64_t *enum_id);
- registry_enum::const_rcu_protected_reference get_enumeration(
- const char *enum_name, uint64_t enum_id) const;
+ const char *enum_name,
+ struct lttng_ust_ctl_enum_entry *raw_entries,
+ size_t nr_entries,
+ uint64_t *enum_id);
+ registry_enum::const_rcu_protected_reference enumeration(const char *enum_name,
+ uint64_t enum_id) const;
void regenerate_metadata();
- virtual ~registry_session();
+
+ ~registry_session() override;
+ registry_session(const registry_session&) = delete;
+ registry_session(registry_session&&) = delete;
+ registry_session& operator=(registry_session&&) = delete;
+ registry_session& operator=(const registry_session&) = delete;
+
+ const lttng::sessiond::trace::type *packet_header() const noexcept override;
/*
* With multiple writers and readers, use this lock to access
protected:
/* Prevent instanciation of this base class. */
registry_session(const struct lttng::sessiond::trace::abi& abi,
- unsigned int app_tracer_version_major,
- unsigned int app_tracer_version_minor,
- const char *root_shm_path,
- const char *shm_path,
- uid_t euid,
- gid_t egid,
- uint64_t tracing_id);
- virtual void _visit_environment(
- lttng::sessiond::trace::trace_class_visitor& trace_class_visitor)
- const override;
+ unsigned int app_tracer_version_major,
+ unsigned int app_tracer_version_minor,
+ const char *root_shm_path,
+ const char *shm_path,
+ uid_t euid,
+ gid_t egid,
+ uint64_t tracing_id);
+ void accept(trace::trace_class_environment_visitor& environment_visitor) const override;
void _generate_metadata();
private:
void _reset_metadata();
void _destroy_enum(registry_enum *reg_enum) noexcept;
registry_enum *_lookup_enum(const registry_enum *target_enum) const;
+ lttng::sessiond::trace::type::cuptr _create_packet_header() const;
- virtual void _accept_on_clock_classes(
- lttng::sessiond::trace::trace_class_visitor& trace_class_visitor)
- const override final;
- virtual void _accept_on_stream_classes(
- lttng::sessiond::trace::trace_class_visitor& trace_class_visitor)
- const override final;
+ void _accept_on_clock_classes(
+ lttng::sessiond::trace::trace_class_visitor& trace_class_visitor) const final;
+ void _accept_on_stream_classes(
+ lttng::sessiond::trace::trace_class_visitor& trace_class_visitor) const final;
/* Next channel ID available for a newly registered channel. */
uint32_t _next_channel_id = 0;
/* The id of the parent session. */
const ltt_session::id_t _tracing_id;
- lttng::sessiond::ust::clock_class _clock;
+ lttng::sessiond::ust::clock_class::cuptr _clock;
const lttng::sessiond::trace::trace_class_visitor::cuptr _metadata_generating_visitor;
+ lttng::sessiond::trace::type::cuptr _packet_header;
};
} /* namespace ust */