diff options
Diffstat (limited to 'TAO/examples/OBV/Typed_Events/Event_Types_impl.cpp')
-rw-r--r-- | TAO/examples/OBV/Typed_Events/Event_Types_impl.cpp | 595 |
1 files changed, 0 insertions, 595 deletions
diff --git a/TAO/examples/OBV/Typed_Events/Event_Types_impl.cpp b/TAO/examples/OBV/Typed_Events/Event_Types_impl.cpp deleted file mode 100644 index 08306339676..00000000000 --- a/TAO/examples/OBV/Typed_Events/Event_Types_impl.cpp +++ /dev/null @@ -1,595 +0,0 @@ -// $Id$ - -#include "Event_Types_impl.h" - -// Implementation of the valuetype member functions. - -Event_impl::Event_impl () - // initializers (': foo ()') don't work for OBV state members - // since we should only access the state through modifier functions -{ - // Put a timestamp on event's birth. - ACE_Time_Value now (ACE_OS::gettimeofday ()); - this->time_ (now.sec ()); -} - -Event_impl::~Event_impl () -{ -} - -void -Event_impl::do_print (void) -{ - ACE_DEBUG((LM_DEBUG, "(time %d origin %d) ", - (CORBA::ULong) this->time_(), (CORBA::ULong) this->origin_id_() )); -} - - -/* Not defined, see header -Event_factory::~Event_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Event) -Event_factory::create_for_unmarshal () -{ - return new Event_impl; -} -*/ - -// Temperature implementation =================================== - -Temperature_impl::Temperature_impl () -{ -} - -Temperature_impl::Temperature_impl (CORBA::Float temp) -{ - this->temperature_ (temp); -} - -Temperature_impl::~Temperature_impl () -{ -} - -void -Temperature_impl::do_print (void) -{ - Event_impl::do_print (); - // The timestamp - - ACE_DEBUG((LM_DEBUG, "Temperature is %f\n", this->temperature_() )); -} - -Temperature_factory::~Temperature_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Temperature) -Temperature_factory::create_for_unmarshal () -{ - return new Temperature_impl; -} - - -// Position implementation ====================================== - -Position_impl::Position_impl () -{ -} - -Position_impl::Position_impl (Point &p) -{ - this->xyz (p); - // Does a copy of the p array -} - -Position_impl::~Position_impl () -{ -} - -void -Position_impl::do_print (void) -{ - Event_impl::do_print (); - // The timestamp - - ACE_DEBUG((LM_DEBUG, "Position is (%f, %f, %f)\n", - this->x(), this->y(), this->z() )); -} - -CORBA::Float Position_impl::x () { return this->xyz()[0]; } -void Position_impl::x (CORBA::Float x) { this->xyz()[0] = x; } -CORBA::Float Position_impl::y () { return this->xyz()[1]; } -void Position_impl::y (CORBA::Float y) { this->xyz()[1] = y; } -CORBA::Float Position_impl::z () { return this->xyz()[2]; } -void Position_impl::z (CORBA::Float z) { this->xyz()[2] = z; } - - -Position_factory::~Position_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Position) -Position_factory::create_for_unmarshal () -{ - return new Position_impl; -} - - -// Log_Msg implementation =================================== - -Log_Msg_impl::Log_Msg_impl () -{ -} - -Log_Msg_impl::Log_Msg_impl (CORBA::Short u, const char *m) -{ - this->urgency (u); - this->message (CORBA::string_dup (m)); -} - -Log_Msg_impl::~Log_Msg_impl () -{ -} - -void -Log_Msg_impl::do_print (void) -{ - Event_impl::do_print (); - // The timestamp - - if (this->urgency () > 0) - { - ACE_DEBUG((LM_DEBUG, "**** %s ****\n", this->message () )); - } - else - { - ACE_DEBUG((LM_DEBUG, "%s\n", this->message () )); - } -} - -Log_Msg_factory::~Log_Msg_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Log_Msg) -Log_Msg_factory::create_for_unmarshal () -{ - return new Log_Msg_impl; -} - - - -// Event_List_Link implementation =================================== - -Event_List_Link_impl::Event_List_Link_impl () -{ - this->my_event (0); - this->next (0); -} - -Event_List_Link_impl::Event_List_Link_impl (Event* e) -{ - this->my_event (e); - // Note that the modifier increases the reference counter of e. - - this->next (0); -} - -Event_List_Link_impl::~Event_List_Link_impl () -{ - // Destructor does nothing explicit, because my_event and next are - // _var types, which destroy (decrement the reference counter of) - // the held event resp. the next links. -} - -Event* -Event_List_Link_impl::get_event (void) -{ - return this->my_event (); -} - -Event_List_Link* -Event_List_Link_impl::get_next_link (void) -{ - return this->next (); -} - -void -Event_List_Link_impl::attach_next_link (Event_List_Link *n) -{ - this->next (n); -} - -Event_List_Link_factory::~Event_List_Link_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Event_List_Link) -Event_List_Link_factory::create_for_unmarshal () -{ - return new Event_List_Link_impl; -} - - -// Event_List implementation =================================== - -Event_List_impl::Event_List_impl () -{ - this->first_link (0); - last_link_cache_ = 0; -} - -Event_List_impl::~Event_List_impl () -{ - // Destructor does nothing explicit, because the _var types do care. -} - -void -Event_List_impl::store_event (Event* e) -{ - // This operation should perform atomically and should - // guard against the access to the list from another thread. - // But this is omitted in this example. - - Event_List_Link_var new_link (new Event_List_Link_impl (e)); - - // We need a new link to store the reference to the event e. - // But if we'd had assigned the newly created instance directly through - // a modifier function to a valuetype member, it would never be released. - // From pointer to _var the reference count of the pointed to never - // increased, but the modifier does. - - - if (last_link_cache_ == 0) - { - // Search the end. - for (Event_List_Link *i = this->first_link (); - i != 0; - i = i->get_next_link ()) - { - last_link_cache_ = i; - } - } - - - // If still null then the list is empty. - if (last_link_cache_ == 0) - { - this->first_link (new_link); - } - else - { - last_link_cache_->attach_next_link (new_link); - last_link_cache_ = new_link; - } -} - -Event_List_factory::~Event_List_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Event_List) -Event_List_factory::create_for_unmarshal () -{ - return new Event_List_impl; -} - - -Event_List_Iterator::Event_List_Iterator (Event_List *list) -{ - this->init (list); -} - -Event_List_Iterator::Event_List_Iterator () -{ - // current_ is a _var and set itself to null. -} - -Event_List_Iterator::~Event_List_Iterator () -{ - // nothing -} - - -void -Event_List_Iterator::init (Event_List *list) -{ - Event_List_Link *tmp = list->first_link (); - CORBA::add_ref (tmp); - current_ = tmp; -} - - -CORBA::Boolean -Event_List_Iterator::next (Event_var &next) -{ - if (current_) - { - Event *e = current_->get_event (); - CORBA::add_ref (e); - next = e; - return 1; - } - else - { - return 0; - } -} - -Event * -Event_List_Iterator::next () -{ - if (current_) - { - return current_->get_event (); - } - return 0; -} - -void -Event_List_Iterator::advance () -{ - if (current_) - { - Event_List_Link *tmp = current_->get_next_link (); - CORBA::add_ref (tmp); - current_ = tmp; - } -} - - - -// Checkpoint server side -------------------------------------------- - - -// Criterion classes implementation ---------------------------------- - - - -Temperature_Criterion_impl::Temperature_Criterion_impl () -{ -} - -Temperature_Criterion_impl:: -Temperature_Criterion_impl (CORBA::ULong origin_id, CORBA::Float temp) -{ - this->origin_id_ (origin_id); - Temperature_var tmp (new Temperature_impl (temp)); - this->meltingpoint (tmp.in ()); -} - -Temperature_Criterion_impl::~Temperature_Criterion_impl () -{ -} - - -CORBA::Boolean -Temperature_Criterion_impl::is_critical (Event* e) -{ - // Downcast to a temperature. - Temperature* t = Temperature::_downcast (e); - // Is Event really a Temperature ? - if (t) - { - // Now return the comparison with the meltingpoint. - return - (t->temperature_ () > this->meltingpoint ()->temperature_ ()) ? - 1 : 0; - } - return 0; -} - - -void -Temperature_Criterion_impl::do_print (void) -{ - ACE_DEBUG((LM_DEBUG, "Alarm boundary for events with origin id %d is\n", - this->origin_id_ () )); - this->meltingpoint ()->do_print(); -} - - -Temperature_Criterion_factory::~Temperature_Criterion_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Temperature_Criterion) -Temperature_Criterion_factory::create_for_unmarshal () -{ - return new Temperature_Criterion_impl; -} - - - -Position_Criterion_impl::Position_Criterion_impl () -{ -} - -Position_Criterion_impl::Position_Criterion_impl (CORBA::ULong origin_id, - Position *lb, - Position *tr) -{ - this->origin_id_ (origin_id); - this->leftbottom(lb); - this->topright(tr); -} - -Position_Criterion_impl::~Position_Criterion_impl () -{ -} - - -CORBA::Boolean -Position_Criterion_impl::is_critical (Event* e) -{ - Position* p = Position::_downcast (e); - // Is Event really a Position ? - if (p) - { - // If the position of p is out of the box return true. - return ( - (p->x () > this->leftbottom ()->x ()) && - (p->y () > this->leftbottom ()->y ()) && - (p->z () > this->leftbottom ()->z ()) && - (p->x () < this->topright ()->x ()) && - (p->y () < this->topright ()->y ()) && - (p->z () < this->topright ()->z ()) - ) ? 0 : 1; - } - return 0; -} - - -void -Position_Criterion_impl::do_print (void) -{ - ACE_DEBUG((LM_DEBUG, - "Alarm boundary for events with origin id %d is the box\n", - this->origin_id_ () )); - this->leftbottom ()->do_print(); - this->topright ()->do_print(); -} - -Position_Criterion_factory::~Position_Criterion_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Position_Criterion) -Position_Criterion_factory::create_for_unmarshal () -{ - return new Position_Criterion_impl; -} - - - -Log_Msg_Criterion_impl::Log_Msg_Criterion_impl () -{ -} - - -Log_Msg_Criterion_impl::~Log_Msg_Criterion_impl () -{ -} - - -CORBA::Boolean -Log_Msg_Criterion_impl::is_critical (Event* e) -{ - Log_Msg* lm = Log_Msg::_downcast (e); - - // Is Event really a Log_Msg ? - if (lm) - { - return (lm->urgency () ? 1 : 0); - } - return 0; -} - - -void -Log_Msg_Criterion_impl::do_print (void) -{ - ACE_DEBUG((LM_DEBUG, - "All log messages with urgency greater zero are registered.\n" )); -} - -Log_Msg_Criterion_factory::~Log_Msg_Criterion_factory () -{ -} - -TAO_OBV_CREATE_RETURN_TYPE (Log_Msg_Criterion) -Log_Msg_Criterion_factory::create_for_unmarshal () -{ - return new Log_Msg_Criterion_impl; -} - - - -Criterion_List_impl::Criterion_List_impl () -{ - this->my_list (0); - // We don't want create our list member here, because this constructor - // is called before unmarshalling too. We cant't distinguish that. - // If we transmit this type eventually. This is not done in this example. - // (That is no weakness of OBV since the instance should be created and - // initialized through the factory create (), - // which is not yet implemented %!) -} - -Criterion_List_impl::~Criterion_List_impl () -{ -} - -void -Criterion_List_impl::store_criterion (Criterion *c) -{ - if (!my_list ()) - { - Event_List_var ev(new Event_List_impl); - my_list (ev); - } - - Event *e = Event::_downcast (c); - my_list ()->store_event (e); -} - -CORBA::Boolean -Criterion_List_impl::is_critical (Event *e) -{ - // Try all criterions. Walking the list is efficient enough for - // demonstration. - - for (Criterion_List_Iterator i (this); i.next (); i.advance ()) - { - Criterion *c = i.next (); - - // Let e_c point to the Event part of the Criterion. - // We know that c has an Event part. - Event *e_c = Event::_downcast (c); - - - // A criterion is applied if the origin id is matching the event. - // A null id flags that it should be applied to all events. - - if (e->origin_id_() == e_c->origin_id_ () || - e_c->origin_id_ () == 0) - { - if (c->is_critical (e)) - return 1; - } - } - return 0; -} - - -Criterion_List_Iterator::Criterion_List_Iterator (Criterion_List *list) -{ - this->init (list); -} - -Criterion_List_Iterator::~Criterion_List_Iterator () -{ - // nothing -} - - -void -Criterion_List_Iterator::init (Criterion_List *list) -{ - iterator_.init (list->my_list()); -} - - -Criterion * -Criterion_List_Iterator::next () -{ - return (Criterion::_downcast (iterator_.next ())); -} - -void -Criterion_List_Iterator::advance () -{ - (void) iterator_.advance (); -} |