aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
diff options
context:
space:
mode:
authorGravatar Eduardo Colaco <eduardocolaco@google.com>2016-11-03 15:33:47 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2016-11-03 16:12:39 +0000
commit8d8abe46bd7ab0c87beb31d97c9185760d762d79 (patch)
tree197a26794eddd4b59878b199c1914bc751f5a776 /src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
parent38e54ac14e69113e9790ce9a526784e0f18e4b6e (diff)
Writes a machine readable representation of BuildEvents to a file (varint delimited).
Adds --experimental_build_event_binary_file option that enables varint delimited proto loggging to the specified file path Adds varint delimited BuildEventStreamTransport and BuildEventStreamerModule Adds BuildEventStreamerModule for configuring and setting up BuildEventStreamer and its associated BuildEventTransports. Adds BuildEventTransportFactory which creates a Set of transports from command options. Moves BuildEventStreamer configuration from BlazeCommandDispatcher and BuildEventStreamerModule -- Change-Id: If71f2b58654879c2509206da47e6d1a846bf397f Reviewed-on: https://bazel-review.googlesource.com/#/c/7010/ MOS_MIGRATED_REVID=138073726
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
new file mode 100644
index 0000000000..f456b189d6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java
@@ -0,0 +1,74 @@
+// Copyright 2016 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.buildeventstream.transports;
+
+import static com.google.common.base.Strings.isNullOrEmpty;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSet.Builder;
+import com.google.devtools.build.lib.buildeventstream.BuildEventTransport;
+import java.io.IOException;
+
+/** Factory used to create a Set of BuildEventTransports from BuildEventStreamOptions. */
+public enum BuildEventTransportFactory {
+ TEXT_TRANSPORT {
+ @Override
+ protected boolean enabled(BuildEventStreamOptions options) {
+ return !isNullOrEmpty(options.getBuildEventTextFile());
+ }
+
+ @Override
+ protected BuildEventTransport create(BuildEventStreamOptions options) throws IOException {
+ return new TextFormatFileTransport(options.getBuildEventTextFile());
+ }
+ },
+
+ BINARY_TRANSPORT {
+ @Override
+ protected boolean enabled(BuildEventStreamOptions options) {
+ return !isNullOrEmpty(options.getBuildEventBinaryFile());
+ }
+
+ @Override
+ protected BuildEventTransport create(BuildEventStreamOptions options) throws IOException {
+ return new BinaryFormatFileTransport(options.getBuildEventBinaryFile());
+ }
+ };
+
+ /**
+ * Creates a {@link ImmutableSet} of {@link BuildEventTransport} based on the specified {@link
+ * BuildEventStreamOptions}.
+ *
+ * @param options Options used configure and create the returned BuildEventTransports.
+ * @return A {@link ImmutableSet} of BuildEventTransports. This set may be empty.
+ * @throws IOException Exception propagated from a {@link BuildEventTransport} creation failure.
+ */
+ public static ImmutableSet<BuildEventTransport> createFromOptions(BuildEventStreamOptions options)
+ throws IOException {
+ Builder<BuildEventTransport> buildEventTransportsBuilder = ImmutableSet.builder();
+ for (BuildEventTransportFactory transportFactory : BuildEventTransportFactory.values()) {
+ if (transportFactory.enabled(options)) {
+ buildEventTransportsBuilder.add(transportFactory.create(options));
+ }
+ }
+ return buildEventTransportsBuilder.build();
+ }
+
+ /** Returns true if this factory BuildEventTransport is enabled by the specified options. */
+ protected abstract boolean enabled(BuildEventStreamOptions options);
+
+ /** Creates a BuildEventTransport from the specified options. */
+ protected abstract BuildEventTransport create(BuildEventStreamOptions options) throws IOException;
+}