Package com.cosylab.epics.caj
Class CARepeater
- java.lang.Object
-
- com.cosylab.epics.caj.CARepeater
-
- All Implemented Interfaces:
Runnable
public class CARepeater extends Object implements Runnable
CA repeater.- Version:
- $id$
- Author:
- Matej Sekoranja
-
-
Field Summary
Fields Modifier and Type Field Description static StringCA_DISABLE_REPEATERSystem JVM property key to disable CA repeater.static StringCA_FORCE_NATIVE_REPEATERSystem JVM property key to force native repeater.protected ListclientsList of registered clients.protected DatagramSocketlocalDatagramSocketLocal unbounded DatagramSocket.protected LoggerloggerContext logger.protected intrepeaterPortRepeater port.
-
Constructor Summary
Constructors Constructor Description CARepeater()Constructor.CARepeater(int repeaterPort)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static DatagramSocketcreateDatagramSocket()Constructs an unbound datagram socket.protected static DatagramSocketcreateDatagramSocket(int port, boolean reuseAddress)Constructs a atagram socket bound to the wildcard address on defined port.protected voidfanOut(InetSocketAddress fromAddress, ByteBuffer buffer)protected voidinitialize()Initialize CA repeater.protected voidinitializeLogger()Initialize context logger.protected static booleanisRepeaterRunning(int repeaterPort)Check if repeater is running.static voidmain(String[] argv)Main entry-point.protected voidprocess()Process UDP requests.protected voidregisterNewClient(InetSocketAddress clientAddress)voidrun()static voidstartRepeater(int repeaterPort)Start repeater as detached process.protected voidverifyClients()Verify all the clients.
-
-
-
Field Detail
-
CA_FORCE_NATIVE_REPEATER
public static final String CA_FORCE_NATIVE_REPEATER
System JVM property key to force native repeater.- See Also:
- Constant Field Values
-
CA_DISABLE_REPEATER
public static final String CA_DISABLE_REPEATER
System JVM property key to disable CA repeater.- See Also:
- Constant Field Values
-
logger
protected Logger logger
Context logger.
-
repeaterPort
protected int repeaterPort
Repeater port.
-
localDatagramSocket
protected DatagramSocket localDatagramSocket
Local unbounded DatagramSocket.
-
clients
protected List clients
List of registered clients.
-
-
Method Detail
-
initialize
protected void initialize()
Initialize CA repeater.
-
initializeLogger
protected void initializeLogger()
Initialize context logger.
-
run
public void run()
- Specified by:
runin interfaceRunnable- See Also:
Runnable.run()
-
registerNewClient
protected void registerNewClient(InetSocketAddress clientAddress)
-
fanOut
protected void fanOut(InetSocketAddress fromAddress, ByteBuffer buffer)
-
verifyClients
protected void verifyClients()
Verify all the clients.
-
process
protected void process()
Process UDP requests.
-
createDatagramSocket
protected static DatagramSocket createDatagramSocket() throws SocketException
Constructs an unbound datagram socket.- Returns:
- default unbound datagram socket.
- Throws:
SocketException- - if the socket could not be opened, or the socket could not bind to the specified local port.
-
createDatagramSocket
protected static DatagramSocket createDatagramSocket(int port, boolean reuseAddress) throws SocketException
Constructs a atagram socket bound to the wildcard address on defined port.- Parameters:
port- InetSocketAddressreuseAddress- Enable/disable the SO_REUSEADDR socket option- Returns:
- default bounded datagram socket.
- Throws:
SocketException- - if the socket could not be opened, or the socket could not bind to the specified local port.
-
isRepeaterRunning
protected static boolean isRepeaterRunning(int repeaterPort)
Check if repeater is running.- Parameters:
repeaterPort- repeater port.- Returns:
trueif repeater is already running,falseotherwise
-
startRepeater
public static void startRepeater(int repeaterPort) throws ThrowableStart repeater as detached process. First checks if repeater is already running, if not other JVM process is run.- Parameters:
repeaterPort- repeater port.- Throws:
Throwable- throwable
-
main
public static void main(String[] argv)
Main entry-point.- Parameters:
argv- arguments.
-
-