Public Types | Public Member Functions | Protected Attributes | Friends

TAO_Notify_Proxy Class Reference

Base class proxy for all proxys in NS. More...

#include <Proxy.h>

Inheritance diagram for TAO_Notify_Proxy:
Inheritance graph
[legend]
Collaboration diagram for TAO_Notify_Proxy:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
TAO_Notify_Refcountable_Guard_T
< TAO_Notify_Proxy
Ptr
typedef
CosNotifyChannelAdmin::ProxyIDSeq 
SEQ
typedef
CosNotifyChannelAdmin::ProxyIDSeq_var 
SEQ_VAR

Public Member Functions

 TAO_Notify_Proxy (void)
 Constructor.
virtual ~TAO_Notify_Proxy ()
 Destructor.
virtual CORBA::Object_ptr activate (PortableServer::Servant servant)
 Activate.
virtual CORBA::Object_ptr activate (PortableServer::Servant servant, CORBA::Long id)
 Activate with a given ID.
void deactivate (void)
 Deactivate.
void subscribed_types (TAO_Notify_EventTypeSeq &subscribed_types)
 Obtain the Proxy's subscribed types.
CORBA::Boolean check_filters (const TAO_Notify_Event *event, TAO_Notify_FilterAdmin &parent_filter_admin, CosNotifyChannelAdmin::InterFilterGroupOperator filter_operator)
 Check if this event passes the admin and proxy filters.
void types_changed (const TAO_Notify_EventTypeSeq &added, const TAO_Notify_EventTypeSeq &removed)
 Inform this proxy that the following types are being advertised.
CORBA::Boolean updates_off (void)
 Have updates been turned off.
virtual void destroy (void)=0
 Destroy this object.
virtual TAO_Notify_Peerpeer (void)=0
 Access our Peer.
virtual
CosNotification::EventTypeSeq
obtain_types (CosNotifyChannelAdmin::ObtainInfoMode mode, const TAO_Notify_EventTypeSeq &types)
 Implement the Obtain Types.
virtual void admin_types_changed (const CosNotification::EventTypeSeq &added, const CosNotification::EventTypeSeq &removed)=0
 Notification of subscriptions/offers set at the admin.
virtual void qos_changed (const TAO_Notify_QoSProperties &qos_properties)
 Override, TAO_Notify_Object::qos_changed.
virtual void save_persistent (TAO_Notify::Topology_Saver &saver)
virtual void save_attrs (TAO_Notify::NVPList &attrs)
virtual const char * get_proxy_type_name (void) const =0
virtual
TAO_Notify::Topology_Object
load_child (const ACE_CString &type, CORBA::Long id, const TAO_Notify::NVPList &attrs)
 Create a child of the appropriate type and return it.
virtual void validate ()=0

Protected Attributes

TAO_Notify_FilterAdmin filter_admin_
 Filter Administration.
TAO_Notify_EventTypeSeq subscribed_types_
 The types that we're subscribed with the event manager.
CORBA::Boolean updates_off_
 True if updates have been turned off.

Friends

class TAO_Notify_Peer

Detailed Description

Base class proxy for all proxys in NS.

Definition at line 38 of file Proxy.h.


Member Typedef Documentation

Reimplemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.

Definition at line 44 of file Proxy.h.

Definition at line 45 of file Proxy.h.

typedef CosNotifyChannelAdmin::ProxyIDSeq_var TAO_Notify_Proxy::SEQ_VAR

Definition at line 46 of file Proxy.h.


Constructor & Destructor Documentation

TAO_Notify_Proxy::TAO_Notify_Proxy ( void   ) 

Constructor.

Definition at line 21 of file Proxy.cpp.

  : updates_off_ (0)
{
}

TAO_Notify_Proxy::~TAO_Notify_Proxy (  )  [virtual]

Destructor.

Definition at line 26 of file Proxy.cpp.

{
}


Member Function Documentation

CORBA::Object_ptr TAO_Notify_Proxy::activate ( PortableServer::Servant  servant  )  [virtual]

Activate.

Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.

Definition at line 31 of file Proxy.cpp.

