15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_CPP_WEBSOCKET_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_CPP_WEBSOCKET_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/ppb_websocket.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/resource.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// @file 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// This file defines the WebSocket interface providing bi-directional, 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// full-duplex, communications over a single TCP socket. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Windows headers will redefine SendMessage. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SendMessage 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef SendMessage 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CompletionCallback; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InstanceHandle; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Var; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// The <code>WebSocket</code> class providing bi-directional, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/// full-duplex, communications over a single TCP socket. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSocket : public Resource { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Constructs a WebSocket object. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] instance The instance with which this resource will be 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// associated. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit WebSocket(const InstanceHandle& instance); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Destructs a WebSocket object. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~WebSocket(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Connect() connects to the specified WebSocket server. You can call this 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// function once for an object. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] url A <code>Var</code> of string type representing a WebSocket 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// server URL. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] protocols A pointer to an array of <code>Var</code> of string 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// type specifying sub-protocols. Each <code>Var</code> represents one 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// sub-protocol. This argument can be null only if 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>protocol_count</code> is 0. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] protocol_count The number of sub-protocols in 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>protocols</code>. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] callback A <code>CompletionCallback</code> called 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// when a connection is established or an error occurs in establishing 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return An int32_t containing an error code from 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>pp_errors.h</code>. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_BADARGUMENT</code> if specified <code>url</code>, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// or <code>protocols</code> contains invalid string as defined in 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the WebSocket API specification. <code>PP_ERROR_BADARGUMENT</code> 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// corresponds to a SyntaxError in the WebSocket API specification. 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_NOACCESS</code> if the protocol specified in the 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>url</code> is not a secure protocol, but the origin of the caller 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// has a secure scheme. Also returns <code>PP_ERROR_NOACCESS</code> if the 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// port specified in the <code>url</code> is a port that the user agent is 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// configured to block access to because it is a well-known port like SMTP. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_NOACCESS</code> corresponds to a SecurityError of the 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// specification. 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_INPROGRESS</code> if this is not the first call to 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Connect(). 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t Connect(const Var& url, const Var protocols[], 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t protocol_count, const CompletionCallback& callback); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Close() closes the specified WebSocket connection by specifying 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>code</code> and <code>reason</code>. 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] code The WebSocket close code. This is ignored if it is 0. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETSTATUSCODE_NORMAL_CLOSURE</code> must be used for the 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// usual case. To indicate some specific error cases, codes in the range 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETSTATUSCODE_USER_REGISTERED_MIN</code> to 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETSTATUSCODE_USER_REGISTERED_MAX</code>, and in the range 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETSTATUSCODE_USER_PRIVATE_MIN</code> to 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETSTATUSCODE_USER_PRIVATE_MAX</code> are available. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] reason A <code>Var</code> of string type representing the 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// close reason. This is ignored if it is an undefined type. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] callback A <code>CompletionCallback</code> called when the 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection is closed or an error occurs in closing the connection. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return An int32_t containing an error code from 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>pp_errors.h</code>. 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_BADARGUMENT</code> if <code>reason</code> contains 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// an invalid character as a UTF-8 string, or is longer than 123 bytes. 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_BADARGUMENT</code> corresponds to a JavaScript 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SyntaxError in the WebSocket API specification. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_NOACCESS</code> if the code is not an integer 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// equal to 1000 or in the range 3000 to 4999. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_NOACCESS</code> corresponds to an InvalidAccessError in 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// the WebSocket API specification. Returns <code>PP_ERROR_INPROGRESS</code> 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// if a previous call to Close() is not finished. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t Close(uint16_t code, const Var& reason, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CompletionCallback& callback); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// ReceiveMessage() receives a message from the WebSocket server. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// This interface only returns a single message. That is, this interface 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// must be called at least N times to receive N messages, no matter the size 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// of each message. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[out] message The received message is copied to provided 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>message</code>. The <code>message</code> must remain valid until 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// ReceiveMessage() completes. Its received <code>Var</code> will be of 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// string or ArrayBuffer type. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] callback A <code>CompletionCallback</code> called when 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// ReceiveMessage() completes. This callback is ignored if ReceiveMessage() 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// completes synchronously and returns <code>PP_OK</code>. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return An int32_t containing an error code from 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>pp_errors.h</code>. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// If an error is detected or connection is closed, ReceiveMessage() returns 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_FAILED</code> after all buffered messages are received. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Until buffered message become empty, ReceiveMessage() continues to return 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_OK</code> as if connection is still established without errors. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t ReceiveMessage(Var* message, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CompletionCallback& callback); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// SendMessage() sends a message to the WebSocket server. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @param[in] message A message to send. The message is copied to an internal 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// buffer, so the caller can free <code>message</code> safely after returning 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// from the function. This <code>Var</code> must be of string or 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// ArrayBuffer types. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return An int32_t containing an error code from 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>pp_errors.h</code>. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_FAILED</code> if the ReadyState is 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_WEBSOCKETREADYSTATE_CONNECTING</code>. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_ERROR_FAILED</code> corresponds to a JavaScript 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// InvalidStateError in the WebSocket API specification. 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Returns <code>PP_ERROR_BADARGUMENT</code> if the provided 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>message</code> contains an invalid character as a 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// UTF-8 string. <code>PP_ERROR_BADARGUMENT</code> corresponds to a 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// JavaScript SyntaxError in the WebSocket API specification. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Otherwise, returns <code>PP_OK</code>, but it doesn't necessarily mean 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// that the server received the message. 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t SendMessage(const Var& message); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetBufferedAmount() returns the number of bytes of text and binary 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// messages that have been queued for the WebSocket connection to send, but 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// have not been transmitted to the network yet. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns the number of bytes. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t GetBufferedAmount(); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetCloseCode() returns the connection close code for the WebSocket 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns 0 if called before the close code is set. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint16_t GetCloseCode(); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetCloseReason() returns the connection close reason for the WebSocket 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns a <code>Var</code> of string type. If called before the 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// close reason is set, the return value contains an empty string. Returns a 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// <code>PP_VARTYPE_UNDEFINED</code> if called on an invalid resource. 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Var GetCloseReason(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetCloseWasClean() returns if the connection was closed cleanly for the 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// specified WebSocket connection. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns <code>false</code> if called before the connection is 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// closed, called on an invalid resource, or closed for abnormal reasons. 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Otherwise, returns <code>true</code> if the connection was closed 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// cleanly. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetCloseWasClean(); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetExtensions() returns the extensions selected by the server for the 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// specified WebSocket connection. 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns a <code>Var</code> of string type. If called before the 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection is established, the <code>Var</code>'s data is an empty 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// string. Returns a <code>PP_VARTYPE_UNDEFINED</code> if called on an 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// invalid resource. Currently the <code>Var</code>'s data for valid 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// resources are always an empty string. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Var GetExtensions(); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetProtocol() returns the sub-protocol chosen by the server for the 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// specified WebSocket connection. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns a <code>Var</code> of string type. If called before the 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection is established, the <code>Var</code> contains the empty 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// string. Returns a code>PP_VARTYPE_UNDEFINED</code> if called on an 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// invalid resource. 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Var GetProtocol(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetReadyState() returns the ready state of the specified WebSocket 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns <code>PP_WEBSOCKETREADYSTATE_INVALID</code> if called 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// before Connect() is called, or if this function is called on an 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// invalid resource. 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_WebSocketReadyState GetReadyState(); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// GetURL() returns the URL associated with specified WebSocket connection. 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// @return Returns a <code>Var</code> of string type. If called before the 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// connection is established, the <code>Var</code> contains the empty 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// string. Returns a <code>PP_VARTYPE_UNDEFINED</code> if this function 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// is called on an invalid resource. 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Var GetURL(); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace pp 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // PPAPI_CPP_WEBSOCKET_H_ 219