11#ifndef RTI_ROUTING_SHUTDOWN_HOOK_HPP_
12#define RTI_ROUTING_SHUTDOWN_HOOK_HPP_
15#include "routingservice/routingservice_service.h"
17namespace rti {
namespace routing {
namespace detail {
19class AbstractShutdownHookForwarder {
22 AbstractShutdownHookForwarder()
24 native_.on_shutdown = on_shutdown_forwarder;
25 native_.shutdown_hook_data =
this;
28 virtual ~AbstractShutdownHookForwarder()
32 virtual void on_shutdown()
36 static void on_shutdown_forwarder(
void *hook_data)
38 AbstractShutdownHookForwarder *self =
39 static_cast<AbstractShutdownHookForwarder*
>(hook_data);
46 const RTI_RoutingServiceRemoteShutdownHook* native()
const
52 RTI_RoutingServiceRemoteShutdownHook native_;
55template<
typename HookFunc>
56class ShutdownHookForwarder :
public AbstractShutdownHookForwarder {
58 ShutdownHookForwarder(HookFunc& shutdown_hook)
59 : shutdown_hook_(shutdown_hook)
70 HookFunc& shutdown_hook_;