summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2006-05-16 22:44:35 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2006-05-16 22:44:35 +0000
commit8555af364564a56ac236370a180d4755dda9e1ba (patch)
tree51258c739b26ccb0b21057e6a2d84f1b0acbadd9
parent1d60fc04c8e6250a4ec3771ec995877289792461 (diff)
downloadATCD-8555af364564a56ac236370a180d4755dda9e1ba.tar.gz
ChangeLog tag: Tue May 16 19:08:49 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog41
-rw-r--r--TAO/NEWS18
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp13
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h4
-rw-r--r--TAO/tao/BiDir_GIOP/BiDirGIOP.h2
-rw-r--r--TAO/tao/CSD_Framework/CSD_Object_Adapter_Factory.h1
-rw-r--r--TAO/tao/EndpointPolicy/EndpointPolicy.cpp1
-rw-r--r--TAO/tao/EndpointPolicy/EndpointPolicy.h1
-rw-r--r--TAO/tao/Messaging/Messaging_Loader.h1
-rw-r--r--TAO/tao/OctetSeqC.cpp20
-rw-r--r--TAO/tao/OctetSeqC.h12
-rw-r--r--TAO/tao/PI_Server/PI_Server_Loader.h1
-rw-r--r--TAO/tao/RTScheduling/RTScheduler_Loader.h1
-rw-r--r--TAO/tao/diffs/OctetSeq.diff57
-rw-r--r--TAO/tests/Bug_2417_Regression/publisher_impl.cpp207
15 files changed, 262 insertions, 118 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 1e3302c2e7a..9199ec41a71 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,44 @@
+Tue May 16 19:08:49 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * NEWS:
+ Add decription of new features/fixes.
+
+ * tao/BiDir_GIOP/BiDirGIOP.h:
+ * tao/CSD_Framework/CSD_Object_Adapter_Factory.h:
+ * tao/EndpointPolicy/EndpointPolicy.h:
+ * tao/EndpointPolicy/EndpointPolicy.cpp:
+ * tao/Messaging/Messaging_Loader.h:
+ * tao/PI_Server/PI_Server_Loader.h:
+ * tao/RTScheduling/RTScheduler_Loader.h:
+
+ Fix for certain static builds, notably VC71 on WinXP, for
+ libraries that depend on the Portable Interceptors library for
+ registering ORB Initializers.
+
+ * tests/Bug_2417_Regression/publisher_impl.cpp:
+
+ This test runs very long for what it is demonstrating. With the
+ underlying reference counting problem resolved, the server now
+ runs to completion. Since the test is using asynch connection
+ establishment and SYNCH_NONE oneways, there is no way for the
+ publisher to detect that the subscriber is gone until it makes a
+ synchronizing twoway call. The period between synch tests was so
+ long that on a slow machine the test would time out.
+
+ * orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp:
+ * orbsvcs/orbsvcs/Trader/Interpreter_Utils.h:
+ * tao/OctetSeqC.cpp:
+ * tao/OctetSeqC.h:
+ * tao/diffs/OctetSeq.diff:
+
+ Applying fixes to the problems still remaining in the versioned
+ namespace builds. Not all compilers found the problem in
+ Reconfig_Scheduler_T.cpp, but gcc 3.3.1 did. The OctetSeq change
+ might represent a candidate for a change to the IDL compiler,
+ but for now I think not, as octet sequences are treated as a
+ special case, having an explicit template instanciation provided
+ along with explicit equality operators.
+
Tue May 16 14:15:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
* tests/Strategies/Strategies.mpc:
diff --git a/TAO/NEWS b/TAO/NEWS
index a9ae61b1771..da379a29c1e 100644
--- a/TAO/NEWS
+++ b/TAO/NEWS
@@ -42,6 +42,24 @@ USER VISIBLE CHANGES BETWEEN TAO-1.5.1 and TAO-1.5.2
IDL compiler. If you need these for your project, add -GT to the
idl compiler flags.
+. Added support for CORBA specified truncatable valuetypes.
+
+. Added support for CORBA specified POAManagerFactory.
+
+. Added TAO-proprietary EndpointPolicy. This is used as a filter to limit
+ which of an ORBs endpoints are inserted into an object reference. The
+ endpoint policy is applied to POAManagers created via the POAManagerFactory
+ and affect all POAs associated with that POAManager.
+
+. Added a client-side connection optimization, the Parallel Connect Strategy
+ This strategy makes the client evaluate all endpoints in profile at the same
+ time when trying to connect to the server. For this to work the server must
+ be run with -ORBUseSharedProfile 1 and the client must be run with
+ -ORBUseParallelConnect 1.
+
+. Fixed several bugs related to asynchronous connection establishment. These
+ are represented by the AMI_Buffering tests and bug 2417's regression test.
+
USER VISIBLE CHANGES BETWEEN TAO-1.5 and TAO-1.5.1
====================================================
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp
index d4d51e5294d..cc561b93bad 100644
--- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp
+++ b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Scheduler_T.cpp
@@ -1797,8 +1797,8 @@ create_i (const char *entry_point,
auto_ptr<TAO_Reconfig_Scheduler_Entry> new_sched_entry_ptr (new_sched_entry);
// Maintain the size of the entry pointer array.
- ::maintain_scheduling_array (entry_ptr_array_, entry_ptr_array_size_,
- handle ACE_ENV_ARG_PARAMETER);
+ maintain_scheduling_array (entry_ptr_array_, entry_ptr_array_size_,
+ handle ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
@@ -1914,10 +1914,10 @@ set_i (TAO_RT_Info_Ex *rt_info,
}
// Maintain the size of the entry pointer array.
- ::maintain_scheduling_array (tuple_ptr_array_,
- tuple_ptr_array_size_,
- rt_info_tuple_count_
- ACE_ENV_ARG_PARAMETER);
+ maintain_scheduling_array (tuple_ptr_array_,
+ tuple_ptr_array_size_,
+ rt_info_tuple_count_
+ ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
// Store the new tuple in the tuple pointer array.
@@ -3156,4 +3156,3 @@ TAO_Reconfig_Scheduler<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::init_rt_info (RtecSch
TAO_END_VERSIONED_NAMESPACE_DECL
#endif /* TAO_RECONFIG_SCHEDULER_T_C */
-
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
index e59fa4a10ab..b258b921ef1 100644
--- a/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
+++ b/TAO/orbsvcs/orbsvcs/Trader/Interpreter_Utils.h
@@ -25,7 +25,7 @@
#include "orbsvcs/Trader/trading_serv_export.h"
-TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
template<>
class TAO_Trading_Serv_Export ACE_Hash<CORBA::String_var>
@@ -73,6 +73,8 @@ typedef ACE_Hash_Map_Manager_Ex<CORBA::String_var,
ACE_Null_Mutex>
TAO_Typecode_Table;
+ACE_END_VERSIONED_NAMESPACE_DECL
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
// *************************************************************
// TAO_Sequence_Extracter_Base
diff --git a/TAO/tao/BiDir_GIOP/BiDirGIOP.h b/TAO/tao/BiDir_GIOP/BiDirGIOP.h
index c1cafd48fa3..fce8ed7395e 100644
--- a/TAO/tao/BiDir_GIOP/BiDirGIOP.h
+++ b/TAO/tao/BiDir_GIOP/BiDirGIOP.h
@@ -23,6 +23,8 @@
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/PI/PI.h"
#include "tao/BiDir_Adapter.h"
#include "ace/Service_Config.h"
diff --git a/TAO/tao/CSD_Framework/CSD_Object_Adapter_Factory.h b/TAO/tao/CSD_Framework/CSD_Object_Adapter_Factory.h
index 7914266c53c..cda859315bf 100644
--- a/TAO/tao/CSD_Framework/CSD_Object_Adapter_Factory.h
+++ b/TAO/tao/CSD_Framework/CSD_Object_Adapter_Factory.h
@@ -21,6 +21,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "tao/PI/PI.h"
#include "tao/Adapter_Factory.h"
#include "ace/Service_Config.h"
diff --git a/TAO/tao/EndpointPolicy/EndpointPolicy.cpp b/TAO/tao/EndpointPolicy/EndpointPolicy.cpp
index 534ac8fbd77..aff1b5bb0eb 100644
--- a/TAO/tao/EndpointPolicy/EndpointPolicy.cpp
+++ b/TAO/tao/EndpointPolicy/EndpointPolicy.cpp
@@ -7,6 +7,7 @@
#include "tao/ORB_Core.h"
#include "tao/ORBInitializer_Registry.h"
+#include "tao/PI/PI.h"
ACE_RCSID (EndpointPolicy, EndpointPolicy, "$Id$")
diff --git a/TAO/tao/EndpointPolicy/EndpointPolicy.h b/TAO/tao/EndpointPolicy/EndpointPolicy.h
index 14c9bd7f1a0..007294e420d 100644
--- a/TAO/tao/EndpointPolicy/EndpointPolicy.h
+++ b/TAO/tao/EndpointPolicy/EndpointPolicy.h
@@ -22,6 +22,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "tao/PI/PI.h"
#include "tao/Versioned_Namespace.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/Messaging/Messaging_Loader.h b/TAO/tao/Messaging/Messaging_Loader.h
index d15ee63f1c7..0a046f44675 100644
--- a/TAO/tao/Messaging/Messaging_Loader.h
+++ b/TAO/tao/Messaging/Messaging_Loader.h
@@ -22,6 +22,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "tao/PI/PI.h"
#include "tao/Versioned_Namespace.h"
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/OctetSeqC.cpp b/TAO/tao/OctetSeqC.cpp
index 93c712762cb..3c8fe4aa136 100644
--- a/TAO/tao/OctetSeqC.cpp
+++ b/TAO/tao/OctetSeqC.cpp
@@ -119,6 +119,26 @@ CORBA::Boolean operator>> (
return TAO::demarshal_sequence(strm, _tao_sequence);
}
+#if (TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE)
+
+CORBA::Boolean
+operator==(const CORBA::OctetSeq &lhs, const CORBA::OctetSeq &rhs)
+{
+ return ::operator==
+ (static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(lhs),
+ static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(rhs));
+}
+
+CORBA::Boolean
+operator!=(const CORBA::OctetSeq &lhs, const CORBA::OctetSeq &rhs)
+{
+ return !::operator==
+ (static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(lhs),
+ static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(rhs));
+}
+
+#endif /* TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE */
+
#endif /* _TAO_CDR_OP_CORBA_OctetSeq_CPP_ */
TAO_END_VERSIONED_NAMESPACE_DECL
diff --git a/TAO/tao/OctetSeqC.h b/TAO/tao/OctetSeqC.h
index ebc55bd289d..0f9cd5aaa9d 100644
--- a/TAO/tao/OctetSeqC.h
+++ b/TAO/tao/OctetSeqC.h
@@ -164,6 +164,16 @@ TAO_Export CORBA::Boolean operator>> (
// TAO_IDL - Generated from
// be\be_codegen.cpp:1062
+// Added to handle the namespace resolution.
+#if (TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE)
+
+TAO_Export CORBA::Boolean operator== (const CORBA::OctetSeq &lhs,
+ const CORBA::OctetSeq &rhs);
+TAO_Export CORBA::Boolean operator!= (const CORBA::OctetSeq &lhs,
+ const CORBA::OctetSeq &rhs);
+
+#endif /* TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE */
+
TAO_END_VERSIONED_NAMESPACE_DECL
#if defined(_MSC_VER)
@@ -173,5 +183,3 @@ TAO_END_VERSIONED_NAMESPACE_DECL
#include /**/ "ace/post.h"
#endif /* ifndef */
-
-
diff --git a/TAO/tao/PI_Server/PI_Server_Loader.h b/TAO/tao/PI_Server/PI_Server_Loader.h
index b80753436b9..fb86088ae71 100644
--- a/TAO/tao/PI_Server/PI_Server_Loader.h
+++ b/TAO/tao/PI_Server/PI_Server_Loader.h
@@ -18,6 +18,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "tao/PI/PI.h"
#include "tao/Versioned_Namespace.h"
#include "ace/Service_Object.h"
#include "ace/Service_Config.h"
diff --git a/TAO/tao/RTScheduling/RTScheduler_Loader.h b/TAO/tao/RTScheduling/RTScheduler_Loader.h
index 92715d11279..750f8eeddb3 100644
--- a/TAO/tao/RTScheduling/RTScheduler_Loader.h
+++ b/TAO/tao/RTScheduling/RTScheduler_Loader.h
@@ -23,6 +23,7 @@
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
+#include "tao/PI/PI.h"
#include "tao/Versioned_Namespace.h"
#include "ace/Service_Object.h"
diff --git a/TAO/tao/diffs/OctetSeq.diff b/TAO/tao/diffs/OctetSeq.diff
index cbdbb910426..4c917ccfaa0 100644
--- a/TAO/tao/diffs/OctetSeq.diff
+++ b/TAO/tao/diffs/OctetSeq.diff
@@ -1,6 +1,35 @@
---- orig/OctetSeqC.h 2005-04-08 10:17:34.108726400 +0200
-+++ OctetSeqC.h 2005-04-08 10:17:41.829828800 +0200
-@@ -141,6 +141,18 @@
+--- orig/OctetSeqC.cpp 2006-05-16 17:15:30.000000000 -0500
++++ OctetSeqC.cpp 2006-05-16 16:53:30.000000000 -0500
+@@ -119,6 +119,26 @@
+ return TAO::demarshal_sequence(strm, _tao_sequence);
+ }
+
++#if (TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE)
++
++CORBA::Boolean
++operator==(const CORBA::OctetSeq &lhs, const CORBA::OctetSeq &rhs)
++{
++ return ::operator==
++ (static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(lhs),
++ static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(rhs));
++}
++
++CORBA::Boolean
++operator!=(const CORBA::OctetSeq &lhs, const CORBA::OctetSeq &rhs)
++{
++ return !::operator==
++ (static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(lhs),
++ static_cast<const TAO::unbounded_value_sequence< CORBA::Octet > &>(rhs));
++}
++
++#endif /* TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE */
++
+ #endif /* _TAO_CDR_OP_CORBA_OctetSeq_CPP_ */
+
+ TAO_END_VERSIONED_NAMESPACE_DECL
+--- orig/OctetSeqC.h 2006-05-16 17:19:31.000000000 -0500
++++ OctetSeqC.h 2006-05-16 17:23:31.000000000 -0500
+@@ -131,6 +131,19 @@
{
}
@@ -13,9 +42,27 @@
+// but we put the instantiation here because the application will
+// need to see it in *C.h to avoid the error.
+#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
-+ template class TAO_Export TAO_Unbounded_Sequence<CORBA::OctetSeq>;
++ template class TAO_Export TAO::unbounded_value_sequence<CORBA::OctetSeq>;
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+
++
+ // TAO_IDL - Generated from
+ // be\be_visitor_sequence/cdr_op_ch.cpp:71
+
+@@ -151,6 +164,16 @@
// TAO_IDL - Generated from
- // be\be_visitor_sequence/any_op_ch.cpp:52
+ // be\be_codegen.cpp:1062
+
++// Added to handle the namespace resolution.
++#if (TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE)
++
++TAO_Export CORBA::Boolean operator== (const CORBA::OctetSeq &lhs,
++ const CORBA::OctetSeq &rhs);
++TAO_Export CORBA::Boolean operator!= (const CORBA::OctetSeq &lhs,
++ const CORBA::OctetSeq &rhs);
++
++#endif /* TAO_HAS_VERSIONED_NAMESPACE || ACE_HAS_VERSIONED_NAMESPACE */
++
+ TAO_END_VERSIONED_NAMESPACE_DECL
+ #if defined(_MSC_VER)
diff --git a/TAO/tests/Bug_2417_Regression/publisher_impl.cpp b/TAO/tests/Bug_2417_Regression/publisher_impl.cpp
index e62ad292470..7c1084b7be0 100644
--- a/TAO/tests/Bug_2417_Regression/publisher_impl.cpp
+++ b/TAO/tests/Bug_2417_Regression/publisher_impl.cpp
@@ -11,155 +11,156 @@ using namespace std;
struct _Subscriber
{
- Subscriber_var subscriber;
- bool unsubscribed;
- unsigned int count;
+ Subscriber_var subscriber;
+ bool unsubscribed;
+ unsigned int count;
};
class Publisher_impl::Worker : public ACE_Task_Base
{
public:
- Worker(Publisher_impl * _owner);
- ~Worker();
- void addSubscriber(Subscriber_ptr subscriber);
- virtual int svc (void);
- void terminate();
+ Worker(Publisher_impl * _owner);
+ ~Worker();
+ void addSubscriber(Subscriber_ptr subscriber);
+ virtual int svc (void);
+ void terminate();
private:
- bool terminated;
- vector<_Subscriber> subscribers;
- ACE_Thread_Mutex mutex;
- Publisher_impl * owner;
+ bool terminated;
+ vector<_Subscriber> subscribers;
+ ACE_Thread_Mutex mutex;
+ Publisher_impl * owner;
};
Publisher_impl::Worker::Worker(Publisher_impl * _owner)
-: owner(_owner)
+ : owner(_owner)
{
- terminated = false;
+ terminated = false;
}
Publisher_impl::Worker::~Worker()
{
- terminated = true;
+ terminated = true;
}
void Publisher_impl::Worker::addSubscriber(Subscriber_ptr subscriber)
{
- ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
- subscribers.push_back(_Subscriber());
- _Subscriber& s = subscribers.back();
- s.unsubscribed = false;
- s.subscriber = Subscriber::_duplicate(subscriber);
- s.count = 0;
+ ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
+ subscribers.push_back(_Subscriber());
+ _Subscriber& s = subscribers.back();
+ s.unsubscribed = false;
+ s.subscriber = Subscriber::_duplicate(subscriber);
+ s.count = 0;
}
int Publisher_impl::Worker::svc (void)
{
- double data = 0.0;
- bool doShutdown = false;
- unsigned long iteration = 0;
- ACE_Time_Value tv;
- tv.set(0.01);
- while (!terminated)
- {
- data += 0.01;
- ++iteration;
- {
- ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
- doShutdown = subscribers.size() > 0;
- for (vector<_Subscriber>::iterator iter = subscribers.begin(); iter != subscribers.end(); ++iter)
- {
- if (!iter->unsubscribed)
- {
- doShutdown = false;
- try
- {
- if (!CORBA::is_nil(iter->subscriber.in ()))
- iter->subscriber->onData(data);
- else
- iter->unsubscribed = true;
- ++iter->count;
- }
- catch (...)
- {
- iter->unsubscribed = true;
- }
- }
- }
- }
- if (iteration % 1000 == 0)
- {
- ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
- for (vector<_Subscriber>::iterator iter = subscribers.begin(); iter != subscribers.end(); ++iter)
- {
- if (!iter->unsubscribed)
- {
- try
- {
- iter->subscriber->isAlive();
- }
- catch (...)
- {
- iter->unsubscribed = true;
- }
- }
- }
- }
- if (doShutdown)
- owner->shutdown();
- else
- ACE_OS::sleep(tv);
- }
- return 0;
+ double data = 0.0;
+ bool doShutdown = false;
+ unsigned long iteration = 0;
+ ACE_Time_Value tv;
+ tv.set(0.01);
+ while (!terminated)
+ {
+ data += 0.01;
+ ++iteration;
+ {
+ ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
+ doShutdown = subscribers.size() > 0;
+ for (vector<_Subscriber>::iterator iter = subscribers.begin();
+ iter != subscribers.end(); ++iter)
+ {
+ if (!iter->unsubscribed)
+ {
+ doShutdown = false;
+ try
+ {
+ if (!CORBA::is_nil(iter->subscriber.in ()))
+ iter->subscriber->onData(data);
+ else
+ iter->unsubscribed = true;
+ ++iter->count;
+ }
+ catch (...)
+ {
+ iter->unsubscribed = true;
+ }
+ }
+ }
+ }
+ if (iteration % 200 == 0)
+ {
+ ACE_Guard<ACE_Thread_Mutex> guard(mutex, 1, 1);
+ for (vector<_Subscriber>::iterator iter = subscribers.begin();
+ iter != subscribers.end(); ++iter)
+ {
+ if (!iter->unsubscribed)
+ {
+ try
+ {
+ iter->subscriber->isAlive();
+ }
+ catch (...)
+ {
+ iter->unsubscribed = true;
+ }
+ }
+ }
+ }
+ if (doShutdown)
+ owner->shutdown();
+ else
+ ACE_OS::sleep(tv);
+ }
+ return 0;
}
void Publisher_impl::Worker::terminate()
{
- terminated = true;
+ terminated = true;
}
Publisher_impl::Publisher_impl(CORBA::ORB_ptr orb)
-: orb_ (CORBA::ORB::_duplicate (orb))
+ : orb_ (CORBA::ORB::_duplicate (orb))
{
- worker = new Worker(this);
- worker->activate();
+ worker = new Worker(this);
+ worker->activate();
}
Publisher_impl::~Publisher_impl()
{
- worker->terminate();
- worker->thr_mgr()->wait();
- delete worker;
+ worker->terminate();
+ worker->thr_mgr()->wait();
+ delete worker;
}
void subscribe (
- ::Subscriber_ptr subscriber
- ACE_ENV_ARG_DECL_WITH_DEFAULTS
- )
- ACE_THROW_SPEC ((
- ::CORBA::SystemException
- ));
+ ::Subscriber_ptr subscriber
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ ));
void
Publisher_impl::subscribe(
- ::Subscriber_ptr subscriber
- ACE_ENV_ARG_DECL_WITH_DEFAULTS
- )
- ACE_THROW_SPEC ((
- ::CORBA::SystemException
- ))
+ ::Subscriber_ptr subscriber
+ ACE_ENV_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ ))
{
- worker->addSubscriber(subscriber);
+ worker->addSubscriber(subscriber);
}
void
Publisher_impl::shutdown (
- ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
- )
- ACE_THROW_SPEC ((
- ::CORBA::SystemException
- ))
+ ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
+ )
+ ACE_THROW_SPEC ((
+ ::CORBA::SystemException
+ ))
{
this->orb_->shutdown (0);
worker->terminate();
}
-