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 provide a callback to 39 * be notified when the message has been transmitted, or may use the returned Future object to track progress of the transmission. Errors in transmission 40 * are given to the developer in the WriteResult object in either case. 41 * 42 * @param data 43 * the data being sent 44 * @param completion 45 * handler that will be notified of progress 46 * @return the Future object representing the send operation. 47 */ 48 Future<Void> sendBytesByFuture(ByteBuffer data); 49 50 /** 51 * 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 52 * sent with isLast set to false. The final piece must be sent with isLast set to true. 53 * 54 * @param fragment 55 * the piece of the message being sent 56 */ 57 void sendPartialBytes(ByteBuffer fragment, boolean isLast) throws IOException; 58 59 /** 60 * 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 61 * with isLast set to false. The final piece must be sent with isLast set to true. 62 * 63 * @param fragment 64 * the piece of the message being sent 65 */ 66 void sendPartialString(String fragment, boolean isLast) throws IOException; 67 68 /** 69 * Send a Ping message containing the given application data to the remote endpoint. The corresponding Pong message may be picked up using the 70 * MessageHandler.Pong handler. 71 * 72 * @param applicationData 73 * the data to be carried in the ping request 74 */ 75 void sendPing(ByteBuffer applicationData) throws IOException; 76 77 /** 78 * Allows the developer to send an unsolicited Pong message containing the given application data in order to serve as a unidirectional heartbeat for the 79 * session. 80 * 81 * @param applicationData 82 * the application data to be carried in the pong response. 83 */ 84 void sendPong(ByteBuffer applicationData) throws IOException; 85 86 /** 87 * Send a text message, blocking until all bytes of the message has been transmitted. 88 * <p> 89 * Note: this is a blocking call 90 * 91 * @param text 92 * the message to be sent 93 */ 94 void sendString(String text) throws IOException; 95 96 /** 97 * Initiates the asynchronous transmission of a text message. This method returns before the message is transmitted. Developers may provide a callback to be 98 * notified when the message has been transmitted, or may use the returned Future object to track progress of the transmission. Errors in transmission are 99 * given to the developer in the WriteResult object in either case. 100 * 101 * @param text 102 * the text being sent 103 * @param completion 104 * the handler which will be notified of progress 105 * @return the Future object representing the send operation. 106 */ 107 Future<Void> sendStringByFuture(String text); 108 }