Bionic Buffalo Tech Note #52: Object Keys, Object Identifiers, and Adapter Names
explained below.
OIDs themselves cannot be used as object keys, since they do not uniquely identify objects. (Different
applications or servants might use the same OIDs for different objects.) However, an OID must be
unique for a given POA. Therefore, the combination of POA with OID makes a unique identifier
within an ORB. An ORB might create an arbitrary key, and define some mapping from key to <POA,
OID>, but most ORBs (including Bionic Buffalo's ORBs) reasonably take the more efficient approach
of including the POA and OID in the key itself. Moreover, since a POA is uniquely identifiable by its
path from the ORB's root POA, the POA pathname is usually used as the POA identifier.
(There is another problem with using a mapping from key to <POA, OID>. Object references may be
persistent, and such persistent references must survive the ORB itself. Any mapping tables used would
have to be communicated somehow among ORBs.)
The specification allows servants to create arbitrary OIDs, and applications may name POAs
arbitrarily. However, there is no specified mapping between <POA, OID> and object key. What
follows explains how the Tatanka
TM
ORBs implement the mapping.
An object key consists of a series of named values. Each named value is of the form
<tag>=<value>
The named values are separated using the
“:”
(colon) character. Two standard tags are
poa
and
oid
,
whose values are the object's POA pathname and object identifier, respectively. For example, a
complete key might be
poa=ns/fs:oid=/home/ralph/somefile.txt
which specifies the ns/fs POA, and OID /home/ralph/somefile.txt.
The POA value determined as explained above: all but the unreserved characters in each POA name
are escaped, and the
“/”
(solidus or slash) separator is inserted between names in the POA path.
The OID value is computed from the internal value (given by the servant) by escaping all characters
except the following:
the alphabetic characters:
A..Z
and
a..z
the digits:
0..9
the mark characters:
- _ . ! ~ * ' ( )
other unescaped characters:
; / ,
(This is the same set as allowed for POA names, with the addition of the semicolon, solidus, and
comma.)
The following table summarizes the tags recognized by all Tatanka
TM
ORBs.
Page 3 of 5