summaryrefslogtreecommitdiff
path: root/ACE/ace/Event_Handler.h
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2014-07-03 10:57:43 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2014-07-03 10:57:43 +0000
commitb800c9cd906a793bb126805435e5f7dffe06b119 (patch)
treee3c757ee82df6e91a34e251d3974f342ab2cb6c6 /ACE/ace/Event_Handler.h
parentf9afe76244e0523be58dbbe2703a94fdbe2cca2d (diff)
downloadATCD-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.h30
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