{
  // Set the POA that we use to return our <ref>
  this->set_primary_as_proxy_poa();
  return TAO_Notify_Object::activate (servant);
}

CORBA::Object_ptr TAO_Notify_Proxy::activate ( PortableServer::Servant  servant,
CORBA::Long  id 
) [virtual]

Activate with a given ID.

Reimplemented in TAO_Notify_RT_StructuredProxyPushSupplier.

Definition at line 39 of file Proxy.cpp.

{
  // Set the POA that we use to return our <ref>
  this->set_primary_as_proxy_poa();
  return TAO_Notify_Object::activate (servant, id);
}

virtual void TAO_Notify_Proxy::admin_types_changed ( const CosNotification::EventTypeSeq added,
const CosNotification::EventTypeSeq removed 
) [pure virtual]
CORBA::Boolean TAO_Notify_Proxy::check_filters ( const TAO_Notify_Event event,
TAO_Notify_FilterAdmin parent_filter_admin,
CosNotifyChannelAdmin::InterFilterGroupOperator  filter_operator 
)

Check if this event passes the admin and proxy filters.

Definition at line 14 of file Proxy.inl.

{
  // check if it passes the parent filter.
  CORBA::Boolean const parent_val =
    parent_filter_admin.match (event);

  CORBA::Boolean val = false;

  if (filter_operator == CosNotifyChannelAdmin::AND_OP)
    {
      val = parent_val && this->filter_admin_.match (event);
    }
  else
    {
      val = parent_val || this->filter_admin_.match (event);
    }

  return val;
}

void TAO_Notify_Proxy::deactivate ( void   ) 

Deactivate.

Definition at line 48 of file Proxy.cpp.

{
  ACE_ASSERT (this->proxy_poa() != 0 );
  this->proxy_poa()->deactivate (this->id());
}

virtual void TAO_Notify_Proxy::destroy ( void   )  [pure virtual]

Destroy this object.

Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.

virtual const char* TAO_Notify_Proxy::get_proxy_type_name ( void   )  const [pure virtual]
TAO_Notify::Topology_Object * TAO_Notify_Proxy::load_child ( const ACE_CString type,
CORBA::Long  id,
const TAO_Notify::NVPList attrs 
) [virtual]

Create a child of the appropriate type and return it.

Use "type" as passed in to determine what kind of child (supporting the Topology_Object interface) to create and return. Inform it of its new ID.

Reimplemented from TAO_Notify::Topology_Object.

Definition at line 167 of file Proxy.cpp.

{
  ACE_UNUSED_ARG (id);
  ACE_UNUSED_ARG (attrs);
  TAO_Notify::Topology_Object* result = this;
  if (type == "subscriptions")
  {
    // since we initialized our subscribed types to everything
    // in the constructor. we have to clear it out first.
    this->subscribed_types_.reset();
    result = &this->subscribed_types_;
  }
  else if (type == "filter_admin")
  {
    result = & this->filter_admin_;
  }
  return result;
}

CosNotification::EventTypeSeq * TAO_Notify_Proxy::obtain_types ( CosNotifyChannelAdmin::ObtainInfoMode  mode,
const TAO_Notify_EventTypeSeq types 
) [virtual]

Implement the Obtain Types.

Definition at line 85 of file Proxy.cpp.

{
  CosNotification::EventTypeSeq_var event_type_seq;

  ACE_NEW_THROW_EX (event_type_seq,
                    CosNotification::EventTypeSeq (),
                    CORBA::NO_MEMORY ());

  ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_, CORBA::INTERNAL ());

  if (mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_OFF ||
      mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON)
    {
      types.populate (event_type_seq);
    }

  if (mode == CosNotifyChannelAdmin::NONE_NOW_UPDATES_ON ||
      mode == CosNotifyChannelAdmin::ALL_NOW_UPDATES_ON)
    {
      this->updates_off_ = 0;
    }
  else
    {
      this->updates_off_ = 1;
    }

  return event_type_seq._retn ();
}

virtual TAO_Notify_Peer* TAO_Notify_Proxy::peer ( void   )  [pure virtual]

Access our Peer.

Implemented in TAO_Notify_ProxyConsumer, and TAO_Notify_ProxySupplier.

