View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.websocket.common.io;
20  
21  import org.eclipse.jetty.util.Callback;
22  import org.eclipse.jetty.websocket.api.WriteCallback;
23  
24  /**
25   * Wraps the exposed {@link WriteCallback} WebSocket API with a Jetty {@link Callback}.
26   * <p>
27   * We don't expose the jetty {@link Callback} object to the webapp, as that makes things complicated for the WebAppContext's Classloader.
28   */
29  public class WriteCallbackWrapper implements Callback
30  {
31      public static Callback wrap(WriteCallback callback)
32      {
33          if (callback == null)
34          {
35              return null;
36          }
37          return new WriteCallbackWrapper(callback);
38      }
39  
40      private final WriteCallback callback;
41  
42      public WriteCallbackWrapper(WriteCallback callback)
43      {
44          this.callback = callback;
45      }
46  
47      @Override
48      public void failed(Throwable x)
49      {
50          callback.writeFailed(x);
51      }
52  
53      @Override
54      public void succeeded()
55      {
56          callback.writeSuccess();
57      }
58  }