diff options
author | 2018-02-11 09:23:55 -0800 | |
---|---|---|
committer | 2018-02-11 09:25:41 -0800 | |
commit | e45c0555cfb15ce403ff2f447edb74495a633ec1 (patch) | |
tree | 28c7a697306b91d00a49602b991aea9476c65892 /src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java | |
parent | e3bbfdb839a483f1a418a94d857c25794006fbe0 (diff) |
Add context argument to ObjectCodec.{serialize,deserialize}
Context implementations are currently empty, just doing the plumbing in this
change. Once this is in we can start passing along the ObjectCodecRegistry, which
will allow runtime codec resolution for classes not known at compile time.
We'll also inevitably add some memoization helpers, allowing us to optimize the
serialization process further.
PiperOrigin-RevId: 185305674
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java index b1944f05a6..4a89121dd5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java @@ -22,7 +22,9 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedMap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy; +import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationContext; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.common.options.InvocationPolicyEnforcer; @@ -337,22 +339,23 @@ public final class BuildOptions implements Cloneable, Serializable { } @Override - public void serialize(BuildOptions buildOptions, CodedOutputStream codedOut) + public void serialize( + SerializationContext context, BuildOptions buildOptions, CodedOutputStream codedOut) throws IOException, SerializationException { Collection<FragmentOptions> fragmentOptions = buildOptions.getOptions(); codedOut.writeInt32NoTag(fragmentOptions.size()); for (FragmentOptions options : buildOptions.getOptions()) { - FragmentOptions.CODEC.serialize(options, codedOut); + FragmentOptions.CODEC.serialize(context, options, codedOut); } } @Override - public BuildOptions deserialize(CodedInputStream codedIn) + public BuildOptions deserialize(DeserializationContext context, CodedInputStream codedIn) throws IOException, SerializationException { BuildOptions.Builder builder = BuildOptions.builder(); int length = codedIn.readInt32(); for (int i = 0; i < length; ++i) { - builder.add(FragmentOptions.CODEC.deserialize(codedIn)); + builder.add(FragmentOptions.CODEC.deserialize(context, codedIn)); } return builder.build(); } |