Class RTSP

java.lang.Object
javaforce.voip.RTSP
All Implemented Interfaces:
TransportInterface
Direct Known Subclasses:
RTSPClient, RTSPServer

public abstract class RTSP extends Object implements TransportInterface
Base class for RTSP communications (Real Time Streaming Protocol). Opens the TCP port and passes any received packets thru the RTSPInterface. Direct Known subclasses : RTSPClient RFC : http://tools.ietf.org/html/rfc2326.html - RTSP
  • Field Details

    • transport

      protected Transport transport
    • localhost

      protected String localhost
    • localport

      protected int localport
    • useragent

      protected static String useragent
    • log

      public int log
    • debug

      public static boolean debug
  • Constructor Details

    • RTSP

      public RTSP()
  • Method Details

    • init

      protected boolean init(String localhost, int localport, RTSPInterface iface, boolean server, TransportType type) throws Exception
      Opens the transport and sets the RTSPInterface callback.
      Throws:
      Exception
    • uninit

      protected void uninit()
      Closes the UDP port and frees resources.
    • setLog

      public void setLog(int id)
    • send

      protected boolean send(InetAddress remote, int remoteport, String datastr)
      Sends a packet out on the UDP port.
    • join

      public static String join(String[] x)
      Joins a To: or From: field after it was split into parts.
    • getFlag2

      public static String getFlag2(String[] fields, String flg)
      Returns a flag in a To: From: field.
    • setFlag2

      public static String[] setFlag2(String[] fields, String flg, String value)
      Sets/adds a flag in a To: From: field.
    • getbranch

      public String getbranch()
      Returns a random SIP branch id. TODO : Implement RFC 3261 section 8.1.1.7 (z9hG4bK)
    • getbranch

      protected String getbranch(String[] msg)
      Returns branch in first Via line
    • ishold

      protected boolean ishold(String[] msg)
      Determines if a SIP message is on hold.
    • getvialist

      protected String[] getvialist(String[] msg)
      Returns the Via: list in a SIP message as an array.
    • getroutelist

      protected String[] getroutelist(String[] msg)
      Returns the Record-Route: list in a SIP message as an array.
    • getrinstance

      protected String getrinstance()
      Returns a random generated rinstance id.
    • gettupleid

      protected String gettupleid()
      Returns a random generated tuple id.
    • geturi

      protected String geturi(String[] msg)
      Returns the URI part of a SIP message.
    • generatetag

      public static String generatetag()
      Returns a random generated tag for the To: or From: parts of a SIP message. This function is used by replacetag() so it must resemble a To: or From: field.
    • removetag

      public static String[] removetag(String[] fields)
      Removes the 'tag' field from 'fields'.
    • gettag

      public static String gettag(String[] fields)
      Returns the 'tag' field from 'fields'.
    • getcallid

      public String getcallid()
      Returns a random callid for a SIP message (a unique id for each call, not to be confused with caller id).
    • getNow

      protected long getNow()
      Returns current time in seconds.
    • getnonce

      protected String getnonce()
      Returns a random nonce variable used in SIP authorization.
    • getSDP

      public SDP getSDP(String[] msg)
      Parses the SDP content.
      Parameters:
      msg - = SDP text
    • hasCodec

      public static boolean hasCodec(Codec[] codecs, Codec codec)
      Determines if codecs[] contains codec. NOTE:This checks the name field, not the id which could by dynamic.
    • addCodec

      public static Codec[] addCodec(Codec[] codecs, Codec codec)
      Adds a codec to a list of codecs.
    • delCodec

      public static Codec[] delCodec(Codec[] codecs, Codec codec)
      Removes a codec from a list of codecs.
    • getCodec

      public static Codec getCodec(Codec[] codecs, Codec codec)
      Returns a codec from a list of codecs. Comparison is done by name only. The returned codec 'id' may be different than provided codec.
    • getRequest

      protected String getRequest(String[] msg)
      Returns the requested operation of a SIP message. (INVITE, BYE, etc.)
    • getURI

      protected String getURI(String[] msg)
      Returns URI in SIP msg. (INVITE "uri" SIP/2.0)
    • getResponseType

      protected int getResponseType(String[] msg)
      Returns the response number from a SIP reply message. (100, 200, 401, etc.)
    • getcseq

      protected int getcseq(String[] msg)
      Returns the cseq of a SIP message.
    • getcseqcmd

      protected String getcseqcmd(String[] msg)
      Returns the command at the end of the cseq header in a SIP message.
    • getResponse

      protected String getResponse(String user, String pass, String realm, String cmd, String uri, String nonce, String qop, String nc, String cnonce)
      Generates a response to a SIP authorization challenge.
    • getAuthResponse

      protected String getAuthResponse(RTSPSession sess, String user, String pass, String remote, String cmd, String header)
      Generates a complete header response to a SIP authorization challenge.
    • getremotertphost

      protected String getremotertphost(String[] msg)
      Returns the remote RTP host in a SIP/SDP packet.
    • getremote_audio_rtp_port

      protected int getremote_audio_rtp_port(String[] msg)
      Returns the remote RTP port in a SIP/SDP packet.
    • getremote_video_rtp_port

      protected int getremote_video_rtp_port(String[] msg)
      Returns the remote Video RTP port in a SIP/SDP packet.
    • geto

      protected long geto(String[] msg, int idx)
      Returns the 'o' counts in a SIP/SDP packet. idx can be 1 or 2.
    • getlocalRTPhost

      public abstract String getlocalRTPhost(RTSPSession sess)
    • buildsdp

      public String[] buildsdp(RTSPSession sess, CallDetails.SideDetails cdsd)
      Builds SDP packet. (RFC 2327)
    • resolve

      public String resolve(String host)
      Resolve hostname to IP address. Keeps a cache to improve performance.
    • onConnect

      public void onConnect(String host, int port)
      Specified by:
      onConnect in interface TransportInterface
    • onDisconnect

      public void onDisconnect(String host, int port)
      Specified by:
      onDisconnect in interface TransportInterface
    • getPacketPoolSize

      public int getPacketPoolSize()