// Copyright 2014 The Bazel Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.devtools.build.lib.events; import java.util.Set; /** * A "latch" that just detects whether or not a particular type of event has happened, based on its * kind. * *
Be careful when using this class to track errors reported during some operation. Namely, this * pattern is not thread-safe: * *
* EventSensor sensor = new EventSensor(EventKind.ERRORS);
* reporter.addHandler(sensor);
* someActionThatMightCreateErrors(reporter)
* reporter.removeHandler(sensor);
* boolean containsErrors = sensor.wasTriggered();
*
*
* If other threads generate errors on the reporter, then containsErrors may be true even if * someActionThatMightCreateErrors() did not cause any errors. * *
As a workaround, run someActionThatMightCreateErrors() with a local reporter, merging its
* events with those of the shared reporter.
*/
public class EventSensor extends AbstractEventHandler {
private int triggerCount;
/**
* Constructs a sensor that will register all events matching the mask.
*/
public EventSensor(Set