diff options
Diffstat (limited to 'TAO/tao/Compression/Compression.pidl')
-rw-r--r-- | TAO/tao/Compression/Compression.pidl | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/TAO/tao/Compression/Compression.pidl b/TAO/tao/Compression/Compression.pidl new file mode 100644 index 00000000000..76404daf6d9 --- /dev/null +++ b/TAO/tao/Compression/Compression.pidl @@ -0,0 +1,151 @@ +// -*- IDL -*- + +/** + * @file Compression.pidl + * + * $Id$ + */ + +#ifndef _COMPRESSION_PIDL_ +#define _COMPRESSION_PIDL_ + +#include "tao/OctetSeq.pidl" + +module Compression +{ + typeprefix Compression "omg.org"; + + /** + * Exception thrown when an error occurs during a compress or decompress + * operation. + */ + exception CompressionException + { + }; + + /** + * Exception thrown if a CompressorFactory with the same CompressorId is + * already registered with the CompressionManager. + */ + exception FactoryAlreadyRegistered + { + }; + + /** + * Exception thrown if a CompressorId is not known. + */ + exception UnknownCompressorId + { + }; + + /** + * CompressorId type. + */ + typedef unsigned long CompressorId; + + /** + * CompressionLevel type. + */ + typedef unsigned long CompressionLevel; + + local interface CompressorFactory; + + /** + * Compressor - abstraction of a compressor and decompressor. + */ + local interface Compressor + { + /** + * Operation that compresses data contained in the source Buffer into + * the target Buffer. If an error occurs during the compression, it + * throws CompressionException + */ + void compress(in CORBA::OctetSeq source, inout CORBA::OctetSeq target) raises (CompressionException); + /** + * Operation that decompresses data contained in the source Buffer into + * the target Buffer. If an error occurs during the decompression, it + * throws CompressionException + */ + void decompress(in CORBA::OctetSeq source, inout CORBA::OctetSeq target) raises(CompressionException); + /** + * The CompressorFactory associated with this Compressor. + */ + readonly attribute CompressorFactory compressor_factory; + /** + * The (implementation and algorithm specific) compression level + * associated with this Compressor. + */ + readonly attribute CompressionLevel compression_level; + }; + + local interface CompressorFactory + { + /** + * The CompressorId associated with this CompressorFactory + */ + readonly attribute CompressorId compressor_id; + /** + * The total number of compressed bytes read and written by Compressors + * that were created by this CompressorFactory + * (i.e. the "target" side of Compressor::compress and + * the "source" side of Compressor::decompress operations). + */ + readonly attribute unsigned long long compressed_bytes; + /** + * The total number of uncompressed bytes read and written by + * Compressors that were created by this CompressorFactory + * (i.e. the "source" side of Compressor::compress and + * the "target" side of Compressor::decompress operations). + */ + readonly attribute unsigned long long uncompressed_bytes; + /** + * The average compression achieved by Compressors that were created by + * this CompressorFactory, usually a value between 0 and >=1. + * (i.e. compressed_bytes divided by uncompressed_bytes). + */ + readonly attribute double average_compression; + /** + * Create a Compressor instance with the given compression level. + */ + Compressor get_compressor(in CompressionLevel compression_level); + /** + * Add a sample of compressed and uncompressed bytes. + */ + void add_sample(in unsigned long long compressed_bytes, in unsigned long long uncompressed_bytes); + }; + + typedef sequence<CompressorFactory> CompressorFactorySeq; + + /** + * Per-ORB interface to register and unregister CompressorFactories. + * Initial reference: "CompressionManager" + */ + local interface CompressionManager + { + /** + * Register a new CompressorFactory + */ + void register_factory(in CompressorFactory compressor_factory) raises(FactoryAlreadyRegistered); + /** + * Unregister a CompressorFactory with the given CompressorId from the + * CompressionManager + */ + void unregister_factory(in CompressorId compressor_id) raises (UnknownCompressorId); + /** + * Retrieve a CompressorFactory with the given CompressorId from the + * CompressionManager + */ + CompressorFactory get_factory(in CompressorId compressor_id) raises(UnknownCompressorId); + /** + * Create a Compressor with the given compression_level from the + * CompressorFactory with the given CompressorId + */ + Compressor get_compressor(in CompressorId compressor_id, in CompressionLevel compression_level) raises(UnknownCompressorId); + /** + * List all registered CompressorFactories + */ + CompressorFactorySeq get_factories(); + }; +}; + +#endif |