Destroy I2PControlSession before io_service, cancel waiting operations.

This commit is contained in:
EinMByte 2015-08-02 12:57:16 +02:00
parent 9cca01d159
commit c7f4a79b2c
4 changed files with 28 additions and 5 deletions

View file

@ -57,6 +57,7 @@ const char I2P_CONTROL_ROUTER_MANAGER_RESEED[] = "Reseed";
/**
* "Null" I2P control implementation, does not do actual networking.
* @note authentication tokens are per-session
* @warning an I2PControlSession must be destroyed before its io_service
*/
class I2PControlSession {
@ -104,10 +105,19 @@ public:
/**
* Sets up the appropriate handlers.
* @param ios the parent io_service object
* @param ios the parent io_service object, must remain valid throughout
* the lifetime of this I2PControlSession.
*/
I2PControlSession(boost::asio::io_service& ios);
~I2PControlSession();
/**
* Cancels all operations that are waiting.
* @note must not be called before destruction, destructor handles this
*/
void stop();
/**
* Handle a json string with I2PControl instructions.
*/
@ -120,7 +130,6 @@ private:
const PropertyTree& pt, Response& results
);
typedef void (I2PControlSession::*RequestHandler)(Response& results);
/**
* Tries to authenticate by checking whether the given token is valid.