@Override public BigDecimal decode(InputStream inStream, Context context) throws IOException, CoderException { int scale = VAR_INT_CODER.decode(inStream); BigInteger bigInteger = BIG_INT_CODER.decode(inStream, context); return new BigDecimal(bigInteger, scale); }
@Override public ShardedKey<KeyT> decode(InputStream inStream) throws IOException { return ShardedKey.of(keyCoder.decode(inStream), shardNumberCoder.decode(inStream)); }
@Override public KV<Integer, WindowedValue<?>> decode(InputStream in) throws IOException { Integer id = VarIntCoder.of().decode(in); Coder<WindowedValue<?>> coder = idsToCoders.get(id); WindowedValue<?> value = coder.decode(in); return KV.of(id, value); }
@Override public KV<Integer, WindowedValue<?>> decode(InputStream in) throws IOException { Integer id = VarIntCoder.of().decode(in); Coder<WindowedValue<?>> coder = idsToCoders.get(id); WindowedValue<?> value = coder.decode(in); return KV.of(id, value); }
@Override public KV<Integer, WindowedValue<?>> decode(InputStream in) throws IOException { Integer id = VarIntCoder.of().decode(in); Coder<WindowedValue<?>> coder = idsToCoders.get(id); WindowedValue<?> value = coder.decode(in); return KV.<Integer, WindowedValue<?>>of(id, value); }
@Override public MyInteger decode(InputStream inStream) throws CoderException, IOException { return new MyInteger(delegate.decode(inStream)); } }
@Override public KafkaRecord<K, V> decode(InputStream inStream) throws IOException { return new KafkaRecord<>( stringCoder.decode(inStream), intCoder.decode(inStream), longCoder.decode(inStream), longCoder.decode(inStream), KafkaTimestampType.forOrdinal(intCoder.decode(inStream)), (Headers) toHeaders(headerCoder.decode(inStream)), kvCoder.decode(inStream)); }
@Override public KafkaRecord<K, V> decode(InputStream inStream) throws IOException { return new KafkaRecord<>( stringCoder.decode(inStream), intCoder.decode(inStream), longCoder.decode(inStream), longCoder.decode(inStream), KafkaTimestampType.forOrdinal(intCoder.decode(inStream)), (Headers) toHeaders(headerCoder.decode(inStream)), kvCoder.decode(inStream)); }
@Override public void restoreKeyGroupState(int keyGroupIndex, DataInputStream in) throws Exception { checkInitCache(); Integer size = VarIntCoder.of().decode(in, Context.NESTED); for (int i = 0; i < size; i++) { byte[] idBytes = ByteArrayCoder.of().decode(in, Context.NESTED); // restore the ids which not expired. shouldOutput(keyGroupIndex, ByteBuffer.wrap(idBytes)); } }
@Override public FileIO.ReadableFile decode(InputStream is) throws IOException { MatchResult.Metadata metadata = MetadataCoder.of().decode(is); Compression compression = Compression.values()[VarIntCoder.of().decode(is)]; return new FileIO.ReadableFile(metadata, compression); } }
@Override public IsmShard decode(InputStream inStream) throws CoderException, IOException { return IsmShard.of( VarIntCoder.of().decode(inStream), VarLongCoder.of().decode(inStream), VarLongCoder.of().decode(inStream)); }
@Override public Metadata decode(InputStream is) throws IOException { ResourceId resourceId = RESOURCE_ID_CODER.decode(is); boolean isReadSeekEfficient = INT_CODER.decode(is) == 1; long sizeBytes = LONG_CODER.decode(is); return Metadata.builder() .setResourceId(resourceId) .setIsReadSeekEfficient(isReadSeekEfficient) .setSizeBytes(sizeBytes) .build(); }
@Override public CustomWindow decode(InputStream inStream) throws IOException { IntervalWindow superWindow = INTERVAL_WINDOW_CODER.decode(inStream); boolean isBig = VAR_INT_CODER.decode(inStream) != 0; return new CustomWindow(superWindow.start(), superWindow.end(), isBig); }
@Override public TestType decode(InputStream inStream, Context context) throws IOException { VarIntCoder.of().decode(inStream); TestType result = jaxbCoder.decode(inStream); VarLongCoder.of().decode(inStream, context); return result; }
@Override public GrowthState<OutputT, KeyT, TerminationStateT> decode(InputStream is) throws IOException { Map<HashCode, Instant> completed = completedCoder.decode(is); int numPending = VarIntCoder.of().decode(is); ImmutableMap.Builder<HashCode, TimestampedValue<OutputT>> pending = ImmutableMap.builder(); for (int i = 0; i < numPending; ++i) { HashCode hash = HASH_CODE_CODER.decode(is); TimestampedValue<OutputT> output = timestampedOutputCoder.decode(is); pending.put(hash, output); } boolean isOutputComplete = BOOLEAN_CODER.decode(is); TerminationStateT terminationState = terminationStateCoder.decode(is); Instant pollWatermark = INSTANT_CODER.decode(is); return new GrowthState<>( ImmutableMap.copyOf(completed), pending.build(), isOutputComplete, terminationState, pollWatermark); }