cpp-common/bt2: remove unnecessary mentions of `bt2::`
[babeltrace.git] / src / cpp-common / bt2 / self-message-iterator.hpp
CommitLineData
73b3ea14
PP
1/*
2 * Copyright (c) 2023 Philippe Proulx <pproulx@efficios.com>
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#ifndef BABELTRACE_CPP_COMMON_BT2_SELF_MESSAGE_ITERATOR_HPP
8#define BABELTRACE_CPP_COMMON_BT2_SELF_MESSAGE_ITERATOR_HPP
9
10#include <babeltrace2/babeltrace.h>
11
73b3ea14
PP
12#include "common/common.h"
13
14#include "borrowed-object.hpp"
15#include "message-iterator.hpp"
16#include "self-component-port.hpp"
17
18namespace bt2 {
19
20class SelfMessageIterator final : public BorrowedObject<bt_self_message_iterator>
21{
22public:
d246c457 23 explicit SelfMessageIterator(const LibObjPtr libObjPtr) noexcept :
73b3ea14
PP
24 _ThisBorrowedObject {libObjPtr}
25 {
26 }
27
28 MessageIterator::Shared createMessageIterator(const SelfComponentInputPort port) const
29 {
30 bt_message_iterator *libMsgIterPtr = nullptr;
31 const auto status = bt_message_iterator_create_from_message_iterator(
32 this->libObjPtr(), port.libObjPtr(), &libMsgIterPtr);
33
34 switch (status) {
35 case BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK:
73b3ea14
PP
36 return MessageIterator::Shared::createWithoutRef(libMsgIterPtr);
37 case BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_MEMORY_ERROR:
38 throw MemoryError {};
39 case BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_ERROR:
40 throw Error {};
41 default:
42 bt_common_abort();
43 }
44 }
45
46 SelfComponent component() const noexcept
47 {
48 return SelfComponent {bt_self_message_iterator_borrow_component(this->libObjPtr())};
49 }
50
51 SelfComponentOutputPort port() const noexcept
52 {
53 return SelfComponentOutputPort {bt_self_message_iterator_borrow_port(this->libObjPtr())};
54 }
55
56 bool isInterrupted() const noexcept
57 {
58 return static_cast<bool>(bt_self_message_iterator_is_interrupted(this->libObjPtr()));
59 }
60
61 template <typename T>
62 T& data() const noexcept
63 {
64 return *static_cast<T *>(bt_self_message_iterator_get_data(this->libObjPtr()));
65 }
66
67 template <typename T>
2a24eba8 68 SelfMessageIterator data(T& obj) const noexcept
73b3ea14 69 {
1e700b7d
SM
70 bt_self_message_iterator_set_data(this->libObjPtr(),
71 const_cast<void *>(static_cast<const void *>(&obj)));
2a24eba8 72 return *this;
73b3ea14 73 }
5003e61f 74
292762ab 75 StreamBeginningMessage::Shared createStreamBeginningMessage(const ConstStream stream) const
5003e61f
SM
76 {
77 const auto libObjPtr =
78 bt_message_stream_beginning_create(this->libObjPtr(), stream.libObjPtr());
79
80 if (!libObjPtr) {
81 throw MemoryError {};
82 }
83
292762ab 84 return StreamBeginningMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
85 }
86
292762ab 87 StreamEndMessage::Shared createStreamEndMessage(const ConstStream stream) const
5003e61f
SM
88 {
89 const auto libObjPtr = bt_message_stream_end_create(this->libObjPtr(), stream.libObjPtr());
90
91 if (!libObjPtr) {
92 throw MemoryError {};
93 }
94
292762ab 95 return StreamEndMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
96 }
97
292762ab
SM
98 EventMessage::Shared createEventMessage(const ConstEventClass eventCls,
99 const ConstStream stream) const
5003e61f
SM
100 {
101 const auto libObjPtr =
102 bt_message_event_create(this->libObjPtr(), eventCls.libObjPtr(), stream.libObjPtr());
103
104 if (!libObjPtr) {
105 throw MemoryError {};
106 }
107
292762ab 108 return EventMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
109 }
110
292762ab
SM
111 EventMessage::Shared createEventMessage(const ConstEventClass eventCls,
112 const ConstStream stream,
113 const std::uint64_t clockSnapshotValue) const
5003e61f
SM
114 {
115 const auto libObjPtr = bt_message_event_create_with_default_clock_snapshot(
116 this->libObjPtr(), eventCls.libObjPtr(), stream.libObjPtr(), clockSnapshotValue);
117
118 if (!libObjPtr) {
119 throw MemoryError {};
120 }
121
292762ab 122 return EventMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
123 }
124
292762ab
SM
125 EventMessage::Shared createEventMessage(const ConstEventClass eventCls,
126 const ConstPacket packet) const
5003e61f
SM
127 {
128 const auto libObjPtr = bt_message_event_create_with_packet(
129 this->libObjPtr(), eventCls.libObjPtr(), packet.libObjPtr());
130
131 if (!libObjPtr) {
132 throw MemoryError {};
133 }
134
292762ab 135 return EventMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
136 }
137
292762ab
SM
138 EventMessage::Shared createEventMessage(const ConstEventClass eventCls,
139 const ConstPacket packet,
140 const std::uint64_t clockSnapshotValue) const
5003e61f
SM
141 {
142 const auto libObjPtr = bt_message_event_create_with_packet_and_default_clock_snapshot(
143 this->libObjPtr(), eventCls.libObjPtr(), packet.libObjPtr(), clockSnapshotValue);
144
145 if (!libObjPtr) {
146 throw MemoryError {};
147 }
148
292762ab 149 return EventMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
150 }
151
292762ab 152 PacketBeginningMessage::Shared createPacketBeginningMessage(const ConstPacket packet) const
5003e61f
SM
153 {
154 const auto libObjPtr =
155 bt_message_packet_beginning_create(this->libObjPtr(), packet.libObjPtr());
156
157 if (!libObjPtr) {
158 throw MemoryError {};
159 }
160
292762ab 161 return PacketBeginningMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
162 }
163
292762ab
SM
164 PacketBeginningMessage::Shared
165 createPacketBeginningMessage(const ConstPacket packet,
5003e61f
SM
166 const std::uint64_t clockSnapshotValue) const
167 {
168 const auto libObjPtr = bt_message_packet_beginning_create_with_default_clock_snapshot(
169 this->libObjPtr(), packet.libObjPtr(), clockSnapshotValue);
170
171 if (!libObjPtr) {
172 throw MemoryError {};
173 }
174
292762ab 175 return PacketBeginningMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
176 }
177
292762ab 178 PacketEndMessage::Shared createPacketEndMessage(const ConstPacket packet) const
5003e61f
SM
179 {
180 const auto libObjPtr = bt_message_packet_end_create(this->libObjPtr(), packet.libObjPtr());
181
182 if (!libObjPtr) {
183 throw MemoryError {};
184 }
185
292762ab 186 return PacketEndMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
187 }
188
292762ab
SM
189 PacketEndMessage::Shared createPacketEndMessage(const ConstPacket packet,
190 const std::uint64_t clockSnapshotValue) const
5003e61f
SM
191 {
192 const auto libObjPtr = bt_message_packet_end_create_with_default_clock_snapshot(
193 this->libObjPtr(), packet.libObjPtr(), clockSnapshotValue);
194
195 if (!libObjPtr) {
196 throw MemoryError {};
197 }
198
292762ab 199 return PacketEndMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
200 }
201
292762ab 202 DiscardedEventsMessage::Shared createDiscardedEventsMessage(const ConstStream stream)
5003e61f
SM
203 {
204 const auto libObjPtr =
205 bt_message_discarded_events_create(this->libObjPtr(), stream.libObjPtr());
206
207 if (!libObjPtr) {
208 throw MemoryError {};
209 }
210
292762ab 211 return DiscardedEventsMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
212 }
213
292762ab
SM
214 DiscardedEventsMessage::Shared
215 createDiscardedEventsMessage(const ConstStream stream,
5003e61f 216 const std::uint64_t beginningClockSnapshotValue,
d2ba27dd 217 const std::uint64_t endClockSnapshotValue) const
5003e61f
SM
218 {
219 const auto libObjPtr = bt_message_discarded_events_create_with_default_clock_snapshots(
220 this->libObjPtr(), stream.libObjPtr(), beginningClockSnapshotValue,
221 endClockSnapshotValue);
222
223 if (!libObjPtr) {
224 throw MemoryError {};
225 }
226
292762ab 227 return DiscardedEventsMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
228 }
229
292762ab 230 DiscardedPacketsMessage::Shared createDiscardedPacketsMessage(const ConstStream stream) const
5003e61f
SM
231 {
232 const auto libObjPtr =
233 bt_message_discarded_packets_create(this->libObjPtr(), stream.libObjPtr());
234
235 if (!libObjPtr) {
236 throw MemoryError {};
237 }
238
292762ab 239 return DiscardedPacketsMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
240 }
241
292762ab
SM
242 DiscardedPacketsMessage::Shared
243 createDiscardedPacketsMessage(const ConstStream stream,
5003e61f 244 const std::uint64_t beginningClockSnapshotValue,
d2ba27dd 245 const std::uint64_t endClockSnapshotValue) const
5003e61f
SM
246 {
247 const auto libObjPtr = bt_message_discarded_packets_create_with_default_clock_snapshots(
248 this->libObjPtr(), stream.libObjPtr(), beginningClockSnapshotValue,
249 endClockSnapshotValue);
250
251 if (!libObjPtr) {
252 throw MemoryError {};
253 }
254
292762ab 255 return DiscardedPacketsMessage::Shared::createWithoutRef(libObjPtr);
5003e61f
SM
256 }
257
292762ab
SM
258 MessageIteratorInactivityMessage::Shared
259 createMessageIteratorInactivityMessage(const ConstClockClass clockClass,
d2ba27dd 260 const std::uint64_t clockSnapshotValue) const
5003e61f
SM
261 {
262 const auto libObjPtr = bt_message_message_iterator_inactivity_create(
263 this->libObjPtr(), clockClass.libObjPtr(), clockSnapshotValue);
264
265 if (!libObjPtr) {
266 throw MemoryError {};
267 }
268
292762ab 269 return MessageIteratorInactivityMessage::Shared::createWithoutRef(libObjPtr);
5003e61f 270 }
73b3ea14
PP
271};
272
273} /* namespace bt2 */
274
275#endif /* BABELTRACE_CPP_COMMON_BT2_SELF_MESSAGE_ITERATOR_HPP */
This page took 0.04015 seconds and 4 git commands to generate.