Seastar
High performance C++ framework for concurrent servers
Public Member Functions | List of all members
seastar::deferred_close< Object > Class Template Reference

Detailed Description

template<typename Object>
class seastar::deferred_close< Object >

Template helper to auto-close obj when destroyed.

Template Parameters
Objecta class exposing a close() method that returns a future<> that is called when the controller is destroyed.

Must be used in a seastar thread as the destructor needs to wait on the obj close() future.

#include <seastar/util/closeable.hh>

Public Member Functions

 deferred_close (Object &obj) noexcept
 
 deferred_close (deferred_close &&x) noexcept
 
 deferred_close (const deferred_close &)=delete
 
deferred_closeoperator= (deferred_close &&x) noexcept
 
 ~deferred_close ()
 Destruct the deferred_close object and auto-close obj.
 
void close_now () noexcept
 Close obj once now.
 
void cancel () noexcept
 

Constructor & Destructor Documentation

◆ deferred_close() [1/2]

template<typename Object >
seastar::deferred_close< Object >::deferred_close ( Object &  obj)
inlinenoexcept

Construct an object that will auto-close obj when destroyed.

Template Parameters
objthe object to auto-close.

◆ deferred_close() [2/2]

template<typename Object >
seastar::deferred_close< Object >::deferred_close ( deferred_close< Object > &&  x)
inlinenoexcept

Moves the deferred_close into a new one, and the old one is canceled.

Member Function Documentation

◆ cancel()

template<typename Object >
void seastar::deferred_close< Object >::cancel ( )
inlinenoexcept

Prevents close() from being called when this object is destroyed. Cannot call close_now() any more after this.

◆ operator=()

template<typename Object >
deferred_close& seastar::deferred_close< Object >::operator= ( deferred_close< Object > &&  x)
inlinenoexcept

Move-assign another deferred_close. The current deferred_close is closed before being assigned. And the other one's state is transferred to the current one.


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