summaryrefslogtreecommitdiff
path: root/ace/Asynch_IO.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Asynch_IO.cpp')
-rw-r--r--ace/Asynch_IO.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/ace/Asynch_IO.cpp b/ace/Asynch_IO.cpp
index 93d33c6f6ca..7b652ca0525 100644
--- a/ace/Asynch_IO.cpp
+++ b/ace/Asynch_IO.cpp
@@ -96,7 +96,7 @@ ACE_Asynch_Operation::open (ACE_Handler &handler,
const void *completion_key,
ACE_Proactor *proactor)
{
- return this->implementation ()->open (handler,
+ return this->implementation ()->open (handler.proxy (),
handle,
completion_key,
proactor);
@@ -182,7 +182,7 @@ ACE_Asynch_Read_Stream::read (ACE_Message_Block &message_block,
bytes_to_read,
act,
priority,
- signal_number);
+ signal_number);
}
#if (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE) && (ACE_HAS_WINNT4) && (ACE_HAS_WINNT4 != 0))
@@ -985,15 +985,24 @@ ACE_Asynch_Transmit_File::Header_And_Trailer::transmit_buffers (void)
ACE_Handler::ACE_Handler (void)
: proactor_ (0), handle_ (ACE_INVALID_HANDLE)
{
+ ACE_Handler::Proxy *p;
+ ACE_NEW (p, ACE_Handler::Proxy (this));
+ this->proxy_.reset (p);
}
ACE_Handler::ACE_Handler (ACE_Proactor *d)
: proactor_ (d), handle_ (ACE_INVALID_HANDLE)
{
+ ACE_Handler::Proxy *p;
+ ACE_NEW (p, ACE_Handler::Proxy (this));
+ this->proxy_.reset (p);
}
ACE_Handler::~ACE_Handler (void)
{
+ ACE_Handler::Proxy *p = this->proxy_.get ();
+ if (p)
+ p->reset ();
}
void
@@ -1076,6 +1085,12 @@ ACE_Handler::handle (ACE_HANDLE h)
this->handle_ = h;
}
+ACE_Refcounted_Auto_Ptr<ACE_Handler::Proxy, ACE_SYNCH_MUTEX> &
+ACE_Handler::proxy (void)
+{
+ return this->proxy_;
+}
+
// ************************************************************
ACE_Service_Handler::ACE_Service_Handler (void)