summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp208
1 files changed, 0 insertions, 208 deletions
diff --git a/TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp b/TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp
deleted file mode 100644
index 169f5eac972..00000000000
--- a/TAO/orbsvcs/orbsvcs/ESF/ESF_Copy_On_Write.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-// $Id$
-
-#ifndef TAO_ESF_COPY_ON_WRITE_CPP
-#define TAO_ESF_COPY_ON_WRITE_CPP
-
-#include "orbsvcs/ESF/ESF_Copy_On_Write.h"
-
-#if ! defined (__ACE_INLINE__)
-#include "orbsvcs/ESF/ESF_Copy_On_Write.i"
-#endif /* __ACE_INLINE__ */
-
-#include "tao/Environment.h"
-
-TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-
-template<class COLLECTION, class ITERATOR> CORBA::ULong
-TAO_ESF_Copy_On_Write_Collection<COLLECTION,ITERATOR>::_incr_refcnt (void)
-{
- // LOCKING: no locking is required, the caller grabs the mutex.
- return this->refcount_++;
-}
-
-template<class COLLECTION, class ITERATOR> CORBA::ULong
-TAO_ESF_Copy_On_Write_Collection<COLLECTION,ITERATOR>::_decr_refcnt (void)
-{
- // LOCKING: no locking is required, the caller grabs the mutex.
- {
- this->refcount_--;
- if (this->refcount_ != 0)
- return this->refcount_;
- }
-
- ITERATOR end = this->collection.end ();
- for (ITERATOR i = this->collection.begin (); i != end; ++i)
- {
- (*i)->_decr_refcnt ();
- }
-
- delete this;
- return 0;
-}
-
-// ****************************************************************
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL>
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- TAO_ESF_Copy_On_Write (void)
- : pending_writes_ (0),
- writing_ (0),
- cond_ (mutex_)
-{
- ACE_NEW (this->collection_, Collection);
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL>
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- ~TAO_ESF_Copy_On_Write (void)
-{
- ACE_GUARD (ACE_SYNCH_MUTEX_T, ace_mon, this->mutex_);
-
- while (this->pending_writes_ != 0)
- this->cond_.wait ();
-
- this->collection_->_decr_refcnt ();
- this->collection_ = 0;
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- for_each (TAO_ESF_Worker<PROXY> *worker
- ACE_ENV_ARG_DECL)
-{
- Read_Guard ace_mon (this->mutex_,
- this->collection_);
-
- worker->set_size(ace_mon.collection->collection.size());
- ITERATOR end = ace_mon.collection->collection.end ();
- for (ITERATOR i = ace_mon.collection->collection.begin (); i != end; ++i)
- {
- worker->work (*i ACE_ENV_ARG_PARAMETER);
- ACE_CHECK;
- }
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- connected (PROXY *proxy
- ACE_ENV_ARG_DECL)
-{
- Write_Guard ace_mon (this->mutex_,
- this->cond_,
- this->pending_writes_,
- this->writing_,
- this->collection_);
-
- proxy->_incr_refcnt ();
- ace_mon.copy->collection.connected (proxy ACE_ENV_ARG_PARAMETER);
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- reconnected (PROXY *proxy
- ACE_ENV_ARG_DECL)
-{
- Write_Guard ace_mon (this->mutex_,
- this->cond_,
- this->pending_writes_,
- this->writing_,
- this->collection_);
-
- proxy->_incr_refcnt ();
- ace_mon.copy->collection.reconnected (proxy ACE_ENV_ARG_PARAMETER);
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- disconnected (PROXY *proxy
- ACE_ENV_ARG_DECL)
-{
- Write_Guard ace_mon (this->mutex_,
- this->cond_,
- this->pending_writes_,
- this->writing_,
- this->collection_);
-
- ace_mon.copy->collection.disconnected (proxy ACE_ENV_ARG_PARAMETER);
-}
-
-template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void
-TAO_ESF_Copy_On_Write<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- shutdown (ACE_ENV_SINGLE_ARG_DECL)
-{
- // We need to perform a copy to follow the protocol.
- Write_Guard ace_mon (this->mutex_,
- this->cond_,
- this->pending_writes_,
- this->writing_,
- this->collection_);
-
- ace_mon.copy->collection.shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
-}
-
-template<class COLLECTION, class ITERATOR, ACE_SYNCH_DECL>
-TAO_ESF_Copy_On_Write_Write_Guard<COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- TAO_ESF_Copy_On_Write_Write_Guard (ACE_SYNCH_MUTEX_T &m,
- ACE_SYNCH_CONDITION_T &c,
- int &p,
- int &w,
- Collection*& cr)
- : copy (0),
- mutex (m),
- cond (c),
- pending_writes (p),
- writing_flag (w),
- collection (cr)
-{
- {
- ACE_GUARD (ACE_SYNCH_MUTEX_T, ace_mon, this->mutex);
-
- this->pending_writes++;
-
- while (this->writing_flag != 0)
- this->cond.wait ();
-
- this->writing_flag = 1;
- }
-
- // Copy outside the mutex, because it may take a long time.
- // Nobody can change it, because it is protected by the
- // writing_flag.
-
- // First initialize it (with the correct reference count
- ACE_NEW (this->copy, Collection);
- // Copy the contents
- this->copy->collection = this->collection->collection;
-
- // Increase the reference counts
- ITERATOR end = this->copy->collection.end ();
- for (ITERATOR i = this->copy->collection.begin (); i != end; ++i)
- {
- (*i)->_incr_refcnt ();
- }
-}
-
-template<class COLLECTION, class ITERATOR, ACE_SYNCH_DECL>
-TAO_ESF_Copy_On_Write_Write_Guard<COLLECTION,ITERATOR,ACE_SYNCH_USE>::
- ~TAO_ESF_Copy_On_Write_Write_Guard (void)
-{
- Collection *tmp = 0;
- {
- ACE_GUARD (ACE_SYNCH_MUTEX_T, ace_mon, this->mutex);
-
- tmp = this->collection;
- this->collection = this->copy;
- this->writing_flag = 0;
- this->pending_writes--;
-
- this->cond.signal ();
- }
- // Delete outside the mutex, because it may take a long time.
- tmp->_decr_refcnt ();
-}
-
-// ****************************************************************
-
-TAO_END_VERSIONED_NAMESPACE_DECL
-
-#endif /* TAO_ESF_COPY_ON_WRITE_CPP */