summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp493
1 files changed, 0 insertions, 493 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp
deleted file mode 100644
index 45ae9463e96..00000000000
--- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Event.cpp
+++ /dev/null
@@ -1,493 +0,0 @@
-// $Id$
-#include "Notify_Event.h"
-
-#include "tao/debug.h"
-
-#if ! defined (__ACE_INLINE__)
-#include "Notify_Event.i"
-#endif /* __ACE_INLINE__ */
-
-
-ACE_RCSID(Notify, Notify_Event, "$Id$")
-
-// @@ Pradeep: David is going to give you a hard time from having a
-// static object
-TAO_Notify_EventType
-TAO_Notify_EventType::special_event_type_ ("*", "%ALL");
-
-// @@ You can probably get away returning this stuff by value, and
-// creating it on the fly, assuming there aren't too many calls to
-// this.
-TAO_Notify_EventType&
-TAO_Notify_EventType::special_event_type (void)
-{
- return special_event_type_;
-}
-
-TAO_Notify_EventType::TAO_Notify_EventType (void)
-{
- // No-Op.
-}
-
-void
-TAO_Notify_EventType::init_i (const char* domain_name,
- const char* type_name)
-{
- this->event_type_.domain_name = domain_name;
- this->event_type_.type_name = type_name;
-
- if (this->is_special () == 1)
- {
- this->event_type_.domain_name = "*";
- this->event_type_.type_name = "%ALL";
- }
-
- this->recompute_hash ();
-}
-
-TAO_Notify_EventType::TAO_Notify_EventType (const char* domain_name,
- const char* type_name)
-{
- this->init_i (domain_name, type_name);
-}
-
-TAO_Notify_EventType::TAO_Notify_EventType (const CosNotification::EventType& event_type)
-{
- this->init_i (event_type.domain_name.in (),event_type.type_name.in ());
-}
-
-TAO_Notify_EventType::~TAO_Notify_EventType ()
-{
-}
-
-u_long
-TAO_Notify_EventType::hash (void) const
-{
- // @@ Pradeep: this is an excellent candidate for an inline
- // function. Get in the habit of creating .h, .cpp and .i files,
- // even if initially the .i file is empty, that way it is easier to
- // do this stuff.
- return this->hash_value_;
-}
-
-void
-TAO_Notify_EventType::recompute_hash (void)
-{
- // @@ Pradeep: this code is bound to crash someday if the strings
- // are too long.... See if the hash_pjw () function can be modified
- // to take accumulate multiple strings, as in:
- // hash = ACE::hash_pjw_accummulate (0, str1);
- // hash = ACE::hash_pjw_accummulate (hash, str2);
- //
- // @@ Or use grow the buffer when needed, or just add the two hash
- // values or something, but fix this code!
- //
- char buffer[BUFSIZ];
- ACE_OS::strcpy (buffer, this->event_type_.domain_name.in ());
- ACE_OS::strcat (buffer, this->event_type_.type_name.in ());
-
- this->hash_value_ = ACE::hash_pjw (buffer);
-}
-
-void
-TAO_Notify_EventType::operator=(const CosNotification::EventType& rhs)
-{
- this->init_i (rhs.domain_name.in (),rhs.type_name.in ());
-}
-
-void
-TAO_Notify_EventType::operator=(CosNotification::EventType& rhs)
-{
- this->init_i (rhs.domain_name.in (),rhs.type_name.in ());
-}
-
-int
-TAO_Notify_EventType::operator==(const TAO_Notify_EventType& rhs) const
-{
- if (this->hash () != rhs.hash ())
- return 0;
- else // compare the strings
- return (ACE_OS::strcmp (this->event_type_.type_name, rhs.event_type_.type_name) == 0 &&
- ACE_OS::strcmp (this->event_type_.domain_name, rhs.event_type_.domain_name) == 0
- );
-}
-
-CORBA::Boolean
-TAO_Notify_EventType::is_special (void) const
-{
- if ((this->event_type_.domain_name == 0 ||
- ACE_OS::strcmp (this->event_type_.domain_name, "") == 0 ||
- ACE_OS::strcmp (this->event_type_.domain_name, "*") == 0) &&
- (this->event_type_.type_name == 0 ||
- ACE_OS::strcmp (this->event_type_.type_name, "") == 0 ||
- ACE_OS::strcmp (this->event_type_.type_name, "*") == 0 ||
- ACE_OS::strcmp (this->event_type_.type_name, "%ALL") == 0))
- return 1;
- else
- return 0;
-}
-
-const CosNotification::EventType&
-TAO_Notify_EventType::get_native (void) const
-{
- return event_type_;
-}
-
-// ****************************************************************
-
-TAO_Notify_Event::TAO_Notify_Event (void)
- :lock_ (0),
- refcount_ (1),
- event_reliability_ (CosNotification::BestEffort),
- priority_ (CosNotification::DefaultPriority),
- // start_time_ (0),
- // stop_time_ (0),
- timeout_ (0)
-{
- ACE_NEW (this->lock_, ACE_Lock_Adapter<TAO_SYNCH_MUTEX> ());
-}
-
-TAO_Notify_Event::~TAO_Notify_Event ()
-{
- delete this->lock_;
- this->lock_ = 0;
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "in ~TAO_Notify_Event %X\n", this));
-}
-
-
-void
-TAO_Notify_Event::_incr_refcnt (void)
-{
- ACE_GUARD (ACE_Lock, ace_mon, *this->lock_);
- this->refcount_++;
-
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "in TAO_Notify_Event %X incr %d\n", this, this->refcount_));
-}
-
-void
-TAO_Notify_Event::_decr_refcnt (void)
-{
- int delete_me = 0;
-
- {
- ACE_GUARD (ACE_Lock, ace_mon, *this->lock_);
- this->refcount_--;
-
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "in TAO_Notify_Event %X decr %d\n", this, this->refcount_));
-
- if (this->refcount_ == 0)
- delete_me = 1;
- }
-
- if (delete_me == 1)
- delete this;
-}
-
-// ****************************************************************
-
-// = Any Event Type.
-
-TAO_Notify_Any::TAO_Notify_Any (CORBA::Any * data)
- :data_ (data),
- is_owner_ (1)
-{
-}
-
-TAO_Notify_Any::TAO_Notify_Any (const CORBA::Any * data)
- :data_ ((CORBA::Any*)data),
- is_owner_ (0)
-{
-}
-
-TAO_Notify_Any::~TAO_Notify_Any ()
-{
- if (this->is_owner_)
- delete this->data_;
-}
-
-TAO_Notify_Event*
-TAO_Notify_Any::clone (void)
-{
- TAO_Notify_Any* clone;
-
- if (this->is_owner_)
- {
- // @@ Are you sure this is the right way to clone? You are
- // stealing the data from the original class...
- ACE_NEW_RETURN (clone, TAO_Notify_Any ((CORBA::Any const *)this->data_),
- 0);
- this->is_owner_ = 0;
- }
- else
- {
- CORBA::Any * data_copy;
- ACE_NEW_RETURN (data_copy, CORBA::Any (*this->data_), 0);
- ACE_NEW_RETURN (clone, TAO_Notify_Any (data_copy), 0);
-
- // Later: cleanup data_copy if this new fails.
- }
-
- return clone;
-}
-
-void
-TAO_Notify_Any::operator=(const TAO_Notify_Any& notify_any)
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "In TAO_Notify_Any::operator=\n"));
-
- if (this->is_owner_)
- delete data_;
-
- ACE_NEW (this->data_,
- CORBA::Any (*notify_any.data_));
-
- this->is_owner_ = 1;
-}
-
-CORBA::Boolean
-TAO_Notify_Any::is_special_event_type (void) const
-{
- return 1;
-}
-
-const TAO_Notify_EventType&
-TAO_Notify_Any::event_type (void) const
-{
- return TAO_Notify_EventType::special_event_type ();
-}
-
-CORBA::Boolean
-TAO_Notify_Any::do_match (CosNotifyFilter::Filter_ptr filter
- ACE_ENV_ARG_DECL)
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_Any::do_match ()\n"));
-
- return filter->match (*this->data_ ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_Any::do_push (CosEventComm::PushConsumer_ptr consumer
- ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_Any::do_push ("
- "CosEventComm::PushConsumer_ptr)\n"));
-
- consumer->push (*this->data_ ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_Any::do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer
- ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_Any::do_push ("
- "CosNotifyComm::StructuredPushConsumer_ptr)\n"));
-
- // translation pg. 28
- CosNotification::StructuredEvent event;
- event.remainder_of_body <<= *this->data_;
- event.header.fixed_header.event_type.type_name = CORBA::string_dup ("%ANY");
- event.header.fixed_header.event_type.domain_name = CORBA::string_dup ("");
-
- consumer->push_structured_event (event ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_Any::do_push (CosNotifyComm::SequencePushConsumer_ptr consumer,
- const TAO_Notify_QoSAdmin_i& /*qos_admin*/,
- CosNotification::EventBatch& /*unsent*/,
- int /*flush_queue*/
- ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_Any::do_push ("
- "CosNotifyComm::SequencePushConsumer_ptr)\n"));
-
- // translation pg. 28
- CosNotification::StructuredEvent event;
- event.remainder_of_body <<= *this->data_;
- event.header.fixed_header.event_type.type_name = CORBA::string_dup ("%ANY");
- event.header.fixed_header.event_type.domain_name = CORBA::string_dup ("");
-
- CosNotification::EventBatch events;
- events.length (1);
- events[0] = event;
-
- consumer->push_structured_events (events ACE_ENV_ARG_PARAMETER);
-}
-
-// ****************************************************************
-
-// = TAO_Notify_StructuredEvent
-
-// @@ Pradeep: many of the same comments that i made for
-// TAO_Notify_Any apply here too.
-
-TAO_Notify_StructuredEvent::TAO_Notify_StructuredEvent (CosNotification::StructuredEvent * notification)
- :data_ (notification),
- event_type_ (notification->header.fixed_header.event_type),
- is_owner_ (1)
-{
-
- this->init_QoS ();
-}
-
-TAO_Notify_StructuredEvent::TAO_Notify_StructuredEvent (const CosNotification::StructuredEvent * notification)
- :data_ ((CosNotification::StructuredEvent*)notification),
- event_type_ (notification->header.fixed_header.event_type),
- is_owner_ (0)
-{
-}
-
-TAO_Notify_StructuredEvent::~TAO_Notify_StructuredEvent ()
-{
- if (this->is_owner_)
- delete this->data_;
-}
-
-void
-TAO_Notify_StructuredEvent::init_QoS (void)
-{
- CosNotification::PropertySeq& qos = this->data_->header.variable_header;
-
- for (CORBA::ULong index = 0; index < qos.length (); ++index)
- {
- ACE_CString property_name (qos[index].name);
-
- if (property_name.compare (CosNotification::Priority) == 0)
- {
- qos[index].value >>= this->priority_;
- }
- else if (property_name.compare (CosNotification::StartTime) == 0)
- {
- // qos[index].value >>= this->start_time_;
- }
- else if (property_name.compare (CosNotification::StopTime) == 0)
- {
- // qos[index].value >>= this->stop_time_;
- }
- else if (property_name.compare (CosNotification::Timeout) == 0)
- {
- qos[index].value >>= this->timeout_;
- }
- }
-}
-
-TAO_Notify_Event*
-TAO_Notify_StructuredEvent::clone (void)
-{
- TAO_Notify_StructuredEvent* clone;
-
- if (this->is_owner_)
- {
- ACE_NEW_RETURN (clone, TAO_Notify_StructuredEvent ((CosNotification::StructuredEvent const *) this->data_), 0);
- this->is_owner_ = 0;
- }
- else
- {
- CosNotification::StructuredEvent *data_copy;
- ACE_NEW_RETURN (data_copy, CosNotification::StructuredEvent (*this->data_),
- 0);
- ACE_NEW_RETURN (clone, TAO_Notify_StructuredEvent (data_copy), 0);
- // Later: cleanup *data_copy if this new fails.
- clone->is_owner_ = 1;
- }
-
- return clone;
-}
-
-void
-TAO_Notify_StructuredEvent::operator=(const TAO_Notify_StructuredEvent& structured_event)
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "In TAO_Notify_StructuredEvent::operator=\n"));
-
- if (this->is_owner_)
- delete this->data_;
-
- ACE_NEW (this->data_,
- CosNotification::StructuredEvent (*structured_event.data_));
-
- this->is_owner_ = 1;
- this->event_type_ = structured_event.data_->header.fixed_header.event_type;
-}
-
-CORBA::Boolean
-TAO_Notify_StructuredEvent::is_special_event_type (void) const
-{
- return this->event_type_.is_special ();
-}
-
-const TAO_Notify_EventType&
-TAO_Notify_StructuredEvent::event_type (void) const
-{
- return this->event_type_;
-}
-
-CORBA::Boolean
-TAO_Notify_StructuredEvent::do_match (CosNotifyFilter::Filter_ptr filter
- ACE_ENV_ARG_DECL)
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_StructuredEvent::do_match ()\n"));
-
- return filter->match_structured (*this->data_ ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_StructuredEvent::do_push (CosEventComm::PushConsumer_ptr consumer
- ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_StructuredEvent::do_push ("
- "CosEventComm::PushConsumer_ptr)\n"));
-
- // translation pg. 28
- CORBA::Any any;
- any <<= *this->data_;
- // is the typecode set by this operation or do we need to set it explicity.
-
- consumer->push (any ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_StructuredEvent::do_push (CosNotifyComm::StructuredPushConsumer_ptr consumer ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_StructuredEvent::do_push ("
- "CosNotifyComm::StructuredPushConsumer_ptr)\n"));
-
- consumer->push_structured_event (*this->data_ ACE_ENV_ARG_PARAMETER);
-}
-
-void
-TAO_Notify_StructuredEvent::do_push (CosNotifyComm::SequencePushConsumer_ptr consumer,
- const TAO_Notify_QoSAdmin_i& /*qos_admin*/,
- CosNotification::EventBatch& /*unsent*/,
- int /*flush_queue*/
- ACE_ENV_ARG_DECL) const
-{
- if (TAO_debug_level > 0)
- ACE_DEBUG ((LM_DEBUG, "Notify (%P|%t) - "
- "TAO_Notify_StructuredEvent::do_push ("
- "CosNotifyComm::SequencePushConsumer_ptr)\n"));
-
- CosNotification::EventBatch events;
- events.length (1);
- events[0] = *this->data_;
-
- consumer->push_structured_events (events ACE_ENV_ARG_PARAMETER);
-}