Public Member Functions | Protected Member Functions | Private Member Functions

TAO_IORManip_Filter Class Reference

#include <IORManip_Filter.h>

Inheritance diagram for TAO_IORManip_Filter:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 TAO_IORManip_Filter (void)
 Constructor.
virtual ~TAO_IORManip_Filter (void)
 Destructor.
CORBA::Object_ptr sanitize_profiles (CORBA::Object_ptr object, TAO_Profile *profile=0)

Protected Member Functions

virtual void filter_and_add (TAO_Profile *profile, TAO_MProfile &profiles, TAO_Profile *guideline=0)=0
 This will be the bulk of the filtering code.

Private Member Functions

CORBA::Object_ptr sanitize (CORBA::Object_ptr object, TAO_Profile *profile)
 The sanitize_profiles() methods call this to do the work.

Detailed Description

Definition at line 36 of file IORManip_Filter.h.


Constructor & Destructor Documentation

TAO_IORManip_Filter::TAO_IORManip_Filter ( void   ) 

Constructor.

Definition at line 13 of file IORManip_Filter.cpp.

{
}

TAO_IORManip_Filter::~TAO_IORManip_Filter ( void   )  [virtual]

Destructor.

Definition at line 18 of file IORManip_Filter.cpp.

{
}


Member Function Documentation

virtual void TAO_IORManip_Filter::filter_and_add ( TAO_Profile profile,
TAO_MProfile profiles,
TAO_Profile guideline = 0 
) [protected, pure virtual]

This will be the bulk of the filtering code.

Implemented in TAO_IORManip_IIOP_Filter.

CORBA::Object_ptr TAO_IORManip_Filter::sanitize ( CORBA::Object_ptr  object,
TAO_Profile profile 
) [private]

The sanitize_profiles() methods call this to do the work.

Definition at line 32 of file IORManip_Filter.cpp.

{
  TAO_MProfile profiles = object->_stubobj ()->base_profiles ();
  TAO_MProfile new_profiles (profiles.profile_count ());
  TAO_Profile* profile = 0;

  while ((profile = profiles.get_next ()) != 0)
    {
      // Call the filter implementation
      this->filter_and_add (profile, new_profiles, guideline);
    }

  // The remainder of this code has been lifted from IORManipulation.cpp
  CORBA::String_var id =
      CORBA::string_dup (object->_stubobj ()->type_id.in ());

  TAO_ORB_Core *orb_core = object->_stubobj ()->orb_core ();
  if (orb_core == 0)
    orb_core = TAO_ORB_Core_instance ();

  TAO_Stub *stub = orb_core->create_stub (id.in (),  // give the id string to stub
                                          new_profiles);

  // Make the stub memory allocation exception safe for the duration
  // of this method.
  TAO_Stub_Auto_Ptr safe_stub (stub);

  // Create the CORBA level proxy
  CORBA::Object_ptr temp_obj = CORBA::Object::_nil ();
  ACE_NEW_THROW_EX (temp_obj,
                    CORBA::Object (safe_stub.get ()),
                    CORBA::NO_MEMORY ());

  CORBA::Object_var new_obj = temp_obj;


  // Clean up in case of errors.
  if (CORBA::is_nil (new_obj.in ()))
    {
      throw TAO_IOP::Invalid_IOR ();
    }

  // Release ownership of the pointers protected by the auto_ptrs since
  // they no longer need to be protected by this point.
  stub = safe_stub.release ();

  return new_obj._retn ();
}

CORBA::Object_ptr TAO_IORManip_Filter::sanitize_profiles ( CORBA::Object_ptr  object,
TAO_Profile profile = 0 
)

Perform filtering using the profile passed in as a guide. If no profile is provided, filter using the profile_matches() method.

Definition at line 24 of file IORManip_Filter.cpp.

{
  return this->sanitize (object, profile);
}


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