aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2017-02-24 16:30:15 +0000
committerGravatar Yue Gan <yueg@google.com>2017-02-27 15:05:00 +0000
commit777b30d06700f76ba580715429f3663de3fa0529 (patch)
treed3abdc6f42d04256c486270add24e5b0c5d3abbd /src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
parent25aa033ad5657a5cfa16e8307464648b9374be2d (diff)
Provide more reporting options to SkyFunctions
With more specific information to be reported by Skyfunctions, e.g., to inform the build-event protocol on missing files, the EventHandler interface is no longer enough. Therefore, provide an enriched context for reporting events. -- Change-Id: I2d06166fe4d5b9054e24ad8c752fafc039e3f9f8 Reviewed-on: https://cr.bazel.build/8794 PiperOrigin-RevId: 148463437 MOS_MIGRATED_REVID=148463437
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
index 9edea8d9eb..e68c5d2a6c 100644
--- a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
@@ -14,16 +14,14 @@
package com.google.devtools.build.lib.events;
import com.google.common.collect.ImmutableList;
-
import java.util.ArrayList;
import java.util.List;
-/**
- * Stores error and warning events, and later replays them. Thread-safe.
- */
-public class StoredEventHandler implements EventHandler {
+/** Stores error and warning events, and later replays them. Thread-safe. */
+public class StoredEventHandler implements ExtendedEventHandler {
private final List<Event> events = new ArrayList<>();
+ private final List<ExtendedEventHandler.Postable> posts = new ArrayList<>();
private boolean hasErrors;
public synchronized ImmutableList<Event> getEvents() {
@@ -32,7 +30,7 @@ public class StoredEventHandler implements EventHandler {
/** Returns true if there are no stored events. */
public synchronized boolean isEmpty() {
- return events.isEmpty();
+ return events.isEmpty() && posts.isEmpty();
}
@@ -42,11 +40,17 @@ public class StoredEventHandler implements EventHandler {
events.add(e);
}
- /**
- * Replay all events stored in this object on the given eventHandler, in the same order.
- */
- public synchronized void replayOn(EventHandler eventHandler) {
+ @Override
+ public synchronized void post(ExtendedEventHandler.Postable e) {
+ posts.add(e);
+ }
+
+ /** Replay all events stored in this object on the given eventHandler, in the same order. */
+ public synchronized void replayOn(ExtendedEventHandler eventHandler) {
Event.replayEventsOn(eventHandler, events);
+ for (ExtendedEventHandler.Postable obj : posts) {
+ eventHandler.post(obj);
+ }
}
/**
@@ -58,6 +62,7 @@ public class StoredEventHandler implements EventHandler {
public synchronized void clear() {
events.clear();
+ posts.clear();
hasErrors = false;
}
}