7 #ifndef HOOKS_MANAGER_H 8 #define HOOKS_MANAGER_H 13 #include <boost/noncopyable.hpp> 14 #include <boost/shared_ptr.hpp> 26 class LibraryManagerCollection;
223 const std::vector<std::string>& libraries);
268 static void park(
const std::string& hook_name, T parked_object,
269 std::function<
void()> unpark_callback) {
270 getHooksManager().parkInternal(hook_name, parked_object, unpark_callback);
284 static bool unpark(
const std::string& hook_name, T parked_object) {
295 static bool drop(
const std::string& hook_name, T parked_object) {
309 static void reference(
const std::string& hook_name, T parked_object) {
337 void parkInternal(
const std::string& hook_name, T parked_object,
338 std::function<
void()> unpark_callback) {
340 getParkingLotPtr(hook_name)->park(parked_object, unpark_callback);
350 bool unparkInternal(
const std::string& hook_name, T parked_object) {
352 getParkingLotPtr(hook_name)->
unpark(parked_object,
true));
362 static bool dropInternal(
const std::string& hook_name, T parked_object) {
364 getParkingLotPtr(hook_name)->
drop(parked_object));
374 void referenceInternal(
const std::string& hook_name, T parked_object) {
376 getParkingLotPtr(hook_name)->reference(parked_object);
382 void clearParkingLotsInternal() {
399 std::string validateLibrariesInternal(
400 const std::vector<std::string>& libraries)
const;
414 void unloadLibrariesInternal();
422 bool calloutsPresentInternal(
int index);
433 bool commandHandlersPresentInternal(
const std::string& command_name);
440 void callCalloutsInternal(
int index, CalloutHandle& handle);
450 void callCommandHandlersInternal(
const std::string& command_name,
451 CalloutHandle& handle);
456 boost::shared_ptr<CalloutHandle> createCalloutHandleInternal();
462 LibraryHandle& preCalloutsLibraryHandleInternal();
468 LibraryHandle& postCalloutsLibraryHandleInternal();
473 std::vector<std::string> getLibraryNamesInternal()
const;
485 void performConditionalInitialization();
500 void conditionallyInitialize() {
501 if (!lm_collection_) {
502 performConditionalInitialization();
509 boost::shared_ptr<LibraryManagerCollection> lm_collection_;
512 boost::shared_ptr<CalloutManager> callout_manager_;
515 boost::shared_ptr<CalloutManager> shared_callout_manager_;
522 #endif // HOOKS_MANAGER_H
static LibraryHandle & preCalloutsLibraryHandle()
Return pre-callouts library handle.
static const int CONTEXT_CREATE
Index numbers for pre-defined hooks.
static void unloadLibraries()
Unload libraries.
static ServerHooks & getServerHooks()
Return ServerHooks object.
static void callCallouts(int index, CalloutHandle &handle)
Calls the callouts for a given hook.
static int registerHook(const std::string &name)
Register Hook.
static void clearParkingLots()
Clears any parking packets.
static HookLibsCollection getLibraryInfo()
Return list of loaded libraries with its parameters.
static bool calloutsPresent(int index)
Are callouts present?
std::vector< HookLibInfo > HookLibsCollection
A storage for information about hook libraries.
static void reference(const std::string &hook_name, T parked_object)
Increases reference counter for the parked object.
static const int CONTEXT_DESTROY
Per-packet callout handle.
static HooksManager & getHooksManager()
Get singleton hooks manager.
static bool loadLibraries(const HookLibsCollection &libraries)
Load and reload libraries.
static void park(const std::string &hook_name, T parked_object, std::function< void()> unpark_callback)
Park an object (packet).
static bool unpark(const std::string &hook_name, T parked_object)
Forces unparking the object (packet).
static void callCommandHandlers(const std::string &command_name, CalloutHandle &handle)
Calls the callouts/command handlers for a given command name.
static const int CONTEXT_DESTROY
Defines the logger used by the top-level component of kea-dhcp-ddns.
static boost::shared_ptr< CalloutManager > & getSharedCalloutManager()
Return the shared callout manager.
static const int CONTEXT_CREATE
Index numbers for pre-defined hooks.
static std::vector< std::string > validateLibraries(const std::vector< std::string > &libraries)
Validate library list.
static boost::shared_ptr< CalloutHandle > createCalloutHandle()
Return callout handle.
static std::vector< std::string > getLibraryNames()
Return list of loaded libraries.
static bool drop(const std::string &hook_name, T parked_object)
Removes parked object without calling a callback.
static LibraryHandle & postCalloutsLibraryHandle()
Return post-callouts library handle.
static bool commandHandlersPresent(const std::string &command_name)
Checks if control command handlers are present for the specified command.
ParkingLotsPtr getParkingLotsPtr() const
Returns pointer to all parking lots.