Class MediaProxySession
- java.lang.Object
-
- java.lang.Thread
-
- org.jivesoftware.openfire.mediaproxy.MediaProxySession
-
- All Implemented Interfaces:
Runnable
,DatagramListener
,ProxyCandidate
- Direct Known Subclasses:
RelaySession
public abstract class MediaProxySession extends Thread implements ProxyCandidate, DatagramListener
A media proxy session enables two clients to exchange UDP traffic. Each client connects to a UDP port and then the proxy is responsible for exchanging traffic. Each session uses a total of four ports: two for traffic exchange, and two control ports.- Author:
- Thiago Camargo
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected org.jivesoftware.openfire.mediaproxy.Channel
channelAtoB
protected org.jivesoftware.openfire.mediaproxy.Channel
channelAtoBControl
protected org.jivesoftware.openfire.mediaproxy.Channel
channelBtoA
protected org.jivesoftware.openfire.mediaproxy.Channel
channelBtoAControl
protected InetAddress
hostA
protected InetAddress
hostB
protected InetAddress
localAddress
protected int
localPortA
protected int
localPortB
protected int
portA
protected int
portB
protected DatagramSocket
socketA
protected DatagramSocket
socketAControl
protected DatagramSocket
socketB
protected DatagramSocket
socketBControl
protected Thread
threadAtoB
protected Thread
threadAtoBControl
protected Thread
threadBtoA
protected Thread
threadBtoAControl
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAgentListener(SessionListener sessionListener)
Adds a listener for Session eventsvoid
clearAgentListeners()
Removes every Session events listenersboolean
datagramReceived(DatagramPacket datagramPacket)
Implement DatagramListener to timestamp last packet arrivedvoid
dispatchAgentStopped()
Dispatch Stop EventString
getCreator()
Get the agent creator.protected int
getFreePort()
Obtain a free port with a nested control port we can use.InetAddress
getHostA()
Get the Host A IPInetAddress
getHostB()
Get the Host B IPInetAddress
getLocalhost()
Get localhost of the Sessionint
getLocalPortA()
Get the localport that listen for Host A Packetsint
getLocalPortB()
Get the localport that listen for Host B PacketsString
getPass()
Get the pass of this Session A pass can be used to authorize an Session modificationint
getPortA()
Get the Port A IPint
getPortB()
Get the Port B IPString
getSID()
Get the ID of the Sessionlong
getTimestamp()
Get last packet arrived timestampvoid
removeAgentListener(SessionListener sessionListener)
Removes an Session events listenervoid
run()
Thread override methodvoid
sendFromPortA(String host, int port)
void
sendFromPortB(String host, int port)
void
setHostA(InetAddress hostA)
Set the Host A IPvoid
setHostB(InetAddress hostB)
Set the Host B IPvoid
setPortA(int portA)
Set port A valuevoid
setPortB(int portB)
Set port B valuevoid
stopAgent()
Stop the Session-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jivesoftware.openfire.mediaproxy.ProxyCandidate
start
-
-
-
-
Field Detail
-
localAddress
protected InetAddress localAddress
-
hostA
protected InetAddress hostA
-
hostB
protected InetAddress hostB
-
portA
protected int portA
-
portB
protected int portB
-
localPortA
protected int localPortA
-
localPortB
protected int localPortB
-
socketA
protected DatagramSocket socketA
-
socketAControl
protected DatagramSocket socketAControl
-
socketB
protected DatagramSocket socketB
-
socketBControl
protected DatagramSocket socketBControl
-
channelAtoB
protected org.jivesoftware.openfire.mediaproxy.Channel channelAtoB
-
channelAtoBControl
protected org.jivesoftware.openfire.mediaproxy.Channel channelAtoBControl
-
channelBtoA
protected org.jivesoftware.openfire.mediaproxy.Channel channelBtoA
-
channelBtoAControl
protected org.jivesoftware.openfire.mediaproxy.Channel channelBtoAControl
-
threadAtoB
protected Thread threadAtoB
-
threadAtoBControl
protected Thread threadAtoBControl
-
threadBtoA
protected Thread threadBtoA
-
threadBtoAControl
protected Thread threadBtoAControl
-
-
Constructor Detail
-
MediaProxySession
public MediaProxySession(String id, String creator, String localAddress, String hostA, int portA, String hostB, int portB, int minPort, int maxPort)
Creates a new static UDP channel between Host A and Host B.- Parameters:
id
- of the Session (Could be a Jingle session ID)creator
- the session creator name or descriptionlocalAddress
- the localhost IP that will listen for UDP packetshostA
- the hostname or IP of the point A of the ChannelportA
- the port number point A of the ChannelhostB
- the hostname or IP of the point B of the ChannelportB
- the port number point B of the ChannelminPort
- the minimal port value to be used by the servermaxPort
- the maximun port value to be used by the server
-
-
Method Detail
-
getFreePort
protected int getFreePort()
Obtain a free port with a nested control port we can use.- Returns:
- A free port number.
-
getSID
public String getSID()
Get the ID of the Session- Specified by:
getSID
in interfaceProxyCandidate
- Returns:
- the ID of the session
-
getPass
public String getPass()
Get the pass of this Session A pass can be used to authorize an Session modification- Specified by:
getPass
in interfaceProxyCandidate
-
getCreator
public String getCreator()
Get the agent creator. This field is open to MediaProxy users and just can be set in constructor.- Returns:
- the session creator name or description
-
getTimestamp
public long getTimestamp()
Get last packet arrived timestamp- Returns:
- TimeStamp in Millis
-
run
public void run()
Thread override method
-
stopAgent
public void stopAgent()
Stop the Session- Specified by:
stopAgent
in interfaceProxyCandidate
-
getLocalhost
public InetAddress getLocalhost()
Get localhost of the Session- Specified by:
getLocalhost
in interfaceProxyCandidate
- Returns:
- the localhost of the session
-
getHostA
public InetAddress getHostA()
Get the Host A IP- Specified by:
getHostA
in interfaceProxyCandidate
- Returns:
- the host A ip
-
getHostB
public InetAddress getHostB()
Get the Host B IP- Specified by:
getHostB
in interfaceProxyCandidate
- Returns:
- the host B ip
-
setPortA
public void setPortA(int portA)
Set port A value- Specified by:
setPortA
in interfaceProxyCandidate
- Parameters:
portA
- the port number for A
-
setPortB
public void setPortB(int portB)
Set port B value- Specified by:
setPortB
in interfaceProxyCandidate
- Parameters:
portB
- the port number for B
-
setHostA
public void setHostA(InetAddress hostA)
Set the Host A IP- Specified by:
setHostA
in interfaceProxyCandidate
- Parameters:
hostA
- the host for A
-
setHostB
public void setHostB(InetAddress hostB)
Set the Host B IP- Specified by:
setHostB
in interfaceProxyCandidate
- Parameters:
hostB
- the host for B
-
getPortA
public int getPortA()
Get the Port A IP- Specified by:
getPortA
in interfaceProxyCandidate
- Returns:
- the port for A
-
getPortB
public int getPortB()
Get the Port B IP- Specified by:
getPortB
in interfaceProxyCandidate
- Returns:
- the port for B
-
getLocalPortA
public int getLocalPortA()
Get the localport that listen for Host A Packets- Specified by:
getLocalPortA
in interfaceProxyCandidate
- Returns:
- the local port for A
-
getLocalPortB
public int getLocalPortB()
Get the localport that listen for Host B Packets- Specified by:
getLocalPortB
in interfaceProxyCandidate
- Returns:
- the local port for B
-
sendFromPortA
public void sendFromPortA(String host, int port)
- Specified by:
sendFromPortA
in interfaceProxyCandidate
-
sendFromPortB
public void sendFromPortB(String host, int port)
- Specified by:
sendFromPortB
in interfaceProxyCandidate
-
datagramReceived
public boolean datagramReceived(DatagramPacket datagramPacket)
Implement DatagramListener to timestamp last packet arrived- Specified by:
datagramReceived
in interfaceDatagramListener
- Parameters:
datagramPacket
- the datagram packet- Returns:
- ?
-
addAgentListener
public void addAgentListener(SessionListener sessionListener)
Adds a listener for Session events- Parameters:
sessionListener
- the sessionj listener to add
-
removeAgentListener
public void removeAgentListener(SessionListener sessionListener)
Removes an Session events listener- Parameters:
sessionListener
- the session listener to remove
-
clearAgentListeners
public void clearAgentListeners()
Removes every Session events listeners
-
dispatchAgentStopped
public void dispatchAgentStopped()
Dispatch Stop Event
-
-