casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | List of all members
casacore::ObjectID Class Reference

ObjectID: A unique identifier for distributed and other objects. More...

#include <ObjectID.h>

Public Member Functions

 ObjectID (Bool makeNull=False)
 If makeNull is True, make the null ObjectID, otherwise create a unique ObjectID. More...
 
 ObjectID (Int sequence, Int pid, Int time, const String &hostname)
 Create explicitly from the provided constituents. More...
 
 ObjectID (const ObjectID &other)
 Copy other. More...
 
ObjectIDoperator= (const ObjectID &other)
 
Bool isNull () const
 Is this ObjectID set? More...
 
Bool operator== (const ObjectID &other) const
 Compare two ObjectID's for (in)equality. More...
 
Bool operator!= (const ObjectID &other) const
 
Bool fromString (String &error, const String &in)
 It is useful to interconvert between strings and ObjecID's, e.g. More...
 
void toString (String &out) const
 Note that out is zero'd before it is set. More...
 
Int sequence () const
 Ordinarily the user does not need to get at the exact state of the, ObjectID, however it is available for those times when it is necessary. More...
 
Int pid () const
 
Int creationTime () const
 
const StringhostName () const
 

Static Public Member Functions

static String extractIDs (Block< ObjectID > &objectIDs, const String &command)
 Extract objectID strings (as set by glish script substitute.g) from a command, convert them to ObjectID objects, store those in the Block, and replace the strings by their Block indices as $OBJ::n::O where n is the index. More...
 

Static Private Member Functions

static Int sequence_number ()
 Make a unique sequence number, returns 0 on first call, 1 on next,... More...
 

Private Attributes

Int sequence_number_p
 
Int process_id_p
 
Int creation_time_p
 
String hostname_p
 

Detailed Description

ObjectID: A unique identifier for distributed and other objects.

Intended use:

Public interface

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Test programs:
tObjectID

Prerequisite

Etymology

The ObjectID class name reflects its role as the single identifier for distributed and other user-level objects.

Synopsis

The ObjectID class is used to give a unique identifier to ``high-level'' objects in the system. Internally the ObjectID consists of a sequence number (unique within the creating process), a process id, a creation time, and a host id. Pragmatically the ObjectID should be unique with no dangers of collisions.

A special ``Null'' ObjectID is available.

Motivation

The fundamental purpose for an ObjectID is to provide a unique identifier for persistent objects, or for objects that might be accessed outside the creating processes address space.

To Do

Definition at line 79 of file ObjectID.h.

Constructor & Destructor Documentation

casacore::ObjectID::ObjectID ( Bool  makeNull = False)

If makeNull is True, make the null ObjectID, otherwise create a unique ObjectID.

casacore::ObjectID::ObjectID ( Int  sequence,
Int  pid,
Int  time,
const String hostname 
)

Create explicitly from the provided constituents.

casacore::ObjectID::ObjectID ( const ObjectID other)

Copy other.

Note that if the ObjectID is embedded inside an object, the enclosing object probably does not want to copy the ObjectID since generally speaking the identity of the enclosing object should be immutable.

Member Function Documentation

Int casacore::ObjectID::creationTime ( ) const
inline

Definition at line 164 of file ObjectID.h.

References creation_time_p.

static String casacore::ObjectID::extractIDs ( Block< ObjectID > &  objectIDs,
const String command 
)
static

Extract objectID strings (as set by glish script substitute.g) from a command, convert them to ObjectID objects, store those in the Block, and replace the strings by their Block indices as $OBJ::n::O where n is the index.

Bool casacore::ObjectID::fromString ( String error,
const String in 
)

It is useful to interconvert between strings and ObjecID's, e.g.

when saving to FITS or writing to a table. The form of the string is:

sequence=123 host=hostname pid=pid time=time

with an optional comma between the fields. However, in general user code should not depend on the exact form of the string.

If this fails, an error message is set and the ObjectID is the null ObjectID.

const String & casacore::ObjectID::hostName ( ) const
inline

Definition at line 169 of file ObjectID.h.

References hostname_p.

Bool casacore::ObjectID::isNull ( ) const

Is this ObjectID set?

Bool casacore::ObjectID::operator!= ( const ObjectID other) const
ObjectID& casacore::ObjectID::operator= ( const ObjectID other)
Bool casacore::ObjectID::operator== ( const ObjectID other) const

Compare two ObjectID's for (in)equality.

Int casacore::ObjectID::pid ( ) const
inline

Definition at line 159 of file ObjectID.h.

References process_id_p.

Int casacore::ObjectID::sequence ( ) const
inline

Ordinarily the user does not need to get at the exact state of the, ObjectID, however it is available for those times when it is necessary.

Definition at line 154 of file ObjectID.h.

References sequence_number_p.

static Int casacore::ObjectID::sequence_number ( )
staticprivate

Make a unique sequence number, returns 0 on first call, 1 on next,...

void casacore::ObjectID::toString ( String out) const

Note that out is zero'd before it is set.

Member Data Documentation

Int casacore::ObjectID::creation_time_p
private

Definition at line 141 of file ObjectID.h.

Referenced by creationTime().

String casacore::ObjectID::hostname_p
private

Definition at line 142 of file ObjectID.h.

Referenced by hostName().

Int casacore::ObjectID::process_id_p
private

Definition at line 140 of file ObjectID.h.

Referenced by pid().

Int casacore::ObjectID::sequence_number_p
private

Definition at line 139 of file ObjectID.h.

Referenced by sequence().


The documentation for this class was generated from the following file: