Public Member Functions

TAO_ZIOP_PolicyFactory Class Reference

Policy factory for all Messaging related policies. More...

#include <ZIOP_PolicyFactory.h>

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

List of all members.

Public Member Functions

virtual CORBA::Policy_ptr create_policy (CORBA::PolicyType type, const CORBA::Any &value)
virtual CORBA::Policy_ptr _create_policy (CORBA::PolicyType type)

Detailed Description

Policy factory for all Messaging related policies.

Definition at line 36 of file ZIOP_PolicyFactory.h.


Member Function Documentation

CORBA::Policy_ptr TAO_ZIOP_PolicyFactory::_create_policy ( CORBA::PolicyType  type  )  [virtual]

Definition at line 109 of file ZIOP_PolicyFactory.cpp.

{
  CORBA::Policy_ptr policy = CORBA::Policy_ptr ();

  switch (type)
  {
    case ZIOP::COMPRESSION_ENABLING_POLICY_ID:
    {
      ACE_NEW_THROW_EX (policy,
                        TAO::CompressionEnablingPolicy,
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  case ZIOP::COMPRESSOR_ID_LEVEL_LIST_POLICY_ID:
    {
      ACE_NEW_THROW_EX (policy,
                        TAO::CompressorIdLevelListPolicy,
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  }
  throw ::CORBA::PolicyError (CORBA::BAD_POLICY_TYPE);
}

CORBA::Policy_ptr TAO_ZIOP_PolicyFactory::create_policy ( CORBA::PolicyType  type,
const CORBA::Any value 
) [virtual]

Definition at line 15 of file ZIOP_PolicyFactory.cpp.

{
  CORBA::Policy_ptr policy = CORBA::Policy::_nil ();

  switch (type)
  {
    case ZIOP::COMPRESSION_ENABLING_POLICY_ID:
    {
      ::CORBA::Boolean val;

      // Extract the value from the any.
      if (!(value >>= CORBA::Any::to_boolean (val)))
        {
          throw CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
        }

      ACE_NEW_THROW_EX (policy,
                        TAO::CompressionEnablingPolicy (val),
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  case ZIOP::COMPRESSOR_ID_LEVEL_LIST_POLICY_ID :
    {
      ::Compression::CompressorIdLevelList* val = 0;

      // Extract the value from the any.
      if (!(value >>= val))
        {
          throw CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
        }

      ACE_NEW_THROW_EX (policy,
                        TAO::CompressorIdLevelListPolicy (*val),
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  case ZIOP::COMPRESSION_LOW_VALUE_POLICY_ID:
    {
      ::CORBA::ULong val;

      // Extract the value from the any.
      if (!(value >>= val))
        {
          throw CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
        }

      ACE_NEW_THROW_EX (policy,
                        TAO::CompressionLowValuePolicy (val),
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  case ZIOP::COMPRESSION_MIN_RATIO_POLICY_ID:
    {
      ::Compression::CompressionRatio val;

      // Extract the value from the any.
      if (!(value >>= val))
        {
          throw CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);
        }

      ACE_NEW_THROW_EX (policy,
                        TAO::CompressionMinRatioPolicy (val),
                        CORBA::NO_MEMORY (
                          CORBA::SystemException::_tao_minor_code (
                            TAO::VMCID,
                            ENOMEM),
                          CORBA::COMPLETED_NO));

      return policy;
    }
  }

  throw CORBA::PolicyError (CORBA::BAD_POLICY_TYPE);
}


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