aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/cmdline
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/cmdline
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/cmdline')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java8
3 files changed, 24 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java
index cda83dbf82..4153d5ecc2 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.lib.cmdline;
+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.skyframe.serialization.strings.StringCodecs;
import com.google.protobuf.CodedInputStream;
@@ -35,16 +37,17 @@ public class LabelCodec implements ObjectCodec<Label> {
}
@Override
- public void serialize(Label label, CodedOutputStream codedOut)
+ public void serialize(SerializationContext context, Label label, CodedOutputStream codedOut)
throws IOException, SerializationException {
- packageIdCodec.serialize(label.getPackageIdentifier(), codedOut);
- stringCodec.serialize(label.getName(), codedOut);
+ packageIdCodec.serialize(context, label.getPackageIdentifier(), codedOut);
+ stringCodec.serialize(context, label.getName(), codedOut);
}
@Override
- public Label deserialize(CodedInputStream codedIn) throws SerializationException, IOException {
- PackageIdentifier packageId = packageIdCodec.deserialize(codedIn);
- String name = stringCodec.deserialize(codedIn);
+ public Label deserialize(DeserializationContext context, CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ PackageIdentifier packageId = packageIdCodec.deserialize(context, codedIn);
+ String name = stringCodec.deserialize(context, codedIn);
return Label.createUnvalidated(packageId, name);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
index dc94ea8574..1dcb78f06f 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.lib.cmdline;
+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.vfs.PathFragment;
import com.google.protobuf.CodedInputStream;
@@ -32,17 +34,18 @@ public class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> {
}
@Override
- public void serialize(PackageIdentifier pkgId, CodedOutputStream codedOut)
+ public void serialize(
+ SerializationContext context, PackageIdentifier pkgId, CodedOutputStream codedOut)
throws IOException, SerializationException {
- repoNameCodec.serialize(pkgId.getRepository(), codedOut);
- PathFragment.CODEC.serialize(pkgId.getPackageFragment(), codedOut);
+ repoNameCodec.serialize(context, pkgId.getRepository(), codedOut);
+ PathFragment.CODEC.serialize(context, pkgId.getPackageFragment(), codedOut);
}
@Override
- public PackageIdentifier deserialize(CodedInputStream codedIn)
+ public PackageIdentifier deserialize(DeserializationContext context, CodedInputStream codedIn)
throws IOException, SerializationException {
- RepositoryName repoName = repoNameCodec.deserialize(codedIn);
- PathFragment pathFragment = PathFragment.CODEC.deserialize(codedIn);
+ RepositoryName repoName = repoNameCodec.deserialize(context, codedIn);
+ PathFragment pathFragment = PathFragment.CODEC.deserialize(context, codedIn);
return PackageIdentifier.create(repoName, pathFragment);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java
index 67a6c55eab..4949b2fd48 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java
@@ -14,7 +14,9 @@
package com.google.devtools.build.lib.cmdline;
+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.protobuf.ByteString;
import com.google.protobuf.CodedInputStream;
@@ -30,7 +32,9 @@ public class RepositoryNameCodec implements ObjectCodec<RepositoryName> {
}
@Override
- public void serialize(RepositoryName repoName, CodedOutputStream codedOut) throws IOException {
+ public void serialize(
+ SerializationContext context, RepositoryName repoName, CodedOutputStream codedOut)
+ throws IOException {
boolean isMain = repoName.isMain();
// Main is by far the most common. Use boolean to short-circuit string encoding on
// serialization and byte[]/ByteString creation on deserialization.
@@ -41,7 +45,7 @@ public class RepositoryNameCodec implements ObjectCodec<RepositoryName> {
}
@Override
- public RepositoryName deserialize(CodedInputStream codedIn)
+ public RepositoryName deserialize(DeserializationContext context, CodedInputStream codedIn)
throws SerializationException, IOException {
boolean isMain = codedIn.readBool();
if (isMain) {