diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java index 50d81b43e7..5efea4b5cd 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java @@ -17,6 +17,9 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.protobuf.ByteString; +import com.google.protobuf.CodedInputStream; +import com.google.protobuf.CodedOutputStream; +import java.io.IOException; /** Common utilities for serialization. */ public class SerializationCommonUtils { @@ -38,4 +41,19 @@ public class SerializationCommonUtils { return RepositoryName.create(repoNameBytes.toStringUtf8()); } } + + public static <T> void serializeNullable(T obj, CodedOutputStream out, ObjectCodec<T> codec) + throws IOException, SerializationException { + if (obj == null) { + out.writeBoolNoTag(false); + } else { + out.writeBoolNoTag(true); + codec.serialize(obj, out); + } + } + + public static <T> T deserializeNullable(CodedInputStream in, ObjectCodec<T> codec) + throws IOException, SerializationException { + return in.readBool() ? codec.deserialize(in) : null; + } } |