diff options
Diffstat (limited to 'voip/java/android/net/rtp/RtpStream.java')
-rw-r--r-- | voip/java/android/net/rtp/RtpStream.java | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/voip/java/android/net/rtp/RtpStream.java b/voip/java/android/net/rtp/RtpStream.java deleted file mode 100644 index b9d75cd..0000000 --- a/voip/java/android/net/rtp/RtpStream.java +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.rtp; - -import java.net.InetAddress; -import java.net.Inet4Address; -import java.net.Inet6Address; -import java.net.SocketException; - -/** - * RtpStream represents the base class of streams which send and receive network - * packets with media payloads over Real-time Transport Protocol (RTP). - * - * <p class="note">Using this class requires - * {@link android.Manifest.permission#INTERNET} permission.</p> - */ -public class RtpStream { - /** - * This mode indicates that the stream sends and receives packets at the - * same time. This is the initial mode for new streams. - */ - public static final int MODE_NORMAL = 0; - - /** - * This mode indicates that the stream only sends packets. - */ - public static final int MODE_SEND_ONLY = 1; - - /** - * This mode indicates that the stream only receives packets. - */ - public static final int MODE_RECEIVE_ONLY = 2; - - private static final int MODE_LAST = 2; - - private final InetAddress mLocalAddress; - private final int mLocalPort; - - private InetAddress mRemoteAddress; - private int mRemotePort = -1; - private int mMode = MODE_NORMAL; - - private int mSocket = -1; - static { - System.loadLibrary("rtp_jni"); - } - - /** - * Creates a RtpStream on the given local address. Note that the local - * port is assigned automatically to conform with RFC 3550. - * - * @param address The network address of the local host to bind to. - * @throws SocketException if the address cannot be bound or a problem - * occurs during binding. - */ - RtpStream(InetAddress address) throws SocketException { - mLocalPort = create(address.getHostAddress()); - mLocalAddress = address; - } - - private native int create(String address) throws SocketException; - - /** - * Returns the network address of the local host. - */ - public InetAddress getLocalAddress() { - return mLocalAddress; - } - - /** - * Returns the network port of the local host. - */ - public int getLocalPort() { - return mLocalPort; - } - - /** - * Returns the network address of the remote host or {@code null} if the - * stream is not associated. - */ - public InetAddress getRemoteAddress() { - return mRemoteAddress; - } - - /** - * Returns the network port of the remote host or {@code -1} if the stream - * is not associated. - */ - public int getRemotePort() { - return mRemotePort; - } - - /** - * Returns {@code true} if the stream is busy. In this case most of the - * setter methods are disabled. This method is intended to be overridden - * by subclasses. - */ - public boolean isBusy() { - return false; - } - - /** - * Returns the current mode. - */ - public int getMode() { - return mMode; - } - - /** - * Changes the current mode. It must be one of {@link #MODE_NORMAL}, - * {@link #MODE_SEND_ONLY}, and {@link #MODE_RECEIVE_ONLY}. - * - * @param mode The mode to change to. - * @throws IllegalArgumentException if the mode is invalid. - * @throws IllegalStateException if the stream is busy. - * @see #isBusy() - */ - public void setMode(int mode) { - if (isBusy()) { - throw new IllegalStateException("Busy"); - } - if (mode < 0 || mode > MODE_LAST) { - throw new IllegalArgumentException("Invalid mode"); - } - mMode = mode; - } - - /** - * Associates with a remote host. This defines the destination of the - * outgoing packets. - * - * @param address The network address of the remote host. - * @param port The network port of the remote host. - * @throws IllegalArgumentException if the address is not supported or the - * port is invalid. - * @throws IllegalStateException if the stream is busy. - * @see #isBusy() - */ - public void associate(InetAddress address, int port) { - if (isBusy()) { - throw new IllegalStateException("Busy"); - } - if (!(address instanceof Inet4Address && mLocalAddress instanceof Inet4Address) && - !(address instanceof Inet6Address && mLocalAddress instanceof Inet6Address)) { - throw new IllegalArgumentException("Unsupported address"); - } - if (port < 0 || port > 65535) { - throw new IllegalArgumentException("Invalid port"); - } - mRemoteAddress = address; - mRemotePort = port; - } - - int getSocket() { - return mSocket; - } - - /** - * Releases allocated resources. The stream becomes inoperable after calling - * this method. - * - * @throws IllegalStateException if the stream is busy. - * @see #isBusy() - */ - public void release() { - synchronized (this) { - if (isBusy()) { - throw new IllegalStateException("Busy"); - } - close(); - } - } - - private native void close(); - - @Override - protected void finalize() throws Throwable { - close(); - super.finalize(); - } -} |