#ifndef BABELTRACE_CPP_COMMON_BT2_MESSAGE_HPP
#define BABELTRACE_CPP_COMMON_BT2_MESSAGE_HPP
-#include <type_traits>
#include <cstdint>
-#include <functional>
+#include <type_traits>
+
#include <babeltrace2/babeltrace.h>
#include "common/assert.h"
-#include "common/common.h"
-#include "internal/borrowed-obj.hpp"
-#include "internal/shared-obj.hpp"
-#include "internal/utils.hpp"
+#include "cpp-common/bt2/clock-snapshot.hpp"
+#include "cpp-common/bt2/trace-ir.hpp"
#include "cpp-common/optional.hpp"
-#include "cpp-common/string_view.hpp"
-#include "exc.hpp"
+
+#include "borrowed-object.hpp"
+#include "internal/utils.hpp"
+#include "shared-object.hpp"
namespace bt2 {
namespace internal {
struct MessageRefFuncs final
{
- static void get(const bt_message * const libObjPtr)
+ static void get(const bt_message * const libObjPtr) noexcept
{
bt_message_get_ref(libObjPtr);
}
- static void put(const bt_message * const libObjPtr)
+ static void put(const bt_message * const libObjPtr) noexcept
{
bt_message_put_ref(libObjPtr);
}
};
-template <typename ObjT, typename LibObjT>
-using SharedMessage = internal::SharedObj<ObjT, LibObjT, internal::MessageRefFuncs>;
-
} /* namespace internal */
+template <typename ObjT, typename LibObjT>
+using SharedMessage = SharedObject<ObjT, LibObjT, internal::MessageRefFuncs>;
+
template <typename LibObjT>
class CommonStreamBeginningMessage;
};
template <typename LibObjT>
-class CommonMessage : public internal::BorrowedObj<LibObjT>
+class CommonMessage : public BorrowedObject<LibObjT>
{
private:
- using typename internal::BorrowedObj<LibObjT>::_ThisBorrowedObj;
+ using typename BorrowedObject<LibObjT>::_ThisBorrowedObject;
protected:
- using typename internal::BorrowedObj<LibObjT>::_LibObjPtr;
+ using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _ThisCommonMessage = CommonMessage<LibObjT>;
public:
- using Shared = internal::SharedMessage<CommonMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonMessage<LibObjT>, LibObjT>;
- explicit CommonMessage(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObj {libObjPtr}
+ explicit CommonMessage(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
}
template <typename OtherLibObjT>
- CommonMessage(const CommonMessage<OtherLibObjT> val) noexcept : _ThisBorrowedObj {val}
+ CommonMessage(const CommonMessage<OtherLibObjT> val) noexcept : _ThisBorrowedObject {val}
{
}
template <typename OtherLibObjT>
_ThisCommonMessage& operator=(const CommonMessage<OtherLibObjT> val) noexcept
{
- _ThisBorrowedObj::operator=(val);
+ _ThisBorrowedObject::operator=(val);
return *this;
}
CommonStream<bt_stream>>::type;
public:
- using Shared = internal::SharedMessage<CommonStreamBeginningMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonStreamBeginningMessage<LibObjT>, LibObjT>;
explicit CommonStreamBeginningMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonStream<bt_stream>>::type;
public:
- using Shared = internal::SharedMessage<CommonStreamEndMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonStreamEndMessage<LibObjT>, LibObjT>;
explicit CommonStreamEndMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonPacket<bt_packet>>::type;
public:
- using Shared = internal::SharedMessage<CommonPacketBeginningMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonPacketBeginningMessage<LibObjT>, LibObjT>;
explicit CommonPacketBeginningMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonPacket<bt_packet>>::type;
public:
- using Shared = internal::SharedMessage<CommonPacketEndMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonPacketEndMessage<LibObjT>, LibObjT>;
explicit CommonPacketEndMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonEvent<bt_event>>::type;
public:
- using Shared = internal::SharedMessage<CommonEventMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonEventMessage<LibObjT>, LibObjT>;
explicit CommonEventMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonStream<bt_stream>>::type;
public:
- using Shared = internal::SharedMessage<CommonDiscardedEventsMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonDiscardedEventsMessage<LibObjT>, LibObjT>;
explicit CommonDiscardedEventsMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
CommonStream<bt_stream>>::type;
public:
- using Shared = internal::SharedMessage<CommonDiscardedPacketsMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonDiscardedPacketsMessage<LibObjT>, LibObjT>;
explicit CommonDiscardedPacketsMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
public:
- using Shared =
- internal::SharedMessage<CommonMessageIteratorInactivityMessage<LibObjT>, LibObjT>;
+ using Shared = SharedMessage<CommonMessageIteratorInactivityMessage<LibObjT>, LibObjT>;
explicit CommonMessageIteratorInactivityMessage(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonMessage {libObjPtr}
return CommonDiscardedEventsMessage<LibObjT> {this->libObjPtr()};
}
+template <typename LibObjT>
+CommonDiscardedPacketsMessage<LibObjT> CommonMessage<LibObjT>::asDiscardedPackets() const noexcept
+{
+ BT_ASSERT_DBG(this->isDiscardedPackets());
+ return CommonDiscardedPacketsMessage<LibObjT> {this->libObjPtr()};
+}
+
template <typename LibObjT>
CommonMessageIteratorInactivityMessage<LibObjT>
CommonMessage<LibObjT>::asMessageIteratorInactivity() const noexcept