{
}
-protected:
bt2c::CStringView _name() const noexcept
{
return _mSelfComp.name();
}
static void getSupportedMipVersions(const SelfComponentClass selfCompCls,
- const ConstValue params, const LoggingLevel loggingLevel,
+ const ConstMapValue params, const LoggingLevel loggingLevel,
const UnsignedIntegerRangeSet ranges)
{
UserComponentT::_getSupportedMipVersions(selfCompCls, params, loggingLevel, ranges);
}
/* Overloadable */
- static void _getSupportedMipVersions(SelfComponentClass, ConstValue, LoggingLevel,
+ static void _getSupportedMipVersions(SelfComponentClass, ConstMapValue, LoggingLevel,
const UnsignedIntegerRangeSet ranges)
{
ranges.addRange(0, 0);
}
static void getSupportedMipVersions(const SelfComponentClass selfCompCls,
- const ConstValue params, const LoggingLevel loggingLevel,
+ const ConstMapValue params, const LoggingLevel loggingLevel,
const UnsignedIntegerRangeSet ranges)
{
UserComponentT::_getSupportedMipVersions(selfCompCls, params, loggingLevel, ranges);
}
/* Overloadable */
- static void _getSupportedMipVersions(SelfComponentClass, ConstValue, LoggingLevel,
+ static void _getSupportedMipVersions(SelfComponentClass, ConstMapValue, LoggingLevel,
const UnsignedIntegerRangeSet ranges)
{
ranges.addRange(0, 0);
}
static void getSupportedMipVersions(const SelfComponentClass selfCompCls,
- const ConstValue params, const LoggingLevel loggingLevel,
+ const ConstMapValue params, const LoggingLevel loggingLevel,
const UnsignedIntegerRangeSet ranges)
{
UserComponentT::_getSupportedMipVersions(selfCompCls, params, loggingLevel, ranges);
}
/* Overloadable */
- static void _getSupportedMipVersions(SelfComponentClass, ConstValue, LoggingLevel,
+ static void _getSupportedMipVersions(SelfComponentClass, ConstMapValue, LoggingLevel,
const UnsignedIntegerRangeSet ranges)
{
ranges.addRange(0, 0);
/* Type of `_mExcToThrowType` */
enum class _ExcToThrowType
{
- NONE,
- ERROR,
- MEM_ERROR,
+ None,
+ Error,
+ MemError,
};
protected:
}
public:
- ~UserMessageIterator()
- {
- this->_resetError();
- }
-
- void next(bt2::ConstMessageArray& messages)
+ void next(ConstMessageArray& messages)
{
/* Any saved error? Now is the time to throw */
- if (G_UNLIKELY(_mExcToThrowType != _ExcToThrowType::NONE)) {
+ if (G_UNLIKELY(_mExcToThrowType != _ExcToThrowType::None)) {
/* Move `_mSavedLibError`, if any, as current thread error */
if (_mSavedLibError) {
- BT_CURRENT_THREAD_MOVE_ERROR_AND_RESET(_mSavedLibError);
+ bt_current_thread_move_error(_mSavedLibError.release());
}
/* Throw the corresponding exception */
- if (_mExcToThrowType == _ExcToThrowType::ERROR) {
- throw bt2::Error {};
+ if (_mExcToThrowType == _ExcToThrowType::Error) {
+ throw Error {};
} else {
- BT_ASSERT(_mExcToThrowType == _ExcToThrowType::MEM_ERROR);
- throw bt2::MemoryError {};
+ BT_ASSERT(_mExcToThrowType == _ExcToThrowType::MemError);
+ throw MemoryError {};
}
}
* if any, so that we can restore it later (see the beginning of
* this method).
*/
- BT_ASSERT_DBG(_mExcToThrowType == _ExcToThrowType::NONE);
+ BT_ASSERT_DBG(_mExcToThrowType == _ExcToThrowType::None);
try {
this->_userObj()._next(messages);
/* We're done: everything below is exception handling */
return;
- } catch (const bt2::TryAgain&) {
+ } catch (const TryAgain&) {
if (messages.isEmpty()) {
throw;
}
throw;
}
- _mExcToThrowType = _ExcToThrowType::MEM_ERROR;
- } catch (const bt2::Error&) {
+ _mExcToThrowType = _ExcToThrowType::MemError;
+ } catch (const Error&) {
if (messages.isEmpty()) {
throw;
}
- _mExcToThrowType = _ExcToThrowType::ERROR;
+ _mExcToThrowType = _ExcToThrowType::Error;
}
- if (_mExcToThrowType != _ExcToThrowType::NONE) {
+ if (_mExcToThrowType != _ExcToThrowType::None) {
BT_CPPLOGE(
"An error occurred, but there are {} messages to return: delaying the error reporting.",
messages.length());
BT_ASSERT(!_mSavedLibError);
- _mSavedLibError = bt_current_thread_take_error();
+ _mSavedLibError.reset(bt_current_thread_take_error());
}
}
return _mSelfMsgIter.createMessageIterator(port);
}
+ StreamBeginningMessage::Shared _createStreamBeginningMessage(const ConstStream stream) const
+ {
+ return _mSelfMsgIter.createStreamBeginningMessage(stream);
+ }
+
+ StreamEndMessage::Shared _createStreamEndMessage(const ConstStream stream) const
+ {
+ return _mSelfMsgIter.createStreamEndMessage(stream);
+ }
+
+ EventMessage::Shared _createEventMessage(const ConstEventClass eventCls,
+ const ConstStream stream) const
+ {
+ return _mSelfMsgIter.createEventMessage(eventCls, stream);
+ }
+
+ EventMessage::Shared _createEventMessage(const ConstEventClass eventCls,
+ const ConstStream stream,
+ const std::uint64_t clockSnapshotValue) const
+ {
+ return _mSelfMsgIter.createEventMessage(eventCls, stream, clockSnapshotValue);
+ }
+
+ EventMessage::Shared _createEventMessage(const ConstEventClass eventCls,
+ const ConstPacket packet) const
+ {
+ return _mSelfMsgIter.createEventMessage(eventCls, packet);
+ }
+
+ EventMessage::Shared _createEventMessage(const ConstEventClass eventCls,
+ const ConstPacket packet,
+ const std::uint64_t clockSnapshotValue) const
+ {
+ return _mSelfMsgIter.createEventMessage(eventCls, packet, clockSnapshotValue);
+ }
+
+ PacketBeginningMessage::Shared _createPacketBeginningMessage(const ConstPacket packet) const
+ {
+ return _mSelfMsgIter.createPacketBeginningMessage(packet);
+ }
+
+ PacketBeginningMessage::Shared
+ _createPacketBeginningMessage(const ConstPacket packet,
+ const std::uint64_t clockSnapshotValue) const
+ {
+ return _mSelfMsgIter.createPacketBeginningMessage(packet, clockSnapshotValue);
+ }
+
+ PacketEndMessage::Shared _createPacketEndMessage(const ConstPacket packet) const
+ {
+ return _mSelfMsgIter.createPacketEndMessage(packet);
+ }
+
+ PacketEndMessage::Shared _createPacketEndMessage(const ConstPacket packet,
+ const std::uint64_t clockSnapshotValue) const
+ {
+ return _mSelfMsgIter.createPacketEndMessage(packet, clockSnapshotValue);
+ }
+
+ DiscardedEventsMessage::Shared _createDiscardedEventsMessage(const ConstStream stream)
+ {
+ return _mSelfMsgIter.createDiscardedEventsMessage(stream);
+ }
+
+ DiscardedEventsMessage::Shared
+ _createDiscardedEventsMessage(const ConstStream stream,
+ const std::uint64_t beginningClockSnapshotValue,
+ const std::uint64_t endClockSnapshotValue)
+ {
+ return _mSelfMsgIter.createDiscardedEventsMessage(stream, beginningClockSnapshotValue,
+ endClockSnapshotValue);
+ }
+
+ DiscardedPacketsMessage::Shared _createDiscardedPacketsMessage(const ConstStream stream)
+ {
+ return _mSelfMsgIter.createDiscardedPacketsMessage(stream);
+ }
+
+ DiscardedPacketsMessage::Shared
+ _createDiscardedPacketsMessage(const ConstStream stream,
+ const std::uint64_t beginningClockSnapshotValue,
+ const std::uint64_t endClockSnapshotValue)
+ {
+ return _mSelfMsgIter.createDiscardedPacketsMessage(stream, beginningClockSnapshotValue,
+ endClockSnapshotValue);
+ }
+
+ MessageIteratorInactivityMessage::Shared
+ _createMessageIteratorInactivityMessage(const ConstClockClass clockClass,
+ const std::uint64_t clockSnapshotValue)
+ {
+ return _mSelfMsgIter.createMessageIteratorInactivityMessage(clockClass, clockSnapshotValue);
+ }
+
UserComponentT& _component() noexcept
{
return _mSelfMsgIter.component().template data<UserComponentT>();
void _resetError() noexcept
{
- _mExcToThrowType = _ExcToThrowType::NONE;
-
- if (_mSavedLibError) {
- bt_error_release(_mSavedLibError);
- }
+ _mExcToThrowType = _ExcToThrowType::None;
+ _mSavedLibError.reset();
}
SelfMessageIterator _mSelfMsgIter;
*
* It also saves the type of the exception to throw the next time.
*/
- _ExcToThrowType _mExcToThrowType = _ExcToThrowType::NONE;
- const bt_error *_mSavedLibError = nullptr;
+ _ExcToThrowType _mExcToThrowType = _ExcToThrowType::None;
+
+ struct LibErrorDeleter final
+ {
+ void operator()(const bt_error * const error) const noexcept
+ {
+ bt_error_release(error);
+ }
+ };
+
+ std::unique_ptr<const bt_error, LibErrorDeleter> _mSavedLibError;
protected:
bt2c::Logger _mLogger;