Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

IConverter Class Reference

The data converters are reposible to translate data from one representation into another. More...

#include <GaudiKernel/IConverter.h>

Inheritance diagram for IConverter:

IInterface Converter List of all members.

Public Types

enum  Status {
  SUCCESS = IInterface::SUCCESS, INVALID_ADDRESS = IInterface::LAST_ERROR+1, INVALID_OBJECT, NO_MEMORY,
  NO_SOURCE_OBJECT
}
 Status code. More...


Public Methods

virtual StatusCode initialize () = 0
 Initialize the converter. More...

virtual StatusCode finalize () = 0
 Terminate the converter. More...

virtual const CLIDobjType () const = 0
 Retrieve the class type of objects the converter produces. More...

virtual unsigned char repSvcType () const = 0
 Retrieve the class type of the data store the converter uses. More...

virtual StatusCode setDataProvider (IDataProviderSvc* pService) = 0
 Set Data provider service. More...

virtual IDataProviderSvcdataProvider () = 0
 Get Data provider service. More...

virtual StatusCode createObj (IOpaqueAddress* pAddress, DataObject*& refpObject) = 0
 Create the transient representation of an object. More...

virtual StatusCode fillObjRefs (IOpaqueAddress* pAddress, DataObject* pObject) = 0
 Resolve the references of the created transient object. More...

virtual StatusCode updateObj (IOpaqueAddress* pAddress, DataObject* refpObject) = 0
 Update the transient object from the other representation. More...

virtual StatusCode updateObjRefs (IOpaqueAddress* pAddress, DataObject* pObject) = 0
 Update the references of an updated transient object. More...

virtual StatusCode createRep (DataObject* pObject, IOpaqueAddress*& refpAddress) = 0
 Convert the transient object to the requested representation. More...

virtual StatusCode fillRepRefs (IOpaqueAddress* pAddress, DataObject* pObject) = 0
 Resolve the references of the converted object. More...

virtual StatusCode updateRep (IOpaqueAddress* pAddress, DataObject* pObject) = 0
 Update the converted representation of a transient object. More...

virtual StatusCode updateRepRefs (IOpaqueAddress* pAddress, DataObject* pObject) = 0
 Update the references of an already converted object. More...


Static Public Methods

const InterfaceIDinterfaceID ()
 Retrieve interface ID. More...


Detailed Description

The data converters are reposible to translate data from one representation into another.

Concrete examples are e.g. converters creating transient objects representing parts of an event from the persistent (and disk based) representations. Converters will have to deal with the technology both representations are based on: in the upper example they have to know about the database internals as well as the structure of the transient representations. The converters know about the mechanism to retrieve persistent objects (ZEBRA, Objectivity, ) and only pass abstract instances of the converted objects, hence shielding the calling service from internals.

Data converters are meant to be light. This means there should not be all-in-one converters, which are able to convert the "world", but rather many converters. Each converter is then able to create a representation of a given type.

In order to function a converter must be able to

The interface should cover the entry points of concrete converter instances in order to serve conversion requests.

Author(s):
Markus Frank
Version:
1.0

Definition at line 60 of file IConverter.h.


Member Enumeration Documentation

enum IConverter::Status
 

Status code.

Enumeration values:
SUCCESS   Success.
INVALID_ADDRESS   Invalid address information.
INVALID_OBJECT   Object to be converted is invalid.
NO_MEMORY   No more memory availible.
NO_SOURCE_OBJECT   Error retrieving source data from source store.

Reimplemented from IInterface.

Definition at line 181 of file IConverter.h.


Member Function Documentation

StatusCode IConverter::createObj ( IOpaqueAddress * pAddress,
DataObject *& refpObject ) [pure virtual]
 

Create the transient representation of an object.

The transient representation is created by loading the persistent object using the source information contained in the address.

Returns:
Status code indicating success or failure
Parameters:
pAddress   Opaque address information to retrieve the requested object from the store in order to produce the transient object.
refpObject   Reference to location of pointer of the created object.

Reimplemented in Converter.

Referenced by ConversionSvc::createObj().

StatusCode IConverter::createRep ( DataObject * pObject,
IOpaqueAddress *& refpAddress ) [pure virtual]
 

Convert the transient object to the requested representation.

e.g. conversion to persistent objects.

Returns:
Status code indicating success or failure
Parameters:
pObject   Pointer to location of the object
refpAddress   Reference to location of pointer with the object address.

Reimplemented in Converter.

