org.softamis.net.multicast
Class AbstractMulticaster

java.lang.Object
  extended by org.softamis.net.multicast.AbstractMulticaster
All Implemented Interfaces:
Multicaster
Direct Known Subclasses:
DefaultMulticaster, MultihomeMulticaster

public abstract class AbstractMulticaster
extends java.lang.Object
implements Multicaster

Abstract implementation of Multicaster that contains basic logic used for UDP multicasting

Author:
Andrew Sazonov

Nested Class Summary
protected  class AbstractMulticaster.ListenersInvoker
           
protected  class AbstractMulticaster.ListenersTask
           
 
Field Summary
static int DEFAULT_MAX_BUFFER_SIZE
           
static int DEFAULT_PORT
           
static int DEFAULT_TTL
           
protected  boolean fActive
           
protected  java.net.InetAddress fBindAddress
           
protected  java.lang.String fBindAddressName
           
protected  java.net.InetAddress fGroup
           
protected  java.util.List<MulticastListener> fListeners
           
protected  AbstractMulticaster.ListenersInvoker fListenersInvoker
           
protected  java.lang.Thread fListenersThread
           
protected  int fMaxBufferSize
           
protected  int fPort
           
protected  int fTimeToLive
           
protected static int SOCKET_TIMEOUT
           
 
Constructor Summary
protected AbstractMulticaster()
           
 
Method Summary
 void addMulticastListener(MulticastListener aListener)
          Adds multicaster listener.
protected abstract  void cleanup()
           
 void close()
          Closes multicaster.
protected  void createListenerInvokers()
           
protected abstract  void disable()
           
protected abstract  void enable()
           
protected  void fireDataReceived(byte[] aData, java.net.InetAddress aSender, int aPort)
           
 java.lang.String getBindAddressName()
           
 java.net.InetAddress getGroup()
          Returns IP address of UDP group used for UDP broadcasting
 int getLocalPort()
           
 int getMaxBufferSize()
          Returns maximal size of buffer used by multicaster
 int getPort()
          Returns port used by multicaster for UDP communication
protected  int getSocketTimeout()
           
 int getTimeToLive()
          Indicates TTL parameter for UDP packets
 boolean isActive()
          Indicates whether multicaster is active
 void removeMulticastListener(MulticastListener aListener)
          Removes given multicaster listener
 void setActive(boolean aEnable)
          Makes multicaster active or inactive.
 void setBindAddressName(java.lang.String aBindAddressName)
           
 void setGroup(java.net.InetAddress aGroup)
           
 void setGroupName(java.lang.String aName)
           
 void setMaxBufferSize(int aSize)
           
 void setPort(int aPort)
           
 void setTimeToLive(int aTime)
           
 void start()
          Starts multicaster.
protected  void stopListeners()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.softamis.net.multicast.Multicaster
sendData
 

Field Detail

fGroup

protected java.net.InetAddress fGroup

fTimeToLive

protected int fTimeToLive

fPort

protected int fPort

fActive

protected boolean fActive

fMaxBufferSize

protected int fMaxBufferSize

fListeners

protected transient java.util.List<MulticastListener> fListeners

fBindAddress

protected java.net.InetAddress fBindAddress

fBindAddressName

protected java.lang.String fBindAddressName

fListenersThread

protected java.lang.Thread fListenersThread

fListenersInvoker

protected AbstractMulticaster.ListenersInvoker fListenersInvoker

SOCKET_TIMEOUT

protected static final int SOCKET_TIMEOUT
See Also:
Constant Field Values

DEFAULT_TTL

public static final int DEFAULT_TTL
See Also:
Constant Field Values

DEFAULT_PORT

public static final int DEFAULT_PORT
See Also:
Constant Field Values

DEFAULT_MAX_BUFFER_SIZE

public static final int DEFAULT_MAX_BUFFER_SIZE
See Also:
Constant Field Values
Constructor Detail

AbstractMulticaster

protected AbstractMulticaster()
Method Detail

getGroup

public java.net.InetAddress getGroup()
Description copied from interface: Multicaster
Returns IP address of UDP group used for UDP broadcasting

Specified by:
getGroup in interface Multicaster
Returns:
group address

setGroup

public void setGroup(java.net.InetAddress aGroup)

createListenerInvokers

protected void createListenerInvokers()

stopListeners

protected void stopListeners()

setGroupName

public void setGroupName(java.lang.String aName)
                  throws java.net.UnknownHostException
Throws:
java.net.UnknownHostException

setPort

public void setPort(int aPort)

getPort

public int getPort()
Description copied from interface: Multicaster
Returns port used by multicaster for UDP communication

Specified by:
getPort in interface Multicaster
Returns:
port number

setMaxBufferSize

public void setMaxBufferSize(int aSize)
                      throws java.net.SocketException
Throws:
java.net.SocketException

getMaxBufferSize

public int getMaxBufferSize()
Description copied from interface: Multicaster
Returns maximal size of buffer used by multicaster

Specified by:
getMaxBufferSize in interface Multicaster
Returns:
maximal buffer size

getSocketTimeout

protected int getSocketTimeout()

setTimeToLive

public void setTimeToLive(int aTime)

getTimeToLive

public int getTimeToLive()
Description copied from interface: Multicaster
Indicates TTL parameter for UDP packets

Specified by:
getTimeToLive in interface Multicaster
Returns:
ttl value

isActive

public boolean isActive()
Description copied from interface: Multicaster
Indicates whether multicaster is active

Specified by:
isActive in interface Multicaster
Returns:

removeMulticastListener

public void removeMulticastListener(MulticastListener aListener)
Description copied from interface: Multicaster
Removes given multicaster listener

Specified by:
removeMulticastListener in interface Multicaster
Parameters:
aListener - listener to remove

addMulticastListener

public void addMulticastListener(MulticastListener aListener)
Description copied from interface: Multicaster
Adds multicaster listener. Listener is used as callback to process data obtained by multicaster

Specified by:
addMulticastListener in interface Multicaster
Parameters:
aListener - listener to register

getLocalPort

public int getLocalPort()

fireDataReceived

protected void fireDataReceived(byte[] aData,
                                java.net.InetAddress aSender,
                                int aPort)

setActive

public void setActive(boolean aEnable)
               throws java.io.IOException
Description copied from interface: Multicaster
Makes multicaster active or inactive. In inactive state it does not send and receive network messages

Specified by:
setActive in interface Multicaster
Parameters:
aEnable - true to make multicaster active, false otherwise
Throws:
java.io.IOException

disable

protected abstract void disable()

enable

protected abstract void enable()
                        throws java.io.IOException
Throws:
java.io.IOException

start

public void start()
           throws java.io.IOException
Description copied from interface: Multicaster
Starts multicaster. This method should be called after proper initialization and before actual sending/receiving data via multicaster

Specified by:
start in interface Multicaster
Throws:
java.io.IOException

close

public void close()
Description copied from interface: Multicaster
Closes multicaster. After call of this method multicaster performs cleanup and stops listening for incoming data

Specified by:
close in interface Multicaster

cleanup

protected abstract void cleanup()

getBindAddressName

public java.lang.String getBindAddressName()

setBindAddressName

public void setBindAddressName(java.lang.String aBindAddressName)
                        throws java.net.UnknownHostException
Throws:
java.net.UnknownHostException