void TAO_Notify_Proxy::qos_changed ( const TAO_Notify_QoSProperties qos_properties  )  [virtual]

Override, TAO_Notify_Object::qos_changed.

Reimplemented in TAO_Notify_ProxySupplier.

Definition at line 115 of file Proxy.cpp.

{
  //Inform Peers of qos changes.
  TAO_Notify_Peer* peer = this->peer ();

  if (peer != 0)
    peer->qos_changed (qos_properties);
}

void TAO_Notify_Proxy::save_attrs ( TAO_Notify::NVPList attrs  )  [virtual]

Definition at line 156 of file Proxy.cpp.

{
  TAO_Notify_Object::save_attrs(attrs);
  TAO_Notify_Peer * peer = this->peer();
  if (peer != 0)
  {
    attrs.push_back (TAO_Notify::NVP("PeerIOR", peer->get_ior()));
  }
}

void TAO_Notify_Proxy::save_persistent ( TAO_Notify::Topology_Saver saver  )  [virtual]

Save our state to a Topology_Saver.

Use the methods of a Topology_Saver to store all information we want persisted. This function is called by our parent, which gives us a saver to use. In turn, we must call this function on all of our children. The implementation should look like: bool change = this->self_changed_; this->self_changed_ = false; this->children_changed_ = false; if (is_persistent ()) { bool want_all_children = saver.begin_object( this->id(), type, attrs, change); for all children { if (want_all_children || child.is_changed()) { child.save_persistent(saver); } } for all deleted children { saver.delete_child(child_type, child_id); } saver.end_object(this->id(), type); )

Implements TAO_Notify::Topology_Savable.

Definition at line 125 of file Proxy.cpp.

{
  bool changed = this->children_changed_;
  this->children_changed_ = false;
  this->self_changed_ = false;

  if (is_persistent ())
  {
    TAO_Notify::NVPList attrs;
    this->save_attrs(attrs);

    const char * type_name = this->get_proxy_type_name ();
    bool want_all_children = saver.begin_object(this->id(), type_name, attrs, changed);

    if (want_all_children || this->filter_admin_.is_changed ())
    {
      this->filter_admin_.save_persistent(saver);
    }

    if (want_all_children || this->subscribed_types_.is_changed ())
    {
      this->subscribed_types_.save_persistent(saver);
    }

    // todo: handle removed children

    saver.end_object(this->id(), type_name);
  }
}

void TAO_Notify_Proxy::subscribed_types ( TAO_Notify_EventTypeSeq subscribed_types  ) 

Obtain the Proxy's subscribed types.

Definition at line 55 of file Proxy.cpp.

{
  ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
                        CORBA::INTERNAL ());

  // copy
  subscribed_types = this->subscribed_types_;
}

void TAO_Notify_Proxy::types_changed ( const TAO_Notify_EventTypeSeq added,
const TAO_Notify_EventTypeSeq removed 
)

Inform this proxy that the following types are being advertised.

Definition at line 65 of file Proxy.cpp.

{
  // return if the updates for this proxy are turned off or
  // if all the updates in the channel are switched off.
  if (this->updates_off_ == 1 || TAO_Notify_PROPERTIES::instance()->updates () == 0)
    return;

  TAO_Notify_Method_Request_Updates_No_Copy request (added, removed, this);

  if (TAO_Notify_PROPERTIES::instance()->asynch_updates () == 1) // if we should send the updates synchronously.
    {
      this->execute_task (request);
    }
  else // execute in the current thread context.
    {
      request.execute ();
    }
}

CORBA::Boolean TAO_Notify_Proxy::updates_off ( void   ) 

Have updates been turned off.

Definition at line 8 of file Proxy.inl.

{
  return this->updates_off_;
}

virtual void TAO_Notify_Proxy::validate (  )  [pure virtual]

Friends And Related Function Documentation

friend class TAO_Notify_Peer [friend]

Definition at line 41 of file Proxy.h.


Member Data Documentation

Filter Administration.

Definition at line 114 of file Proxy.h.

The types that we're subscribed with the event manager.

Definition at line 117 of file Proxy.h.

True if updates have been turned off.

Definition at line 120 of file Proxy.h.


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