38 lines
890 B
C++
38 lines
890 B
C++
#pragma once
|
|
|
|
#ifndef THIS_SERVER_H_X0CJLVVW
|
|
#define THIS_SERVER_H_X0CJLVVW
|
|
|
|
namespace rpc {
|
|
|
|
namespace detail {
|
|
class server_session;
|
|
}
|
|
|
|
//! \brief Allows controlling the server instance from the
|
|
//! currently executing handler.
|
|
class this_server_t {
|
|
public:
|
|
//! \brief Gracefully stops the server.
|
|
void stop();
|
|
|
|
//! \brief Cancels a requested stop operation.
|
|
void cancel_stop();
|
|
|
|
friend class rpc::detail::server_session;
|
|
|
|
private:
|
|
bool stopping_;
|
|
};
|
|
|
|
//! \brief A thread-local object that can be used to control
|
|
//! the behavior of the server w.r.t. the handler. Accessing this object
|
|
//! from handlers that execute the same function concurrently is safe.
|
|
//! \note Accessing this object outside of handlers while a server is
|
|
//! running is potentially unsafe.
|
|
this_server_t &this_server();
|
|
|
|
} /* rpc */
|
|
|
|
#endif /* end of include guard: THIS_SERVER_H_X0CJLVVW */
|