Public Types | Public Member Functions | Private Attributes

TAO_ESF_Proxy_RB_Tree< PROXY > Class Template Reference

Concrete Proxy collection based on ACE_RB_Tree. More...

#include <ESF_Proxy_RB_Tree.h>

Collaboration diagram for TAO_ESF_Proxy_RB_Tree< PROXY >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef ACE_RB_Tree< PROXY
*, int, ACE_Less_Than< PROXY * >
, ACE_Null_Mutex
Implementation
 A typedef for the underlying implementaiton class.
typedef
TAO_ESF_Proxy_RB_Tree_Iterator
< PROXY > 
Iterator
 A typedef for the underlying iterator.

Public Member Functions

 TAO_ESF_Proxy_RB_Tree (void)
 Constructor.
TAO_ESF_Proxy_RB_Tree_Iterator
< PROXY > 
begin (void)
TAO_ESF_Proxy_RB_Tree_Iterator
< PROXY > 
end (void)
 Return one past the last element in the collection.
size_t size (void) const
 Return the number of elements in the collection.
void connected (PROXY *)
 Insert a new element to the collection.
void reconnected (PROXY *)
 Insert a new element that could be there already.
void disconnected (PROXY *)
 Remove an element from the collection.
void shutdown (void)

Private Attributes

Implementation impl_
 The underlying implementation object.

Detailed Description

template<class PROXY>
class TAO_ESF_Proxy_RB_Tree< PROXY >

Concrete Proxy collection based on ACE_RB_Tree.

The Event Service Framework provides several alternatives for the underlying proxy collections. This version is based on Red-Black trees that offer good insertion, removal and lookup performance, but the iteration is slightly degraded.

Definition at line 61 of file ESF_Proxy_RB_Tree.h.


Member Typedef Documentation

template<class PROXY >
typedef ACE_RB_Tree<PROXY*,int,ACE_Less_Than<PROXY*>,ACE_Null_Mutex> TAO_ESF_Proxy_RB_Tree< PROXY >::Implementation

A typedef for the underlying implementaiton class.

Definition at line 65 of file ESF_Proxy_RB_Tree.h.

template<class PROXY >
typedef TAO_ESF_Proxy_RB_Tree_Iterator<PROXY> TAO_ESF_Proxy_RB_Tree< PROXY >::Iterator

A typedef for the underlying iterator.

Definition at line 68 of file ESF_Proxy_RB_Tree.h.


Constructor & Destructor Documentation

template<class PROXY >
TAO_ESF_Proxy_RB_Tree< PROXY >::TAO_ESF_Proxy_RB_Tree ( void   ) 

Constructor.

Definition at line 15 of file ESF_Proxy_RB_Tree.cpp.

{
}


Member Function Documentation

template<class PROXY >
TAO_ESF_Proxy_RB_Tree_Iterator< PROXY > TAO_ESF_Proxy_RB_Tree< PROXY >::begin ( void   ) 

Return the first element in the collection, or end() if there are none

Definition at line 52 of file ESF_Proxy_RB_Tree.inl.

{
  return Iterator (this->impl_.begin ());
}

template<class PROXY >
void TAO_ESF_Proxy_RB_Tree< PROXY >::connected ( PROXY *  proxy  ) 

Insert a new element to the collection.

Definition at line 20 of file ESF_Proxy_RB_Tree.cpp.

{
  int r = this->impl_.bind (proxy, 1);
  if (r == 0)
    return;

  if (r == 1)
    {
      // @@ Already there, throw some user exception..
      proxy->_decr_refcnt ();
    }
  if (r == -1)
    {
      // @@ Cannot insert, running out of memory? throw some other
      // user exception
      proxy->_decr_refcnt ();
    }
}

template<class PROXY >
void TAO_ESF_Proxy_RB_Tree< PROXY >::disconnected ( PROXY *  proxy  ) 

Remove an element from the collection.

Definition at line 62 of file ESF_Proxy_RB_Tree.cpp.

{
  int r = this->impl_.unbind (proxy);
  if (r != 0)
    {
      // @@ Cannot remove, throw some other
      // user exception
      return;
    }
  proxy->_decr_refcnt ();
}

template<class PROXY >
TAO_ESF_Proxy_RB_Tree_Iterator< PROXY > TAO_ESF_Proxy_RB_Tree< PROXY >::end ( void   ) 

Return one past the last element in the collection.

Definition at line 58 of file ESF_Proxy_RB_Tree.inl.

{
  return Iterator (this->impl_.end ());
}

template<class PROXY >
void TAO_ESF_Proxy_RB_Tree< PROXY >::reconnected ( PROXY *  proxy  ) 

Insert a new element that could be there already.

Definition at line 40 of file ESF_Proxy_RB_Tree.cpp.

{
  int r = this->impl_.rebind (proxy, 1);
  if (r == 0)
    return;

  if (r == 1)
    {
      // Reference count is incremented by the callers to [re]connected.
      // @@ Find out if the protocol could be simplified, and decoupling
      //    increased.
      proxy->_decr_refcnt ();
      return;
    }

  if (r == -1)
    {
      proxy->_decr_refcnt ();
    }
}

template<class PROXY >
void TAO_ESF_Proxy_RB_Tree< PROXY >::shutdown ( void   ) 

Shutdown the collection, i.e. remove all elements and release resources

Definition at line 75 of file ESF_Proxy_RB_Tree.cpp.

{
  Iterator end = this->impl_.end ();
  for (Iterator i = this->impl_.begin (); i != end; ++i)
    {
      // Decrement reference count
      (*i)->_decr_refcnt ();
    }
  this->impl_.clear ();
}

template<class PROXY >
size_t TAO_ESF_Proxy_RB_Tree< PROXY >::size ( void   )  const

Return the number of elements in the collection.

Definition at line 64 of file ESF_Proxy_RB_Tree.inl.

{
  return this->impl_.current_size ();
}


Member Data Documentation

template<class PROXY >
Implementation TAO_ESF_Proxy_RB_Tree< PROXY >::impl_ [private]

The underlying implementation object.

Definition at line 97 of file ESF_Proxy_RB_Tree.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Defines