|
|
|
gimx_util - GIOP Marshaling UtilitiesThe CORBA-Lite GIMX utilities are used to convert various General Inter-ORB Protocol (GIOP) and CORBAservices data types to and from their Common Data Representation (CDR) encodings. The GIOP types are defined in Chapter 15 of the CORBA specification; the CORBAservices types are defined in a separate collection of documents. (The primitive CDR types are handled by the COMX utilities.)
The type declarations and marshaling functions are automatically generated from the following IDL files:
- "Any" type and IOR definitions (needed for interfaces):
IOP.idlCORBA_TypeCode.idl
- Core IDL:
orb.idlCORBA_StandardExceptions.idlCORBA_Current.idlCORBA_Policy.idlCORBA_DomainManager.idlCORBA_Pollable.idlCORBA_InterfaceRepository.idlCORBA_CustomMarshal.idlCORBA_Stream.idl
- Interoperability IDL:
CSI.idlBiDirPolicy.idlCONV_FRAME.idlCSIIOP.idlGIOP.idlGSSUP.idlIIOP.idlIOP_DCE.idlSendingContext.idl
- CORBAservices IDL (Core):
CosCollection.idlCosEventComm.idlCosNaming.idlCosObjectIdentity.idlCosPersistencePID.idlCosPropertyService.idlCosQueryCollection.idl*CosTransactions.idlTimeBase.idl*
- CORBAservices IDL (Remaining):
ConcurrencyControl.idl*CosEventChannelAdmin.idlCosLicensingManager.idl*CosPersistenceDDO.idlCosPersistenceDS_CLI.idlCosPersistencePDS.idlCosPersistencePDS_DA.idlCosPersistencePO.idlCosPersistencePOM.idlCosQuery.idlCosTime.idlCosTimerEvent.idlCosTradingDynamic.idlCosTSPortability.idlCosTypedEventComm.idlCosTypedEventChannelAdmin.idlCosContainment.idlCosReference.idlCosRelationships.idl*CosGraphs.idlCosLifeCycle.idl*CosLifeCycleContainment.idlCosLifeCycleReference.idlCosCompoundLifeCycle.idl*CosStream.idlCosExternalization.idlCosExternalizationContainment.idlCosExternalizationReference.idlDCE_CIOPSecurity.idlLname-library.idlSecurity.idl*SecurityLevel1.idlSecurityLevel2.idlNRService.idlSecurityAdmin.idlSecurityReplaceable.idlSECIOP.idl*SSLIOP.idl
- Miscellaneous IDL:
Dynamic.idlMessaging.idl
*Required slight modifications, mostly to (i) comment out "#ifdef" sections for NOLONGLONG and (ii) comment out "#else" sections for NO_ESCAPED_IDENTIFIERS. (Update: These modifications may no longer be necessary, since my header-file generator now pipes the IDL files through the C Preprocessor before scanning the IDL.)
Custom marshaling functions were written for the following data types
(see gimx_util.c):
Any
AnySeq
ObjectKey (an octet sequence)
TaggedProfile (encapsulated in an octet sequence)
Timeval (a UNIX timeval structure)
TimevalSeq
Marshaling functions for the following GIOP/CORBAservices
structures were automatically generated from the OMG IDL
(see gimx_idl.c):
AbstractInterfaceDefSeq
Action
AnySequence
AS_ContextSec
AttrDescriptionSeq
AttributeDescription
AttributeList
AttributeType
AttributeTypeList
AuditEventType
AuditEventTypeList
AuthorityDescriptor
AuthorityDescriptorList
AuthorizationElement
AuthorizationToken
BiDirIIOPServiceContext
Binding
BindingList
CancelRequestHeader
Challenge
ChallengeData
CodeSetComponent
CodeSetComponentInfo
CodeSetContext
CompleteEstablishContext
ComponentDescription
ComponentId
CompoundSecMech
CompoundSecMechanisms
CompoundSecMechList
ConstantDescription
ContainedSeq
ContextError
ContextIdSeq
ContinueEstablishContext
CredentialsList
Criteria
CryptographicProfileList
CSI_ECMA_Hybrid
CSI_ECMA_Public
CSI_ECMA_Secret
DCESecurityMechanismInfo
Decimal
Description
DescriptionSeq
DiscardContext
DomainManagersList
DynamicProp
Edge
Edges
Encoding
EndPoint
EndpointIdPositionComponent
EndPoints
EnumMemberSeq
ErrorToken
EstablishContext
EventPortDescription
EventPortDescriptionSeq
EvidenceDescriptor
EvidenceDescriptorList
ExcDescriptionSeq
ExceptionDefSeq
ExceptionDescription
ExceptionList
ExtAbstractInterfaceDefSeq
ExtAttrDescriptionSeq
ExtAttributeDescription
ExtensibleFamily
ExtFullInterfaceDescription
ExtFullValueDescription
ExtInitializer
ExtInitializerSeq
ExtInterfaceDefSeq
ExtLocalInterfaceDefSeq
ExtValueDefSeq
Factories
FieldValue
FragmentHeader
FullInterfaceDescription
FullValueDescription
GenericMechanismInfo
GSS_NT_ExportedNameList
HomeDescription
IdentityToken
InitialContextToken
Initializer
InitializerSeq
InterfaceDefs
InterfaceDefSeq
InterfaceDescription
IntervalT
IOR
IORAddressingInfo
KerberosV5
ListenPoint
ListenPointList
LocalInterfaceDefSeq
LocateReplyHeader
LocateReplyHeader_1_0
LocateRequestHeader
LocateRequestHeader_1_0
MechandOptions
MechandOptionsList
MechanismDescriptor
MechanismDescriptorList
MechanismTypeList
MessageHeader
MessageHeader_1_0
MessageInContext
ModuleDescription
MultipleComponentProfile
Name
NameComponent
NamedRole
NamedRoles
NamedRoleType
NamedRoleTypes
NameValuePair
NodeHandle
NodeHandles
NRPolicyFeatures
NRPolicyFeaturesList
NVPair
Object
OIDList
OpDescriptionSeq
OperationDescription
OptionsDirectionPair
OptionsDirectionPairList
otid_t
Parameter
ParameterDescription
ParameterList
ParDescriptionSeq
PolicyList
PolicyTypeSeq
PolicyValue
PolicyValueSeq
PriorityRange
ProfileBody
PropagationContext
Properties
Property
PropertyDef
PropertyDefs
PropertyException
PropertyExceptions
PropertyMode
PropertyModes
PropertyNames
PropertyTypes
ProvidesDescription
ProvidesDescriptionSeq
QLTypes
Record
RelationshipHandle
RelationshipHandles
ReplyHeader
ReplyHeader_1_0
RepositoryIdSeq
RequestFeatures
RequestHeader
RequestHeader_1_0
RequestHeader_1_1
Right
RightsList
RoleNames
Roles
RoutingTypeRange
SASContextBody
SAS_ContextSec
ScopedEdge
ScopedEdges
ScopedEndPoint
ScopedEndPoints
ScopedRelationship
SecAttribute
SECIOP_SEC_TRANS
SecurityFeatureValue
SecurityFeatureValueList
SecurityMechandName
SecurityMechandNameList
SelectorValue
SelectorValueList
SequencingHeader
ServiceConfiguration
ServiceConfigurationList
ServiceContext
ServiceContextList
SPKM_1
SPKM_2
SSL
StructMember
StructMemberSeq
SystemExceptionReplyBody
TaggedComponent
TargetAddress
TargetAssociationOptions
TimerEventT
TLS_SEC_TRANS
TransIdentity
TransportAddress
TransportAddressList
TypeDescription
UnionMember
UnionMemberSeq
URLSeq
UsesDescription
UsesDescriptionSeq
UtcT
Value
ValueDefSeq
ValueDescription
ValueDescSeq
ValueMember
ValueMemberSeq
WeightedEdge
WeightedEdges
The following two files provide the public interface to the GIMX utilities:
gimx_util.c
gimx_util.h
The actual type declarations, lookup tables, and marshaling function implementations are automatically generated from the OMG IDL files (CORBA 3.0 IDL and CORBAservices IDL) and are found in these two files:
gimx_idl.h -
generated from the IDL files using a Python script,
idl2h.py,
and the preprocessing definitions in
comx_post.py
and gimx_pre.py.
gimx_idl.c -
generated from gimx_idl.h using
idlh2c.py
and the postprocessing definitions automatically generated by
idl2h.py.
And here are the two Makefiles:
Makefile -
generates the header file (i.e., gimx_idl.h).
Makefile -
generates the C file (i.e., gimx_idl.c).