aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java')
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
new file mode 100644
index 00000000000..975d88f5c34
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/CompletionHandlers.java
@@ -0,0 +1,57 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.server.jetty;
+
+import com.yahoo.jdisc.handler.CompletionHandler;
+
+import java.util.Arrays;
+
+/**
+ * @author Simon Thoresen Hult
+ */
+public class CompletionHandlers {
+
+ public static void tryComplete(CompletionHandler handler) {
+ if (handler == null) {
+ return;
+ }
+ try {
+ handler.completed();
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ public static void tryFail(CompletionHandler handler, Throwable t) {
+ if (handler == null) {
+ return;
+ }
+ try {
+ handler.failed(t);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ public static CompletionHandler wrap(CompletionHandler... handlers) {
+ return wrap(Arrays.asList(handlers));
+ }
+
+ public static CompletionHandler wrap(final Iterable<CompletionHandler> handlers) {
+ return new CompletionHandler() {
+
+ @Override
+ public void completed() {
+ for (CompletionHandler handler : handlers) {
+ tryComplete(handler);
+ }
+ }
+
+ @Override
+ public void failed(Throwable t) {
+ for (CompletionHandler handler : handlers) {
+ tryFail(handler, t);
+ }
+ }
+ };
+ }
+}