/* * Copyright (C) 2014 Pavel Kirienko */ #pragma once #include #include #include namespace uavcan { class UAVCAN_EXPORT IRestartRequestHandler { public: virtual ~IRestartRequestHandler() { } virtual bool handleRestartRequest(NodeID request_source) = 0; }; class UAVCAN_EXPORT RestartRequestServer : Noncopyable { typedef MethodBinder&, protocol::RestartNode::Response&) const> RestartNodeCallback; ServiceServer srv_; IRestartRequestHandler* handler_; void handleRestartNode(const ReceivedDataStructure& request, protocol::RestartNode::Response& response) const; public: explicit RestartRequestServer(INode& node) : srv_(node) , handler_(NULL) { } IRestartRequestHandler* getHandler() const { return handler_; } void setHandler(IRestartRequestHandler* handler) { handler_ = handler; } int start(); }; }