Previous | Table of Contents | Next |
To correlate incoming requests with previous outgoing requests, DCOM requires a causality ID. The identifier is essentially
a logical thread ID used to determine whether an incoming request is from an existing logical thread or is a different logical
thread of execution. CORBA, on the other hand, does not strictly require a logical thread ID. To maintain the logical thread
ID as requests pass through both DCOM and CORBA, we define a general purpose service context, which can be used to maintain
logical thread identifiers for any system a thread of execution passes through.
module CosBridging
{struct OneThreadID{
ObjectSystemID objSysID;
OpaqueData threadID;
};
typedef sequence<OneThreadID> ThreadIDs;
struct LogicalThreadID // Service context{ThreadIDs IDs;};};
The logical thread ID information is propagated through a CORBA call chain using a service context (IDs to be assigned by
the OMG) containing the LogicalThreadID structure.
For future use, a DCOM extent is defined to allow the same logical thread identification information to be passed through
a DCOM call chain. If the OMG chooses to standardize a logical thread ID format for CORBA, this can be passed through a DCOM
call chain using this extent.
struct OneThreadID
{ObjectSystemID objSysID;OpaqueData threadID;
};
struct ThreadIDs
{unsigned long len;unsigned long maxlen;OneThreadID [size_is(len)] *data;
};
struct LogicalThreadID // DCOM extent{ThreadIDs IDs;};
This extent, used for passing logical thread IDs, is identified by the following UUID:
f81f4e20-2234-11d1-8a22-006097cc044d