aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
index c2353b8dda..166119f6a4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
@@ -22,7 +22,12 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
+import java.io.IOException;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -31,6 +36,8 @@ import javax.annotation.Nullable;
* action of an artifact.
*/
public class ConfiguredTargetKey extends ActionLookupKey {
+ public static final ObjectCodec<ConfiguredTargetKey> CODEC = Codec.INSTANCE;
+
private final Label label;
@Nullable private final BuildConfigurationValue.Key configurationKey;
@@ -192,4 +199,37 @@ public class ConfiguredTargetKey extends ActionLookupKey {
this.isHost = isHost;
}
}
+
+ private static final class Codec implements ObjectCodec<ConfiguredTargetKey> {
+ private static final Codec INSTANCE = new Codec();
+
+ private Codec() {}
+
+ @Override
+ public Class<ConfiguredTargetKey> getEncodedClass() {
+ return ConfiguredTargetKey.class;
+ }
+
+ @Override
+ public void serialize(ConfiguredTargetKey obj, CodedOutputStream codedOut)
+ throws SerializationException, IOException {
+ Label.CODEC.serialize(obj.label, codedOut);
+ if (obj.configurationKey == null) {
+ codedOut.writeBoolNoTag(false);
+ } else {
+ codedOut.writeBoolNoTag(true);
+ BuildConfigurationValue.Key.CODEC.serialize(obj.configurationKey, codedOut);
+ }
+ codedOut.writeBoolNoTag(obj.isHostConfiguration());
+ }
+
+ @Override
+ public ConfiguredTargetKey deserialize(CodedInputStream codedIn)
+ throws SerializationException, IOException {
+ return of(
+ Label.CODEC.deserialize(codedIn),
+ codedIn.readBool() ? BuildConfigurationValue.Key.CODEC.deserialize(codedIn) : null,
+ codedIn.readBool());
+ }
+ }
}