Changeset View
Changeset View
Standalone View
Standalone View
src/interfaces/handler.h
- This file was moved from src/interface/handler.h.
// Copyright (c) 2018 The Bitcoin Core developers | // Copyright (c) 2018 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_INTERFACE_HANDLER_H | #ifndef BITCOIN_INTERFACES_HANDLER_H | ||||
#define BITCOIN_INTERFACE_HANDLER_H | #define BITCOIN_INTERFACES_HANDLER_H | ||||
#include <memory> | #include <memory> | ||||
namespace boost { | namespace boost { | ||||
namespace signals2 { | namespace signals2 { | ||||
class connection; | class connection; | ||||
} // namespace signals2 | } // namespace signals2 | ||||
} // namespace boost | } // namespace boost | ||||
namespace interface { | namespace interfaces { | ||||
//! Generic interface for managing an event handler or callback function | //! Generic interface for managing an event handler or callback function | ||||
//! registered with another interface. Has a single disconnect method to cancel | //! registered with another interface. Has a single disconnect method to cancel | ||||
//! the registration and prevent any future notifications. | //! the registration and prevent any future notifications. | ||||
class Handler { | class Handler { | ||||
public: | public: | ||||
virtual ~Handler() {} | virtual ~Handler() {} | ||||
//! Disconnect the handler. | //! Disconnect the handler. | ||||
virtual void disconnect() = 0; | virtual void disconnect() = 0; | ||||
}; | }; | ||||
//! Return handler wrapping a boost signal connection. | //! Return handler wrapping a boost signal connection. | ||||
std::unique_ptr<Handler> MakeHandler(boost::signals2::connection connection); | std::unique_ptr<Handler> MakeHandler(boost::signals2::connection connection); | ||||
} // namespace interface | } // namespace interfaces | ||||
#endif // BITCOIN_INTERFACE_HANDLER_H | #endif // BITCOIN_INTERFACES_HANDLER_H |