IDataProviderSvc * IConverter::dataProvider ( ) [pure virtual]
 

Get Data provider service.

Returns:
Pointer to data provider service

Reimplemented in Converter.

StatusCode IConverter::fillObjRefs ( IOpaqueAddress * pAddress,
DataObject * pObject ) [pure virtual]
 

Resolve the references of the created transient object.

After the object creation references of the objects pointing to objects outside its scope will have to be filled. The actual objects will not be loaded, but the recipe to load them will be present.

Returns:
Status code indicating success or failure
Parameters:
pAddress   Opaque address information to retrieve the requested object from the store.
pObject   Pointer to location of the object

Reimplemented in Converter.

Referenced by ConversionSvc::createObj().

StatusCode IConverter::fillRepRefs ( IOpaqueAddress * pAddress,
DataObject * pObject ) [pure virtual]
 

Resolve the references of the converted object.

After the requested representation was created the references in this representation must be resolved.

Returns:
Status code indicating success or failure
Parameters:
pObject   Pointer to location of the object

Reimplemented in Converter.

StatusCode IConverter::finalize ( ) [pure virtual]
 

Terminate the converter.

Returns:
Status code indicating success or failure
Exceptions:
exception   (STL standard) in case of fatal errors

Reimplemented in Converter.

StatusCode IConverter::initialize ( ) [pure virtual]
 

Initialize the converter.

Returns:
Status code indicating success or failure
Exceptions:
exception   (STL standard) in case of fatal errors

Reimplemented in Converter.

Referenced by ConversionSvc::initializeConverter().

const InterfaceID & IConverter::interfaceID ( ) [inline, static]
 

Retrieve interface ID.

Reimplemented from IInterface.

Definition at line 63 of file IConverter.h.

const CLID & IConverter::objType ( ) const [pure virtual]
 

Retrieve the class type of objects the converter produces.

Returns:
Class type of the created object.

Reimplemented in Converter.

Referenced by ConversionSvc::addConverter().

unsigned char IConverter::repSvcType ( ) const [pure virtual]
 

Retrieve the class type of the data store the converter uses.

Returns:
Class type information about the source data store type the converter will use to retrieve the information.

Reimplemented in Converter.

Referenced by ConversionSvc::addConverter().

StatusCode IConverter::setDataProvider ( IDataProviderSvc * svc ) [pure virtual]
 

Set Data provider service.

Returns:
Status code indicating success or failure
Parameters:
pService   Pointer to data provider service

Reimplemented in Converter.

StatusCode IConverter::updateObj ( IOpaqueAddress * pAddress,
DataObject * refpObject ) [pure virtual]
 

Update the transient object from the other representation.

The transient representation will be updated by loading the persistent object using the source information contained in the address and then refill transient data.

Returns:
Status code indicating success or failure
Parameters:
pAddress   Opaque address information to retrieve the requested object from the store.
pObject   Pointer to the object to be updated.

Reimplemented in Converter.

Referenced by ConversionSvc::updateObj().

StatusCode IConverter::updateObjRefs ( IOpaqueAddress * pAddress,
DataObject * pObject ) [pure virtual]
 

Update the references of an updated transient object.

After the object was updated alse the references of the objects pointing to objects outside its scope will have to be filled. The actual pointers to objects will only be filled if already present. Otherwise only the recipe to load them will be present.

Returns:
Status code indicating success or failure
Parameters:
pAddress   Opaque address information to retrieve the requested object from the store.
pObject   Pointer to location of the object

Reimplemented in Converter.

Referenced by ConversionSvc::updateObj().

StatusCode IConverter::updateRep ( IOpaqueAddress * pAddress,
DataObject * pObject ) [pure virtual]
 

Update the converted representation of a transient object.

Returns:
Status code indicating success or failure
Parameters:
pObject   Pointer to location of the object
refpAddress   Reference to location of pointer with the object address.

Reimplemented in Converter.

Referenced by ConversionSvc::updateReps().

StatusCode IConverter::updateRepRefs ( IOpaqueAddress * pAddress,
DataObject * pObject ) [pure virtual]
 

Update the references of an already converted object.

The object must be retrieved before it can be updated.

Returns:
Status code indicating success or failure
Parameters:
pAddress   Pointer to location of object address with the store.
pObject   Pointer to location of the object

Reimplemented in Converter.


The documentation for this class was generated from the following file:
Generated at Wed Nov 21 12:22:11 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000