diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2014-07-03 10:57:43 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2014-07-03 10:57:43 +0000 |
commit | b800c9cd906a793bb126805435e5f7dffe06b119 (patch) | |
tree | e3c757ee82df6e91a34e251d3974f342ab2cb6c6 /ACE/ace/Event_Handler.h | |
parent | f9afe76244e0523be58dbbe2703a94fdbe2cca2d (diff) | |
download | ATCD-b800c9cd906a793bb126805435e5f7dffe06b119.tar.gz |
Thu Jul 3 10:47:48 UTC 2014 Johnny Willemsen <jwillemsen@remedy.nl>
* ace/Event_Handler.h:
Introduce ACE::make_event_handler<T> factory method which
is enabled when we have C++11 support. This is similar to
std::make_unique and std::make_shared, but can be used
to allocate ACE_Event_Handler instances and directly
assign them to a ACE_Event_Handler_var
* tests/Bug_2820_Regression_Test.cpp:
Use the new ACE::make_event_handler<T>
* ace/OS_NS_stdio.inl:
* ace/config-win32-msvc-14.h:
msvc14 has C99 compliant vsnprintf/vsnwprintf
* ace/Dev_Poll_Reactor.cpp:
* ace/Get_Opt.cpp:
* ace/MMAP_Memory_Pool.cpp:
* ace/SOCK_Dgram_Bcast.cpp:
* ace/Select_Reactor_Base.cpp:
* ace/Service_Gestalt.cpp:
* ace/Sock_Connect.cpp:
* ace/WFMO_Reactor.cpp:
* apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h:
* apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h:
* bin/fuzz.pl:
* examples/Reactor/Proactor/test_udp_proactor.cpp:
Fixed typos
* debian/debian.control:
* debian/libace-6.2.7.lintian-overrides:
* debian/libace-dev.lintian-overrides:
* debian/libace-doc.lintian-overrides:
* debian/libace-flreactor-6.2.7.lintian-overrides:
* debian/libace-flreactor-dev.lintian-overrides:
* debian/libace-foxreactor-6.2.7.lintian-overrides:
* debian/libace-foxreactor-dev.lintian-overrides:
* debian/libace-htbp-6.2.7.lintian-overrides:
* debian/libace-htbp-dev.lintian-overrides:
* debian/libace-inet-6.2.7.lintian-overrides:
* debian/libace-inet-dev.lintian-overrides:
* debian/libace-inet-ssl-6.2.7.lintian-overrides:
* debian/libace-inet-ssl-dev.lintian-overrides:
* debian/libace-qtreactor-6.2.7.lintian-overrides:
* debian/libace-qtreactor-dev.lintian-overrides:
* debian/libace-rmcast-6.2.7.lintian-overrides:
* debian/libace-rmcast-dev.lintian-overrides:
* debian/libace-ssl-6.2.7.lintian-overrides:
* debian/libace-ssl-dev.lintian-overrides:
* debian/libace-tkreactor-6.2.7.lintian-overrides:
* debian/libace-tkreactor-dev.lintian-overrides:
* debian/libace-tmcast-6.2.7.lintian-overrides:
* debian/libace-tmcast-dev.lintian-overrides:
* debian/libace-xml-utils-6.2.7.lintian-overrides:
* debian/libace-xml-utils-dev.lintian-overrides:
* debian/libace-xtreactor-6.2.7.lintian-overrides:
* debian/libace-xtreactor-dev.lintian-overrides:
* debian/libacexml-6.2.7.lintian-overrides:
* debian/libacexml-dev.lintian-overrides:
* debian/libkokyu-6.2.7.lintian-overrides:
* debian/libkokyu-dev.lintian-overrides:
* debian/libnetsvcs-6.2.7.lintian-overrides:
* debian/libtao-2.2.7.lintian-overrides:
* debian/libtao-dev.lintian-overrides:
* debian/libtao-doc.lintian-overrides:
* debian/libtao-flresource-2.2.7.lintian-overrides:
* debian/libtao-flresource-dev.lintian-overrides:
* debian/libtao-foxresource-2.2.7.lintian-overrides:
* debian/libtao-foxresource-dev.lintian-overrides:
* debian/libtao-orbsvcs-2.2.7.lintian-overrides:
* debian/libtao-qtresource-2.2.7.lintian-overrides:
* debian/libtao-qtresource-dev.lintian-overrides:
* debian/libtao-tkresource-2.2.7.lintian-overrides:
* debian/libtao-tkresource-dev.lintian-overrides:
* debian/libtao-xtresource-2.2.7.lintian-overrides:
* debian/libtao-xtresource-dev.lintian-overrides:
Imported files from debian packaging
Diffstat (limited to 'ACE/ace/Event_Handler.h')
-rw-r--r-- | ACE/ace/Event_Handler.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/ACE/ace/Event_Handler.h b/ACE/ace/Event_Handler.h index 7f2a26f5db5..88524608cda 100644 --- a/ACE/ace/Event_Handler.h +++ b/ACE/ace/Event_Handler.h @@ -316,9 +316,7 @@ private: */ class ACE_Export ACE_Event_Handler_var { - public: - /// Default constructor. ACE_Event_Handler_var (void); @@ -355,10 +353,36 @@ private: ACE_Event_Handler *ptr_; }; +#if defined ACE_HAS_CPP11 + +namespace ACE +{ + /// With C++11 it is common to not use C++ new and delete, but + /// use std::make_shared and std::make_unique. This will not + /// work for ACE event handlers so we introduce a new + /// ACE::make_event_handler which can be used in user code to + /// allocate a new ACE event handler instance and directly assign + /// it to a ACE_Event_Handler_var + /// As user this now makes it for example possible to implement + /// the following when Simple_Handler is derived from ACE_Event_Handler + /// ACE_Event_Handler_var v = + /// ACE::make_event_handler<Simple_Handler> (reactor.get()); + template<class T, + typename = typename + std::enable_if<std::is_base_of<ACE_Event_Handler, T>::value>::type, + typename ...Args> inline + ACE_Event_Handler_var make_event_handler (Args&& ...args) + { + return ACE_Event_Handler_var (new T (std::forward<Args> (args)...)); + } +} + +#endif + /** * @class ACE_Notification_Buffer * - * @brief Simple wrapper for passing <ACE_Event_Handler *>s and + * @brief Simple wrapper for passing ACE_Event_Handler *s and * ACE_Reactor_Masks between threads. */ class ACE_Export ACE_Notification_Buffer |