aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
diff options
context:
space:
mode:
authorGravatar michajlo <michajlo@google.com>2018-02-11 09:23:55 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-11 09:25:41 -0800
commite45c0555cfb15ce403ff2f447edb74495a633ec1 (patch)
tree28c7a697306b91d00a49602b991aea9476c65892 /src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
parente3bbfdb839a483f1a418a94d857c25794006fbe0 (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/BuildConfiguration.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 562a208698..abeec41caa 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -53,8 +53,10 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodec;
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.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs;
@@ -2189,30 +2191,35 @@ public class BuildConfiguration implements BuildConfigurationInterface {
@Override
public void serialize(
- FileSystemProvider fsProvider, BuildConfiguration obj, CodedOutputStream codedOut)
+ FileSystemProvider fsProvider,
+ SerializationContext context,
+ BuildConfiguration obj,
+ CodedOutputStream codedOut)
throws SerializationException, IOException {
- BlazeDirectories.CODEC.serialize(fsProvider, obj.directories, codedOut);
+ BlazeDirectories.CODEC.serialize(fsProvider, context, obj.directories, codedOut);
codedOut.writeInt32NoTag(obj.fragments.size());
for (Fragment fragment : obj.fragments.values()) {
- Fragment.CODEC.serialize(fsProvider, fragment, codedOut);
+ Fragment.CODEC.serialize(fsProvider, context, fragment, codedOut);
}
- BuildOptions.CODEC.serialize(obj.buildOptions, codedOut);
- StringCodecs.asciiOptimized().serialize(obj.repositoryName, codedOut);
+ BuildOptions.CODEC.serialize(context, obj.buildOptions, codedOut);
+ StringCodecs.asciiOptimized().serialize(context, obj.repositoryName, codedOut);
}
@Override
- public BuildConfiguration deserialize(FileSystemProvider fsProvider, CodedInputStream codedIn)
+ public BuildConfiguration deserialize(
+ FileSystemProvider fsProvider, DeserializationContext context, CodedInputStream codedIn)
throws SerializationException, IOException {
- BlazeDirectories blazeDirectories = BlazeDirectories.CODEC.deserialize(fsProvider, codedIn);
+ BlazeDirectories blazeDirectories =
+ BlazeDirectories.CODEC.deserialize(fsProvider, context, codedIn);
int length = codedIn.readInt32();
ImmutableSortedMap.Builder<Class<? extends Fragment>, Fragment> builder =
new ImmutableSortedMap.Builder<>(lexicalFragmentSorter);
for (int i = 0; i < length; ++i) {
- Fragment fragment = Fragment.CODEC.deserialize(fsProvider, codedIn);
+ Fragment fragment = Fragment.CODEC.deserialize(fsProvider, context, codedIn);
builder.put(fragment.getClass(), fragment);
}
- BuildOptions options = BuildOptions.CODEC.deserialize(codedIn);
- String repositoryName = StringCodecs.asciiOptimized().deserialize(codedIn);
+ BuildOptions options = BuildOptions.CODEC.deserialize(context, codedIn);
+ String repositoryName = StringCodecs.asciiOptimized().deserialize(context, codedIn);
return new BuildConfiguration(blazeDirectories, builder.build(), options, repositoryName);
}
}