Package io.bytestreams.codec.core
Class ChoiceCodec<V>
java.lang.Object
io.bytestreams.codec.core.ChoiceCodec<V>
- Type Parameters:
V- the base type of the discriminated union
- All Implemented Interfaces:
Codec<V>,Inspectable<V>
A codec for discriminated unions where a class tag determines which codec to use for the value.
The wire format is [tag][value], where the tag selects among registered alternatives.
This codec only sees Codec<Class<? extends V>> — callers typically create it by using
xmap(Converter) to map a tag codec to class values:
BiMap<Integer, Class<? extends Shape>> tags = BiMap.of(
Map.entry(1, Circle.class),
Map.entry(2, Rectangle.class));
Codec<Shape> codec = Codecs.<Shape>choice(Codecs.uint8().xmap(tags))
.on(Circle.class, circleCodec)
.on(Rectangle.class, rectangleCodec)
.build();
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptiondecode(InputStream input) Decodes a value from the input stream.encode(V value, OutputStream output) Encodes the given value and writes it to the output stream.Returns a structured representation of the given value.
-
Method Details
-
encode
Description copied from interface:CodecEncodes the given value and writes it to the output stream.- Specified by:
encodein interfaceCodec<V>- Parameters:
value- the value to encodeoutput- the output stream to write the encoded bytes to- Returns:
- the encode result containing logical count and bytes written
- Throws:
IOException- if an I/O error occurs during encoding
-
decode
Description copied from interface:CodecDecodes a value from the input stream.- Specified by:
decodein interfaceCodec<V>- Parameters:
input- the input stream to read the encoded bytes from- Returns:
- the decoded value
- Throws:
IOException- if an I/O error occurs during decoding
-
inspect
Description copied from interface:InspectableReturns a structured representation of the given value.- Specified by:
inspectin interfaceInspectable<V>- Parameters:
value- the decoded value to inspect- Returns:
- a structured representation (Map, List, or scalar)
-