1 //
2 // ========================================================================
3 // Copyright (c) 1995-2013 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.api;
20
21 import java.io.IOException;
22 import java.nio.ByteBuffer;
23 import java.util.concurrent.Future;
24
25 public interface RemoteEndpoint
26 {
27 /**
28 * Send a binary message, returning when all bytes of the message has been transmitted.
29 * <p>
30 * Note: this is a blocking call
31 *
32 * @param data
33 * the message to be sent
34 */
35 void sendBytes(ByteBuffer data) throws IOException;
36
37 /**
38 * Initiates the asynchronous transmission of a binary message. This method returns before the message is transmitted. Developers may use the returned
39 * Future object to track progress of the transmission.
40 *
41 * @param data
42 * the data being sent
43 * @return the Future object representing the send operation.
44 */
45 Future<Void> sendBytesByFuture(ByteBuffer data);
46
47 /**
48 * Initiates the asynchronous transmission of a binary message. This method returns before the message is transmitted. Developers may provide a callback to
49 * be notified when the message has been transmitted or resulted in an error.
50 *
51 * @param data
52 * the data being sent
53 * @param callback
54 * callback to notify of success or failure of the write operation
55 */
56 void sendBytes(ByteBuffer data, WriteCallback callback);
57
58 /**
59 * Send a binary message in pieces, blocking until all of the message has been transmitted. The runtime reads the message in order. Non-final pieces are
60 * sent with isLast set to false. The final piece must be sent with isLast set to true.
61 *
62 * @param fragment
63 * the piece of the message being sent
64 */
65 void sendPartialBytes(ByteBuffer fragment, boolean isLast) throws IOException;
66
67 /**
68 * Send a text message in pieces, blocking until all of the message has been transmitted. The runtime reads the message in order. Non-final pieces are sent
69 * with isLast set to false. The final piece must be sent with isLast set to true.
70 *
71 * @param fragment
72 * the piece of the message being sent
73 */
74 void sendPartialString(String fragment, boolean isLast) throws IOException;
75
76 /**
77 * Send a Ping message containing the given application data to the remote endpoint. The corresponding Pong message may be picked up using the
78 * MessageHandler.Pong handler.
79 *
80 * @param applicationData
81 * the data to be carried in the ping request
82 */
83 void sendPing(ByteBuffer applicationData) throws IOException;
84
85 /**
86 * Allows the developer to send an unsolicited Pong message containing the given application data in order to serve as a unidirectional heartbeat for the
87 * session.
88 *
89 * @param applicationData
90 * the application data to be carried in the pong response.
91 */
92 void sendPong(ByteBuffer applicationData) throws IOException;
93
94 /**
95 * Send a text message, blocking until all bytes of the message has been transmitted.
96 * <p>
97 * Note: this is a blocking call
98 *
99 * @param text
100 * the message to be sent
101 */
102 void sendString(String text) throws IOException;
103
104 /**
105 * Initiates the asynchronous transmission of a text message. This method may return before the message is transmitted. Developers may use the returned
106 * Future object to track progress of the transmission.
107 *
108 * @param text
109 * the text being sent
110 * @return the Future object representing the send operation.
111 */
112 Future<Void> sendStringByFuture(String text);
113
114 /**
115 * Initiates the asynchronous transmission of a text message. This method may return before the message is transmitted. Developers may provide a callback to
116 * be notified when the message has been transmitted or resulted in an error.
117 *
118 * @param text
119 * the text being sent
120 * @param callback
121 * callback to notify of success or failure of the write operation
122 */
123 void sendString(String text, WriteCallback callback);
124 }