TAO::CompressionManager Class Reference

#include <Compression_Manager.h>

Inheritance diagram for TAO::CompressionManager:

Inheritance graph
[legend]
Collaboration diagram for TAO::CompressionManager:

Collaboration graph
[legend]
List of all members.

Private Member Functions

virtual void register_factory (::Compression::CompressorFactory_ptr compressor_factory)
virtual void unregister_factory (::Compression::CompressorId compressor_id)
virtual::Compression::CompressorFactory_ptr get_factory (::Compression::CompressorId compressor_id)
virtual::Compression::Compressor_ptr get_compressor (::Compression::CompressorId compressor_id,::Compression::CompressionLevel compression_level)
virtual::Compression::CompressorFactorySeq * get_factories (void)

Private Attributes

TAO_SYNCH_MUTEX mutex_
::Compression::CompressorFactorySeq factories_

Member Function Documentation

Compression::Compressor_ptr TAO::CompressionManager::get_compressor ::Compression::CompressorId  compressor_id,
::Compression::CompressionLevel  compression_level
[private]
 

Definition at line 99 of file Compression_Manager.cpp.

References Compression::CompressionLevel, Compression::CompressorId, and get_factory().

00103   {
00104     ::Compression::CompressorFactory_var factory = this->get_factory (
00105       compressor_id);
00106 
00107     return factory->get_compressor (compression_level);
00108   }

Compression::CompressorFactorySeq * TAO::CompressionManager::get_factories void   )  [private]
 

List all registered CompressorFactories

Implements Compression::CompressionManager.

Definition at line 111 of file Compression_Manager.cpp.

00112   {
00113     // todo
00114     return 0;
00115   }

Compression::CompressorFactory_ptr TAO::CompressionManager::get_factory ::Compression::CompressorId  compressor_id  )  [private]
 

Definition at line 74 of file Compression_Manager.cpp.

References ACE_GUARD_RETURN, Compression::CompressorId, factories_, and TAO_SYNCH_MUTEX.

Referenced by get_compressor().

00075   {
00076     ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, ace_mon, this->mutex_,
00077         ::Compression::CompressorFactory::_nil ());
00078 
00079     CORBA::ULong const length = this->factories_.length ();
00080 
00081     for (CORBA::ULong i = 0; i < length; ++i)
00082       {
00083         ::Compression::CompressorId const current =
00084           this->factories_[i]->compressor_id ();
00085 
00086         if (current != compressor_id)
00087           {
00088             continue;
00089           }
00090 
00091         return ::Compression::CompressorFactory::_duplicate (
00092           this->factories_[i]);
00093       }
00094 
00095     throw ::Compression::UnknownCompressorId ();
00096   }

void TAO::CompressionManager::register_factory ::Compression::CompressorFactory_ptr  compressor_factory  )  [private, virtual]
 

Definition at line 15 of file Compression_Manager.cpp.

References ACE_GUARD, factories_, and TAO_SYNCH_MUTEX.

00017   {
00018     if (!::CORBA::is_nil (compressor_factory))
00019       {
00020         ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
00021 
00022         CORBA::ULong const length = this->factories_.length ();
00023 
00024         for (CORBA::ULong i = 0; i < length; ++i)
00025           {
00026             ::Compression::CompressorId const current =
00027               this->factories_[i]->compressor_id ();
00028 
00029             if (compressor_factory->compressor_id () == current)
00030               {
00031                 throw ::Compression::FactoryAlreadyRegistered ();
00032               }
00033           }
00034         factories_.length (length + 1);
00035         factories_[length] = ::Compression::CompressorFactory::_duplicate (
00036           compressor_factory);
00037       }
00038     else
00039       {
00040         // @todo Standardize this minor code
00041         throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 44, CORBA::COMPLETED_NO);
00042       }
00043   }

void TAO::CompressionManager::unregister_factory ::Compression::CompressorId  compressor_id  )  [private, virtual]
 

Definition at line 46 of file Compression_Manager.cpp.

References ACE_GUARD, Compression::CompressorId, factories_, and TAO_SYNCH_MUTEX.

00048   {
00049     ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_);
00050 
00051     CORBA::ULong const length = this->factories_.length ();
00052 
00053     for (CORBA::ULong i = 0; i < length; ++i)
00054       {
00055         ::Compression::CompressorId const current =
00056           this->factories_[i]->compressor_id ();
00057 
00058         if (current != compressor_id)
00059           {
00060             continue;
00061           }
00062 
00063         this->factories_[i] = ::Compression::CompressorFactory::_nil ();
00064         // make sequence smaller
00065 
00066         return;
00067       }
00068 
00069     // todo exception
00070     throw ::Compression::UnknownCompressorId ();
00071   }


Member Data Documentation

::Compression::CompressorFactorySeq TAO::CompressionManager::factories_ [private]
 

Definition at line 52 of file Compression_Manager.h.

Referenced by get_factory(), register_factory(), and unregister_factory().

TAO_SYNCH_MUTEX TAO::CompressionManager::mutex_ [private]
 

Definition at line 51 of file Compression_Manager.h.


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 13:31:51 2008 for TAO_Compression by doxygen 1.3.6