7 #ifndef HOOKS_MANAGER_H 8 #define HOOKS_MANAGER_H 13 #include <boost/noncopyable.hpp> 14 #include <boost/shared_ptr.hpp> 94 static bool unloadLibraries();
111 static void prepareUnloadLibraries();
122 static bool calloutsPresent(
int index);
133 static bool commandHandlersPresent(
const std::string& command_name);
161 static void callCommandHandlers(
const std::string& command_name,
205 static boost::shared_ptr<CalloutHandle> createCalloutHandle();
223 static int registerHook(
const std::string& name);
230 static std::vector<std::string> getLibraryNames();
253 static std::vector<std::string> validateLibraries(
254 const std::vector<std::string>& libraries);
291 static void park(
const std::string& hook_name, T parked_object,
292 std::function<
void()> unpark_callback) {
294 getParkingLotPtr(hook_name)->park(parked_object, unpark_callback);
308 static bool unpark(
const std::string& hook_name, T parked_object) {
310 getParkingLotPtr(hook_name)->unpark(parked_object,
true));
320 static bool drop(
const std::string& hook_name, T parked_object) {
322 getParkingLotPtr(hook_name)->drop(parked_object));
335 static void reference(
const std::string& hook_name, T parked_object) {
337 getParkingLotPtr(hook_name)->reference(parked_object);
357 static void setTestMode(
bool mode);
362 static bool getTestMode();
390 std::string validateLibrariesInternal(
391 const std::vector<std::string>& libraries)
const;
408 bool unloadLibrariesInternal();
411 void prepareUnloadLibrariesInternal();
419 bool calloutsPresentInternal(
int index);
430 bool commandHandlersPresentInternal(
const std::string& command_name);
447 void callCommandHandlersInternal(
const std::string& command_name,
453 boost::shared_ptr<CalloutHandle> createCalloutHandleInternal();
470 std::vector<std::string> getLibraryNamesInternal()
const;
482 boost::shared_ptr<LibraryManagerCollection> lm_collection_;
487 boost::shared_ptr<CalloutManager> callout_manager_;
499 #endif // HOOKS_MANAGER_H Library manager collection.
LibrariesStillOpened(const char *file, size_t line, const char *what)
static const int CONTEXT_CREATE
Index numbers for pre-defined hooks.
static ServerHooks & getServerHooks()
Return ServerHooks object.
static void clearParkingLots()
Clears any parking packets.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
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.
Per-packet callout handle.
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 const int CONTEXT_DESTROY
This is a base class for exceptions thrown from the DNS library module.
Defines the logger used by the top-level component of kea-lfc.
static bool drop(const std::string &hook_name, T parked_object)
Removes parked object without calling a callback.
ParkingLotsPtr getParkingLotsPtr() const
Returns pointer to all parking lots.