↑ Software ↑

GEONius.com
2-Oct-2015
 E-mail 

gimx_util - GIOP Marshaling Utilities

The 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.idl
CORBA_TypeCode.idl
Core IDL:
orb.idl
CORBA_StandardExceptions.idl
CORBA_Current.idl
CORBA_Policy.idl
CORBA_DomainManager.idl
CORBA_Pollable.idl
CORBA_InterfaceRepository.idl
CORBA_CustomMarshal.idl
CORBA_Stream.idl
Interoperability IDL:
CSI.idl
BiDirPolicy.idl
CONV_FRAME.idl
CSIIOP.idl
GIOP.idl
GSSUP.idl
IIOP.idl
IOP_DCE.idl
SendingContext.idl
CORBAservices IDL (Core):
CosCollection.idl
CosEventComm.idl
CosNaming.idl
CosObjectIdentity.idl
CosPersistencePID.idl
CosPropertyService.idl
CosQueryCollection.idl *
CosTransactions.idl
TimeBase.idl *
CORBAservices IDL (Remaining):
ConcurrencyControl.idl *
CosEventChannelAdmin.idl
CosLicensingManager.idl *
CosPersistenceDDO.idl
CosPersistenceDS_CLI.idl
CosPersistencePDS.idl
CosPersistencePDS_DA.idl
CosPersistencePO.idl
CosPersistencePOM.idl
CosQuery.idl
CosTime.idl
CosTimerEvent.idl
CosTradingDynamic.idl
CosTSPortability.idl
CosTypedEventComm.idl
CosTypedEventChannelAdmin.idl
CosContainment.idl
CosReference.idl
CosRelationships.idl *
CosGraphs.idl
CosLifeCycle.idl *
CosLifeCycleContainment.idl
CosLifeCycleReference.idl
CosCompoundLifeCycle.idl *
CosStream.idl
CosExternalization.idl
CosExternalizationContainment.idl
CosExternalizationReference.idl
DCE_CIOPSecurity.idl
Lname-library.idl
Security.idl *
SecurityLevel1.idl
SecurityLevel2.idl
NRService.idl
SecurityAdmin.idl
SecurityReplaceable.idl
SECIOP.idl *
SSLIOP.idl
Miscellaneous IDL:
Dynamic.idl
Messaging.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.)


Public Procedures

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

Source Files

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).

Alex Measday  /  E-mail