summaryrefslogtreecommitdiff
path: root/ace/Event_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Event_Handler.cpp')
-rw-r--r--ace/Event_Handler.cpp144
1 files changed, 142 insertions, 2 deletions
diff --git a/ace/Event_Handler.cpp b/ace/Event_Handler.cpp
index 11b1c48b38e..aa96116f662 100644
--- a/ace/Event_Handler.cpp
+++ b/ace/Event_Handler.cpp
@@ -18,8 +18,10 @@ ACE_RCSID(ace, Event_Handler, "$Id$")
ACE_Event_Handler::ACE_Event_Handler (ACE_Reactor *r,
int p)
- : priority_ (p),
- reactor_ (r)
+ : reference_count_ (1)
+ , priority_ (p)
+ , reactor_ (r)
+ , reference_counting_policy_ (Reference_Counting_Policy::DISABLED)
{
// ACE_TRACE ("ACE_Event_Handler::ACE_Event_Handler");
}
@@ -172,6 +174,58 @@ ACE_Event_Handler::reactor (void) const
return this->reactor_;
}
+ACE_Reactor_Timer_Interface *
+ACE_Event_Handler::reactor_timer_interface (void) const
+{
+ ACE_TRACE ("ACE_Event_Handler::reactor_timer_interface");
+ return this->reactor_;
+}
+
+ACE_Event_Handler::Reference_Count
+ACE_Event_Handler::add_reference (void)
+{
+ return ++this->reference_count_;
+}
+
+ACE_Event_Handler::Reference_Count
+ACE_Event_Handler::remove_reference (void)
+{
+ Reference_Count result =
+ --this->reference_count_;
+
+ if (result == 0)
+ delete this;
+
+ return result;
+}
+
+ACE_Event_Handler::Policy::~Policy (void)
+{
+}
+
+ACE_Event_Handler::Reference_Counting_Policy::Reference_Counting_Policy (Reference_Counting_Policy::Value value)
+ : value_ (value)
+{
+}
+
+ACE_Event_Handler::Reference_Counting_Policy::Value
+ACE_Event_Handler::Reference_Counting_Policy::value (void) const
+{
+ return this->value_;
+}
+
+void
+ACE_Event_Handler::Reference_Counting_Policy::value (ACE_Event_Handler::Reference_Counting_Policy::Value value)
+{
+ this->value_ = value;
+}
+
+ACE_Event_Handler::Reference_Counting_Policy &
+ACE_Event_Handler::reference_counting_policy (void)
+{
+ return this->reference_counting_policy_;
+}
+
#if !defined (ACE_HAS_WINCE)
ACE_THR_FUNC_RETURN
@@ -234,6 +288,92 @@ ACE_Event_Handler::remove_stdin_handler (ACE_Reactor *reactor,
#endif /* ACE_HAS_WINCE */
+ACE_Event_Handler_var::ACE_Event_Handler_var (void)
+ : ptr_ (0)
+{
+}
+
+ACE_Event_Handler_var::ACE_Event_Handler_var (ACE_Event_Handler *p)
+ : ptr_ (p)
+{
+}
+
+ACE_Event_Handler_var::ACE_Event_Handler_var (const ACE_Event_Handler_var &b)
+ : ptr_ (b.ptr_)
+{
+ if (this->ptr_ != 0)
+ {
+ this->ptr_->add_reference ();
+ }
+}
+
+ACE_Event_Handler_var::~ACE_Event_Handler_var (void)
+{
+ if (this->ptr_ != 0)
+ {
+ this->ptr_->remove_reference ();
+ }
+}
+
+ACE_Event_Handler_var &
+ACE_Event_Handler_var::operator= (ACE_Event_Handler *p)
+{
+ if (this->ptr_ == p)
+ return *this;
+
+ if (this->ptr_ != 0)
+ this->ptr_->remove_reference ();
+
+ this->ptr_ = p;
+
+ return *this;
+}
+
+ACE_Event_Handler_var &
+ACE_Event_Handler_var::operator= (const ACE_Event_Handler_var &b)
+{
+ if (this->ptr_ != b.ptr_)
+ {
+ if (this->ptr_ != 0)
+ {
+ this->ptr_->remove_reference ();
+ }
+
+ if ((this->ptr_ = b.ptr_) != 0)
+ {
+ this->ptr_->add_reference ();
+ }
+ }
+
+ return *this;
+}
+
+ACE_Event_Handler *
+ACE_Event_Handler_var::operator->() const
+{
+ return this->ptr_;
+}
+
+ACE_Event_Handler *
+ACE_Event_Handler_var::handler (void) const
+{
+ return this->ptr_;
+}
+
+ACE_Event_Handler *
+ACE_Event_Handler_var::release (void)
+{
+ ACE_Event_Handler *old = this->ptr_;
+ this->ptr_ = 0;
+ return old;
+}
+
+void
+ACE_Event_Handler_var::reset (ACE_Event_Handler *p)
+{
+ *this = p;
+}
+
ACE_Notification_Buffer::ACE_Notification_Buffer (void)
{
ACE_TRACE ("ACE_Notification_Buffer::ACE_Notification_Buffer");