Package org.apache.kerby.xdr.type
Class XdrUnion
- All Implemented Interfaces:
XdrType
A discriminated union is a type composed of a discriminant followed
by a type selected from a set of prearranged types according to the
value of the discriminant. The type of discriminant is either "int",
"unsigned int", or an enumerated type, such as "bool". The component
types are called "arms" of the union and are preceded by the value of
the discriminant that implies their encoding. Discriminated unions
are declared as follows:
union switch (discriminant-declaration) {
case discriminant-value-A:
arm-declaration-A;
case discriminant-value-B:
arm-declaration-B;
...
default: default-declaration;
} identifier;
Each "case" keyword is followed by a legal value of the discriminant.
The default arm is optional. If it is not specified, then a valid
encoding of the union cannot take on unspecified discriminant values.
The size of the implied arm is always a multiple of four bytes.
The discriminated union is encoded as its discriminant followed by
the encoding of the implied arm.
0 1 2 3
+---+---+---+---+---+---+---+---+
| discriminant | implied arm |
+---+---+---+---+---+---+---+---+
|----4 bytes----|
-
Constructor Summary
ConstructorsConstructorDescriptionXdrUnion(XdrDataType xdrDataType) XdrUnion(XdrDataType xdrDataType, XdrFieldInfo[] fieldInfos) -
Method Summary
Modifier and TypeMethodDescriptionvoiddecode(ByteBuffer content) Decode the content bytes into this type.protected voidencodeBody(ByteBuffer buffer) protected intprotected abstract XdrUnionfieldsToValues(AbstractXdrType[] fields) protected abstract AbstractXdrType[]protected abstract voidgetUnionInstance(XdrType[] fields, XdrFieldInfo[] fieldInfos) Methods inherited from class org.apache.kerby.xdr.type.AbstractXdrType
decode, encode, encode, encodingLength, getDataType, getValue, setValue
-
Constructor Details
-
XdrUnion
-
XdrUnion
-
-
Method Details
-
getUnionInstance
-
getXdrFieldInfos
-
encodingBodyLength
- Specified by:
encodingBodyLengthin classAbstractXdrType<XdrUnion>- Throws:
IOException
-
encodeBody
- Specified by:
encodeBodyin classAbstractXdrType<XdrUnion>- Throws:
IOException
-
decode
Description copied from interface:XdrTypeDecode the content bytes into this type.- Specified by:
decodein interfaceXdrType- Overrides:
decodein classAbstractXdrType<XdrUnion>- Parameters:
content- The content bytes- Throws:
IOException- e
-
fieldsToValues
-
getAllFields
-