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