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.ChannelchannelAtoBprotected org.jivesoftware.openfire.mediaproxy.ChannelchannelAtoBControlprotected org.jivesoftware.openfire.mediaproxy.ChannelchannelBtoAprotected org.jivesoftware.openfire.mediaproxy.ChannelchannelBtoAControlprotected InetAddresshostAprotected InetAddresshostBprotected InetAddresslocalAddressprotected intlocalPortAprotected intlocalPortBprotected intportAprotected intportBprotected DatagramSocketsocketAprotected DatagramSocketsocketAControlprotected DatagramSocketsocketBprotected DatagramSocketsocketBControlprotected ThreadthreadAtoBprotected ThreadthreadAtoBControlprotected ThreadthreadBtoAprotected ThreadthreadBtoAControl-
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 voidaddAgentListener(SessionListener sessionListener)Adds a listener for Session eventsvoidclearAgentListeners()Removes every Session events listenersbooleandatagramReceived(DatagramPacket datagramPacket)Implement DatagramListener to timestamp last packet arrivedvoiddispatchAgentStopped()Dispatch Stop EventStringgetCreator()Get the agent creator.protected intgetFreePort()Obtain a free port with a nested control port we can use.InetAddressgetHostA()Get the Host A IPInetAddressgetHostB()Get the Host B IPInetAddressgetLocalhost()Get localhost of the SessionintgetLocalPortA()Get the localport that listen for Host A PacketsintgetLocalPortB()Get the localport that listen for Host B PacketsStringgetPass()Get the pass of this Session A pass can be used to authorize an Session modificationintgetPortA()Get the Port A IPintgetPortB()Get the Port B IPStringgetSID()Get the ID of the SessionlonggetTimestamp()Get last packet arrived timestampvoidremoveAgentListener(SessionListener sessionListener)Removes an Session events listenervoidrun()Thread override methodvoidsendFromPortA(String host, int port)voidsendFromPortB(String host, int port)voidsetHostA(InetAddress hostA)Set the Host A IPvoidsetHostB(InetAddress hostB)Set the Host B IPvoidsetPortA(int portA)Set port A valuevoidsetPortB(int portB)Set port B valuevoidstopAgent()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:
getSIDin 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:
getPassin 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:
stopAgentin interfaceProxyCandidate
-
getLocalhost
public InetAddress getLocalhost()
Get localhost of the Session- Specified by:
getLocalhostin interfaceProxyCandidate- Returns:
- the localhost of the session
-
getHostA
public InetAddress getHostA()
Get the Host A IP- Specified by:
getHostAin interfaceProxyCandidate- Returns:
- the host A ip
-
getHostB
public InetAddress getHostB()
Get the Host B IP- Specified by:
getHostBin interfaceProxyCandidate- Returns:
- the host B ip
-
setPortA
public void setPortA(int portA)
Set port A value- Specified by:
setPortAin interfaceProxyCandidate- Parameters:
portA- the port number for A
-
setPortB
public void setPortB(int portB)
Set port B value- Specified by:
setPortBin interfaceProxyCandidate- Parameters:
portB- the port number for B
-
setHostA
public void setHostA(InetAddress hostA)
Set the Host A IP- Specified by:
setHostAin interfaceProxyCandidate- Parameters:
hostA- the host for A
-
setHostB
public void setHostB(InetAddress hostB)
Set the Host B IP- Specified by:
setHostBin interfaceProxyCandidate- Parameters:
hostB- the host for B
-
getPortA
public int getPortA()
Get the Port A IP- Specified by:
getPortAin interfaceProxyCandidate- Returns:
- the port for A
-
getPortB
public int getPortB()
Get the Port B IP- Specified by:
getPortBin interfaceProxyCandidate- Returns:
- the port for B
-
getLocalPortA
public int getLocalPortA()
Get the localport that listen for Host A Packets- Specified by:
getLocalPortAin interfaceProxyCandidate- Returns:
- the local port for A
-
getLocalPortB
public int getLocalPortB()
Get the localport that listen for Host B Packets- Specified by:
getLocalPortBin interfaceProxyCandidate- Returns:
- the local port for B
-
sendFromPortA
public void sendFromPortA(String host, int port)
- Specified by:
sendFromPortAin interfaceProxyCandidate
-
sendFromPortB
public void sendFromPortB(String host, int port)
- Specified by:
sendFromPortBin interfaceProxyCandidate
-
datagramReceived
public boolean datagramReceived(DatagramPacket datagramPacket)
Implement DatagramListener to timestamp last packet arrived- Specified by:
datagramReceivedin 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
-
-