opm-simulators
Loading...
Searching...
No Matches
Opm::ReservoirCoupling::ScopedLoggerGuard Class Reference

Guard for managing DeferredLogger lifecycle in ReservoirCoupling. More...

#include <ReservoirCoupling.hpp>

Public Member Functions

 ScopedLoggerGuard (Logger &logger, DeferredLogger *deferred_logger)
 ScopedLoggerGuard (const ScopedLoggerGuard &)=delete
ScopedLoggerGuard & operator= (const ScopedLoggerGuard &)=delete
 ScopedLoggerGuard (ScopedLoggerGuard &&other) noexcept
ScopedLoggerGuard & operator= (ScopedLoggerGuard &&other) noexcept

Detailed Description

Guard for managing DeferredLogger lifecycle in ReservoirCoupling.

This class ensures that a DeferredLogger pointer is properly set and cleared in the ReservoirCoupling logger. It follows the RAII (Resource Acquisition Is Initialization) pattern to prevent dangling pointer issues when local DeferredLogger objects go out of scope.

  • Uses a pointer instead of a reference to enable move semantics
  • Implements move constructor/assignment to allow returning from functions and use in std::optional
  • Deletes copy constructor/assignment to ensure single ownership
  • The moved-from object is "nullified" so only the final owner clears the logger

Lifecycle guarantees:

  • Constructor: Sets the DeferredLogger pointer in the ReservoirCoupling logger
  • Destructor: Clears the pointer (only if not moved-from)
  • Move: Transfers ownership; moved-from object becomes inactive (logger_ = nullptr)
Parameters
loggerThe ReservoirCoupling logger (either master or slave)
deferred_loggerThe DeferredLogger to bind to the ReservoirCoupling logger

Example usage:


The documentation for this class was generated from the following file: