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 */
|