All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kurento.client.WebRtcEndpoint Maven / Gradle / Ivy

Go to download

Kurento Client The Kurento Client project allows server applications to control media server resources.

There is a newer version: 7.1.0
Show newest version
/**
 * This file is generated with Kurento-maven-plugin.
 * Please don't edit.
 */
package org.kurento.client;


/**
 *
 * Control interface for Kurento WebRTC endpoint.
 * 

* This endpoint is one side of a peer-to-peer WebRTC communication, being the * other peer a WebRTC capable browser -using the RTCPeerConnection API-, a * native WebRTC app or even another Kurento Media Server. *

*

* In order to establish a WebRTC communication, peers engage in an SDP * negotiation process, where one of the peers (the offerer) sends an offer, * while the other peer (the offeree) responds with an answer. This endpoint can * function in both situations *

*
    *
  • * As offerer: The negotiation process is initiated by the media server *
      *
    • * KMS generates the SDP offer through the * generateOffer method. This offer must then be sent * to the remote peer (the offeree) through the signaling channel, for * processing. *
    • *
    • * The remote peer processes the offer, and generates an * answer. The answer is sent back to the media server. *
    • *
    • * Upon receiving the answer, the endpoint must invoke the * processAnswer method. *
    • *
    *
  • *
  • * As offeree: The negotiation process is initiated by the remote peer *
      *
    • * The remote peer, acting as offerer, generates an SDP offer and * sends it to the WebRTC endpoint in Kurento. *
    • *
    • * The endpoint will process the offer invoking the * processOffer method. The result of this method will be a * string, containing an SDP answer. *
    • *
    • * The SDP answer must be sent back to the offerer, so it can be * processed. *
    • *
    *
  • *
*

* SDPs are sent without ICE candidates, following the Trickle ICE optimization. * Once the SDP negotiation is completed, both peers proceed with the ICE * discovery process, intended to set up a bidirectional media connection. During * this process, each peer *

*
    *
  • * Discovers ICE candidates for itself, containing pairs of IPs and ports. *
  • *
  • * ICE candidates are sent via the signaling channel as they are discovered, to * the remote peer for probing. *
  • *
  • * ICE connectivity checks are run as soon as the new candidate description, * from the remote peer, is available. *
  • *
*

* Once a suitable pair of candidates (one for each peer) is discovered, the * media session can start. The harvesting process in Kurento, begins with the * invocation of the gatherCandidates method. Since the whole * Trickle ICE purpose is to speed-up connectivity, candidates are generated * asynchronously. Therefore, in order to capture the candidates, the user must * subscribe to the event IceCandidateFound. It is important that * the event listener is bound before invoking gatherCandidates, * otherwise a suitable candidate might be lost, and connection might not be * established. *

*

* It's important to keep in mind that WebRTC connection is an asynchronous * process, when designing interactions between different MediaElements. For * example, it would be pointless to start recording before media is flowing. In * order to be notified of state changes, the application can subscribe to events * generated by the WebRtcEndpoint. Following is a full list of events generated * by WebRtcEndpoint: *

*
    *
  • * IceComponentStateChange: This event informs only about changes * in the ICE connection state. Possible values are: *
      *
    • DISCONNECTED: No activity scheduled
    • *
    • GATHERING: Gathering local candidates
    • *
    • CONNECTING: Establishing connectivity
    • *
    • CONNECTED: At least one working candidate pair
    • *
    • * READY: ICE concluded, candidate pair selection is now final *
    • *
    • * FAILED: Connectivity checks have been completed, but media * connection was not established *
    • *
    * The transitions between states are covered in RFC5245. It could be said that * it's network-only, as it only takes into account the state of the network * connection, ignoring other higher level stuff, like DTLS handshake, RTCP * flow, etc. This implies that, while the component state is * CONNECTED, there might be no media flowing between the peers. * This makes this event useful only to receive low-level information about the * connection between peers. Even more, while other events might leave a * graceful period of time before firing, this event fires immediately after * the state change is detected. *
  • *
  • * IceCandidateFound: Raised when a new candidate is discovered. * ICE candidates must be sent to the remote peer of the connection. Failing to * do so for some or all of the candidates might render the connection * unusable. *
  • *
  • * IceGatheringDone: Raised when the ICE harvesting process is * completed. This means that all candidates have already been discovered. *
  • *
  • * NewCandidatePairSelected: Raised when a new ICE candidate pair * gets selected. The pair contains both local and remote candidates being used * for a component. This event can be raised during a media session, if a new * pair of candidates with higher priority in the link are found. *
  • *
  • DataChannelOpen: Raised when a data channel is open.
  • *
  • DataChannelClose: Raised when a data channel is closed.
  • *
*

* Registering to any of above events requires the application to provide a * callback function. Each event provides different information, so it is * recommended to consult the signature of the event listeners. *

*

* Flow control and congestion management is one of the most important features * of WebRTC. WebRTC connections start with the lowest bandwidth configured and * slowly ramps up to the maximum available bandwidth, or to the higher limit of * the exploration range in case no bandwidth limitation is detected. Notice that * WebRtcEndpoints in Kurento are designed in a way that multiple WebRTC * connections fed by the same stream share quality. When a new connection is * added, as it requires to start with low bandwidth, it will cause the rest of * connections to experience a transient period of degraded quality, until it * stabilizes its bitrate. This doesn't apply when transcoding is involved. * Transcoders will adjust their output bitrate based in bandwidth requirements, * but it won't affect the original stream. If an incoming WebRTC stream needs to * be transcoded, for whatever reason, all WebRtcEndpoints fed from transcoder * output will share a separate quality than the ones connected directly to the * original stream. *

*

* The default bandwidth range of the endpoint is * [100 kbps, 500 kbps], but it can be changed separately for * input/output directions and for audio/video streams. *

*

* * Check the extended documentation of these parameters in * {@link module:core/abstracts.SdpEndpoint SdpEndpoint}, {@link module:core/abstracts.BaseRtpEndpoint BaseRtpEndpoint}, and * {@link module:core/complexTypes.RembParams RembParams}. * *

*
    *
  • * Input bandwidth: Configuration value used to inform remote peers about the * bitrate that can be pushed into this endpoint. *
      *
    • * {get,set}MinVideoRecvBandwidth: Minimum bitrate * requested on the received video stream. *
    • *
    • * {get,set}Max{Audio,Video}RecvBandwidth: Maximum bitrate * expected for the received stream. *
    • *
    *
  • *
  • * Output bandwidth: Configuration values used to control bitrate of the output * video stream sent to remote peers. It is important to keep in mind that * pushed bitrate depends on network and remote peer capabilities. Remote peers * can also announce bandwidth limitation in their SDPs (through the * b={modifier}:{value} tag). Kurento will always enforce bitrate * limitations specified by the remote peer over internal configurations. *
      *
    • * {get,set}MinVideoSendBandwidth: Minimum video bitrate * sent to remote peer. *
    • *
    • * {get,set}MaxVideoSendBandwidth: Maximum video bitrate * sent to remote peer. *
    • *
    • * RembParams.rembOnConnect: Initial local REMB bandwidth * estimation that gets propagated when a new endpoint is connected. *
    • *
    *
  • *
*

* * All bandwidth control parameters must be changed before the SDP negotiation * takes place, and can't be changed afterwards. * *

*

* DataChannels allow other media elements that make use of the DataPad, to send * arbitrary data. For instance, if there is a filter that publishes event * information, it'll be sent to the remote peer through the channel. There is no * API available for programmers to make use of this feature in the * WebRtcElement. DataChannels can be configured to provide the following: *

*
    *
  • * Reliable or partially reliable delivery of sent messages *
  • *
  • * In-order or out-of-order delivery of sent messages *
  • *
*

* Unreliable, out-of-order delivery is equivalent to raw UDP semantics. The * message may make it, or it may not, and order is not important. However, the * channel can be configured to be partially reliable by specifying the * maximum number of retransmissions or setting a time limit for retransmissions: * the WebRTC stack will handle the acknowledgments and timeouts. *

*

* The possibility to create DataChannels in a WebRtcEndpoint must be explicitly * enabled when creating the endpoint, as this feature is disabled by default. If * this is the case, they can be created invoking the createDataChannel method. * The arguments for this method, all of them optional, provide the necessary * configuration: *

*
    *
  • * label: assigns a label to the DataChannel. This can help * identify each possible channel separately. *
  • *
  • * ordered: specifies if the DataChannel guarantees order, which * is the default mode. If maxPacketLifetime and maxRetransmits have not been * set, this enables reliable mode. *
  • *
  • * maxPacketLifeTime: The time window in milliseconds, during * which transmissions and retransmissions may take place in unreliable mode. * This forces unreliable mode, even if ordered has been * activated. *
  • *
  • * maxRetransmits: maximum number of retransmissions that are * attempted in unreliable mode. This forces unreliable mode, even if * ordered has been activated. *
  • *
  • * Protocol: Name of the subprotocol used for data communication. *
  • *
* * **/ @org.kurento.client.internal.RemoteClass public interface WebRtcEndpoint extends BaseRtpEndpoint { /** * * Get External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ String getExternalAddress(); /** * * Get External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ void getExternalAddress(Continuation cont); /** * * Get External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ TFuture getExternalAddress(Transaction tx); /** * * Set External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ void setExternalAddress(@org.kurento.client.internal.server.Param("externalAddress") String externalAddress); /** * * Set External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ void setExternalAddress(@org.kurento.client.internal.server.Param("externalAddress") String externalAddress, Continuation cont); /** * * Set External (public) IP address of the media server. *

* If you know what will be the external or public IP address of the media server * (e.g. because your deployment has an static IP), you can specify it here. * Doing so has the advantage of not needing to configure STUN/TURN for the media * server. *

*

* STUN/TURN are needed only when the media server sits behind a NAT and needs to * find out its own external IP address. However, if you set a static external IP * address with this parameter, then there is no need for the STUN/TURN * auto-discovery. *

*

* The effect of this parameter is that ALL local ICE candidates that are * gathered (for WebRTC) will contain the provided external IP address instead of * the local one. *

*

* externalAddress is an IPv4 or IPv6 address. *

*

Examples:

*
    *
  • externalAddress=10.70.35.2
  • *
  • externalAddress=2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • *
* * **/ void setExternalAddress(@org.kurento.client.internal.server.Param("externalAddress") String externalAddress, Transaction tx); /** * * Get Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ String getNetworkInterfaces(); /** * * Get Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ void getNetworkInterfaces(Continuation cont); /** * * Get Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ TFuture getNetworkInterfaces(Transaction tx); /** * * Set Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ void setNetworkInterfaces(@org.kurento.client.internal.server.Param("networkInterfaces") String networkInterfaces); /** * * Set Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ void setNetworkInterfaces(@org.kurento.client.internal.server.Param("networkInterfaces") String networkInterfaces, Continuation cont); /** * * Set Local network interfaces used for ICE gathering. *

* If you know which network interfaces should be used to perform ICE (for WebRTC * connectivity), you can define them here. Doing so has several advantages: *

*
    *
  • * The WebRTC ICE gathering process will be much quicker. Normally, it needs to * gather local candidates for all of the network interfaces, but this step can * be made faster if you limit it to only the interface that you know will * work. *
  • *
  • * It will ensure that the media server always decides to use the correct * network interface. With WebRTC ICE gathering it's possible that, under some * circumstances (in systems with virtual network interfaces such as * docker0) the ICE process ends up choosing the wrong local IP. *
  • *
*

* networkInterfaces is a comma-separated list of network interface * names. *

*

Examples:

*
    *
  • networkInterfaces=eth0
  • *
  • networkInterfaces=eth0,enp0s25
  • *
* * **/ void setNetworkInterfaces(@org.kurento.client.internal.server.Param("networkInterfaces") String networkInterfaces, Transaction tx); /** * * Get STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ String getStunServerAddress(); /** * * Get STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ void getStunServerAddress(Continuation cont); /** * * Get STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ TFuture getStunServerAddress(Transaction tx); /** * * Set STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ void setStunServerAddress(@org.kurento.client.internal.server.Param("stunServerAddress") String stunServerAddress); /** * * Set STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ void setStunServerAddress(@org.kurento.client.internal.server.Param("stunServerAddress") String stunServerAddress, Continuation cont); /** * * Set STUN server IP address. *

The ICE process uses STUN to punch holes through NAT firewalls.

*

* stunServerAddress MUST be an IP address; domain names are NOT * supported. *

*

* You need to use a well-working STUN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx). *

* * **/ void setStunServerAddress(@org.kurento.client.internal.server.Param("stunServerAddress") String stunServerAddress, Transaction tx); /** * * Get Port of the STUN server * **/ int getStunServerPort(); /** * * Get Port of the STUN server * **/ void getStunServerPort(Continuation cont); /** * * Get Port of the STUN server * **/ TFuture getStunServerPort(Transaction tx); /** * * Set Port of the STUN server * **/ void setStunServerPort(@org.kurento.client.internal.server.Param("stunServerPort") int stunServerPort); /** * * Set Port of the STUN server * **/ void setStunServerPort(@org.kurento.client.internal.server.Param("stunServerPort") int stunServerPort, Continuation cont); /** * * Set Port of the STUN server * **/ void setStunServerPort(@org.kurento.client.internal.server.Param("stunServerPort") int stunServerPort, Transaction tx); /** * * Get TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ String getTurnUrl(); /** * * Get TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ void getTurnUrl(Continuation cont); /** * * Get TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ TFuture getTurnUrl(Transaction tx); /** * * Set TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ void setTurnUrl(@org.kurento.client.internal.server.Param("turnUrl") String turnUrl); /** * * Set TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ void setTurnUrl(@org.kurento.client.internal.server.Param("turnUrl") String turnUrl, Continuation cont); /** * * Set TURN server URL. *

* When STUN is not enough to open connections through some NAT firewalls, using * TURN is the remaining alternative. *

*

* Note that TURN is a superset of STUN, so you don't need to configure STUN if * you are using TURN. *

*

The provided URL should follow one of these formats:

*
    *
  • user:password@ipaddress:port
  • *
  • * user:password@ipaddress:port?transport=[udp|tcp|tls] *
  • *
*

* ipaddress MUST be an IP address; domain names are NOT supported.
* transport is OPTIONAL. Possible values: udp, tcp, tls. Default: udp. *

*

* You need to use a well-working TURN server. Use this to check if it works:
* https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
* From that check, you should get at least one Server-Reflexive Candidate (type * srflx) AND one Relay Candidate (type relay). *

* * **/ void setTurnUrl(@org.kurento.client.internal.server.Param("turnUrl") String turnUrl, Transaction tx); /** * * Get the ICE candidate pair (local and remote candidates) used by the ice library for each stream. * **/ java.util.List getICECandidatePairs(); /** * * Get the ICE candidate pair (local and remote candidates) used by the ice library for each stream. * **/ void getICECandidatePairs(Continuation> cont); /** * * Get the ICE candidate pair (local and remote candidates) used by the ice library for each stream. * **/ TFuture> getICECandidatePairs(Transaction tx); /** * * Get the ICE connection state for all the connections. * **/ java.util.List getIceConnectionState(); /** * * Get the ICE connection state for all the connections. * **/ void getIceConnectionState(Continuation> cont); /** * * Get the ICE connection state for all the connections. * **/ TFuture> getIceConnectionState(Transaction tx); /** * * Start the gathering of ICE candidates. *

* It must be called after SdpEndpoint::generateOffer or * SdpEndpoint::processOffer for Trickle ICE. If * invoked before generating or processing an SDP offer, the candidates gathered * will be added to the SDP processed. *

* * **/ void gatherCandidates(); /** * * Asynchronous version of gatherCandidates: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#gatherCandidates * **/ void gatherCandidates(Continuation cont); /** * * Start the gathering of ICE candidates. *

* It must be called after SdpEndpoint::generateOffer or * SdpEndpoint::processOffer for Trickle ICE. If * invoked before generating or processing an SDP offer, the candidates gathered * will be added to the SDP processed. *

* * **/ void gatherCandidates(Transaction tx); /** * * Process an ICE candidate sent by the remote peer of the connection. * * @param candidate * Remote ICE candidate * **/ void addIceCandidate(@org.kurento.client.internal.server.Param("candidate") org.kurento.client.IceCandidate candidate); /** * * Asynchronous version of addIceCandidate: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#addIceCandidate * * @param candidate * Remote ICE candidate * **/ void addIceCandidate(@org.kurento.client.internal.server.Param("candidate") org.kurento.client.IceCandidate candidate, Continuation cont); /** * * Process an ICE candidate sent by the remote peer of the connection. * * @param candidate * Remote ICE candidate * **/ void addIceCandidate(Transaction tx, @org.kurento.client.internal.server.Param("candidate") org.kurento.client.IceCandidate candidate); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param protocol * Name of the subprotocol used for data communication * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits, @org.kurento.client.internal.server.Param("protocol") String protocol); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param protocol * Name of the subprotocol used for data communication * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits, @org.kurento.client.internal.server.Param("protocol") String protocol, Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param protocol * Name of the subprotocol used for data communication * **/ void createDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits, @org.kurento.client.internal.server.Param("protocol") String protocol); /** * * Closes an open data channel * * @param channelId * The channel identifier * **/ void closeDataChannel(@org.kurento.client.internal.server.Param("channelId") int channelId); /** * * Asynchronous version of closeDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#closeDataChannel * * @param channelId * The channel identifier * **/ void closeDataChannel(@org.kurento.client.internal.server.Param("channelId") int channelId, Continuation cont); /** * * Closes an open data channel * * @param channelId * The channel identifier * **/ void closeDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("channelId") int channelId); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * **/ void createDataChannel(); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * **/ void createDataChannel(Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * **/ void createDataChannel(Transaction tx); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * * @param label * Channel's label * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * **/ void createDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("label") String label); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * **/ void createDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits); /** * * Asynchronous version of createDataChannel: * {@link Continuation#onSuccess} is called when the action is * done. If an error occurs, {@link Continuation#onError} is called. * @see WebRtcEndpoint#createDataChannel * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(@org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits, Continuation cont); /** * * Create a new data channel, if data channels are supported. *

* Being supported means that the WebRtcEndpoint has been created with data * channel support, the client also supports data channels, and they have been * negotiated in the SDP exchange. Otherwise, the method throws an exception, * indicating that the operation is not possible. *

*

* Data channels can work in either unreliable mode (analogous to User Datagram * Protocol or UDP) or reliable mode (analogous to Transmission Control Protocol * or TCP). The two modes have a simple distinction: *

*
    *
  • * Reliable mode guarantees the transmission of messages and also the order in * which they are delivered. This takes extra overhead, thus potentially making * this mode slower. *
  • *
  • * Unreliable mode does not guarantee every message will get to the other side * nor what order they get there. This removes the overhead, allowing this mode * to work much faster. *
  • *
*

If data channels are not supported, this method throws an exception.

* * * @param label * Channel's label * @param ordered * If the data channel should guarantee order or not. If true, and maxPacketLifeTime and maxRetransmits have not been provided, reliable mode is activated. * @param maxPacketLifeTime * The time window (in milliseconds) during which transmissions and retransmissions may take place in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * @param maxRetransmits * maximum number of retransmissions that are attempted in unreliable mode. * Note that this forces unreliable mode, even if ordered has been activated. * * **/ void createDataChannel(Transaction tx, @org.kurento.client.internal.server.Param("label") String label, @org.kurento.client.internal.server.Param("ordered") boolean ordered, @org.kurento.client.internal.server.Param("maxPacketLifeTime") int maxPacketLifeTime, @org.kurento.client.internal.server.Param("maxRetransmits") int maxRetransmits); /** * Add a {@link EventListener} for event {@link OnIceCandidateEvent}. Synchronous call. * * @param listener Listener to be called on OnIceCandidateEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(OnIceCandidateEvent.class) ListenerSubscription addOnIceCandidateListener(EventListener listener); /** * Add a {@link EventListener} for event {@link OnIceCandidateEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on OnIceCandidateEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(OnIceCandidateEvent.class) void addOnIceCandidateListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link OnIceCandidateEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceCandidateEvent.class) void removeOnIceCandidateListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link OnIceCandidateEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceCandidateEvent.class) void removeOnIceCandidateListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link IceCandidateFoundEvent}. Synchronous call. * * @param listener Listener to be called on IceCandidateFoundEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(IceCandidateFoundEvent.class) ListenerSubscription addIceCandidateFoundListener(EventListener listener); /** * Add a {@link EventListener} for event {@link IceCandidateFoundEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on IceCandidateFoundEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(IceCandidateFoundEvent.class) void addIceCandidateFoundListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link IceCandidateFoundEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(IceCandidateFoundEvent.class) void removeIceCandidateFoundListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link IceCandidateFoundEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(IceCandidateFoundEvent.class) void removeIceCandidateFoundListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link OnIceGatheringDoneEvent}. Synchronous call. * * @param listener Listener to be called on OnIceGatheringDoneEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(OnIceGatheringDoneEvent.class) ListenerSubscription addOnIceGatheringDoneListener(EventListener listener); /** * Add a {@link EventListener} for event {@link OnIceGatheringDoneEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on OnIceGatheringDoneEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(OnIceGatheringDoneEvent.class) void addOnIceGatheringDoneListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link OnIceGatheringDoneEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceGatheringDoneEvent.class) void removeOnIceGatheringDoneListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link OnIceGatheringDoneEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceGatheringDoneEvent.class) void removeOnIceGatheringDoneListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link IceGatheringDoneEvent}. Synchronous call. * * @param listener Listener to be called on IceGatheringDoneEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(IceGatheringDoneEvent.class) ListenerSubscription addIceGatheringDoneListener(EventListener listener); /** * Add a {@link EventListener} for event {@link IceGatheringDoneEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on IceGatheringDoneEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(IceGatheringDoneEvent.class) void addIceGatheringDoneListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link IceGatheringDoneEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(IceGatheringDoneEvent.class) void removeIceGatheringDoneListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link IceGatheringDoneEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(IceGatheringDoneEvent.class) void removeIceGatheringDoneListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link OnIceComponentStateChangedEvent}. Synchronous call. * * @param listener Listener to be called on OnIceComponentStateChangedEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(OnIceComponentStateChangedEvent.class) ListenerSubscription addOnIceComponentStateChangedListener(EventListener listener); /** * Add a {@link EventListener} for event {@link OnIceComponentStateChangedEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on OnIceComponentStateChangedEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(OnIceComponentStateChangedEvent.class) void addOnIceComponentStateChangedListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link OnIceComponentStateChangedEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceComponentStateChangedEvent.class) void removeOnIceComponentStateChangedListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link OnIceComponentStateChangedEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(OnIceComponentStateChangedEvent.class) void removeOnIceComponentStateChangedListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link IceComponentStateChangeEvent}. Synchronous call. * * @param listener Listener to be called on IceComponentStateChangeEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(IceComponentStateChangeEvent.class) ListenerSubscription addIceComponentStateChangeListener(EventListener listener); /** * Add a {@link EventListener} for event {@link IceComponentStateChangeEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on IceComponentStateChangeEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(IceComponentStateChangeEvent.class) void addIceComponentStateChangeListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link IceComponentStateChangeEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(IceComponentStateChangeEvent.class) void removeIceComponentStateChangeListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link IceComponentStateChangeEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(IceComponentStateChangeEvent.class) void removeIceComponentStateChangeListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link OnDataChannelOpenedEvent}. Synchronous call. * * @param listener Listener to be called on OnDataChannelOpenedEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelOpenedEvent.class) ListenerSubscription addOnDataChannelOpenedListener(EventListener listener); /** * Add a {@link EventListener} for event {@link OnDataChannelOpenedEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on OnDataChannelOpenedEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelOpenedEvent.class) void addOnDataChannelOpenedListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link OnDataChannelOpenedEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelOpenedEvent.class) void removeOnDataChannelOpenedListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link OnDataChannelOpenedEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelOpenedEvent.class) void removeOnDataChannelOpenedListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link DataChannelOpenEvent}. Synchronous call. * * @param listener Listener to be called on DataChannelOpenEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelOpenEvent.class) ListenerSubscription addDataChannelOpenListener(EventListener listener); /** * Add a {@link EventListener} for event {@link DataChannelOpenEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on DataChannelOpenEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelOpenEvent.class) void addDataChannelOpenListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link DataChannelOpenEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelOpenEvent.class) void removeDataChannelOpenListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link DataChannelOpenEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelOpenEvent.class) void removeDataChannelOpenListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link OnDataChannelClosedEvent}. Synchronous call. * * @param listener Listener to be called on OnDataChannelClosedEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelClosedEvent.class) ListenerSubscription addOnDataChannelClosedListener(EventListener listener); /** * Add a {@link EventListener} for event {@link OnDataChannelClosedEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on OnDataChannelClosedEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelClosedEvent.class) void addOnDataChannelClosedListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link OnDataChannelClosedEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelClosedEvent.class) void removeOnDataChannelClosedListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link OnDataChannelClosedEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(OnDataChannelClosedEvent.class) void removeOnDataChannelClosedListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link DataChannelCloseEvent}. Synchronous call. * * @param listener Listener to be called on DataChannelCloseEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelCloseEvent.class) ListenerSubscription addDataChannelCloseListener(EventListener listener); /** * Add a {@link EventListener} for event {@link DataChannelCloseEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on DataChannelCloseEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelCloseEvent.class) void addDataChannelCloseListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link DataChannelCloseEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelCloseEvent.class) void removeDataChannelCloseListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link DataChannelCloseEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(DataChannelCloseEvent.class) void removeDataChannelCloseListener(ListenerSubscription listenerSubscription, Continuation cont); /** * Add a {@link EventListener} for event {@link NewCandidatePairSelectedEvent}. Synchronous call. * * @param listener Listener to be called on NewCandidatePairSelectedEvent * @return ListenerSubscription for the given Listener * **/ @org.kurento.client.internal.server.EventSubscription(NewCandidatePairSelectedEvent.class) ListenerSubscription addNewCandidatePairSelectedListener(EventListener listener); /** * Add a {@link EventListener} for event {@link NewCandidatePairSelectedEvent}. Asynchronous call. * Calls Continuation<ListenerSubscription> when it has been added. * * @param listener Listener to be called on NewCandidatePairSelectedEvent * @param cont Continuation to be called when the listener is registered * **/ @org.kurento.client.internal.server.EventSubscription(NewCandidatePairSelectedEvent.class) void addNewCandidatePairSelectedListener(EventListener listener, Continuation cont); /** * Remove a {@link ListenerSubscription} for event {@link NewCandidatePairSelectedEvent}. Synchronous call. * * @param listenerSubscription Listener subscription to be removed * **/ @org.kurento.client.internal.server.EventSubscription(NewCandidatePairSelectedEvent.class) void removeNewCandidatePairSelectedListener(ListenerSubscription listenerSubscription); /** * Remove a {@link ListenerSubscription} for event {@link NewCandidatePairSelectedEvent}. Asynchronous call. * Calls Continuation<Void> when it has been removed. * * @param listenerSubscription Listener subscription to be removed * @param cont Continuation to be called when the listener is removed * **/ @org.kurento.client.internal.server.EventSubscription(NewCandidatePairSelectedEvent.class) void removeNewCandidatePairSelectedListener(ListenerSubscription listenerSubscription, Continuation cont); public class Builder extends AbstractBuilder { /** * * Creates a Builder for WebRtcEndpoint * **/ public Builder(org.kurento.client.MediaPipeline mediaPipeline){ super(WebRtcEndpoint.class,mediaPipeline); props.add("mediaPipeline",mediaPipeline); } public Builder withProperties(Properties properties) { return (Builder)super.withProperties(properties); } public Builder with(String name, Object value) { return (Builder)super.with(name, value); } /** * * Single direction, receive-only endpoint * **/ public Builder recvonly(){ props.add("recvonly",Boolean.TRUE); return this; } /** * * Single direction, send-only endpoint * **/ public Builder sendonly(){ props.add("sendonly",Boolean.TRUE); return this; } /** * * Activate data channels support * **/ public Builder useDataChannels(){ props.add("useDataChannels",Boolean.TRUE); return this; } /** * * Sets a value for certificateKeyType in Builder for WebRtcEndpoint. * * @param certificateKeyType * Define the type of the certificate used in dtls * **/ public Builder withCertificateKeyType(org.kurento.client.CertificateKeyType certificateKeyType){ props.add("certificateKeyType",certificateKeyType); return this; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy