public class SocketSignalReceiver extends AbstractSignalReceiver
port=xx&proxy=host:port&forward=xx&allow=ip-address&allow=ip-address...
where:
port
is the port number the signal receiver will listen on.
This is optional and if not given a random non-used port will be used.
proxy
is the address of a proxy host that will route
incoming messages to this signal receiver. The proxy will automatically
be added to the list of allowed hosts. This value is optional.
forward
attribute is a boolean option (1 or 0).
If 1, this signal receiver will act as a proxy and forward signal
messages which are of the form:
signal://handlerID@host:port/?SIGNAL#forward.to.host:port
Before the message is forwarded it is re-built like this:
signal://handlerId@forward.to.host:port/?SIGNAL
allow
parts are the ip name or numbers of hosts that are
allowed to send signals to the receiver. Except for the special case
allow=*
, which allows any remote host to send signals an
exact match is required. The local host is always allowed to send signals.
If no allow
tags are given only allow connections from the
local host (and the proxy if given) are allowed.
Modifier and Type | Class and Description |
---|---|
private class |
SocketSignalReceiver.ListenerThread
This class is used for listening to the specified socket for
incoming connections.
|
Modifier and Type | Field and Description |
---|---|
private Set<InetAddress> |
allow |
private boolean |
allowAll |
private boolean |
allowForward |
private InetAddress |
ip |
private Thread |
listener |
private static org.slf4j.Logger |
logger
Log signals processing.
|
private int |
port |
private String |
proxy |
Constructor and Description |
---|
SocketSignalReceiver()
Create a new socket signal receiver.
|
Modifier and Type | Method and Description |
---|---|
void |
close(int wait)
Close this receiver and the socket it is listening on.
|
protected boolean |
forwardSignalMessageIfNeeded(String message)
If the message has forwarding information, forward the message to
the other host.
|
protected String |
getGlobalSignalId(SignalHandler handler)
Override ID generation so we can add proxy information if needed.
|
Class<? extends SignalTransporter> |
getSignalTransporterClass()
Get the signal transporter class that should be used to
send signals to this receiver.
|
void |
init(String params)
Initialise the receiver.
|
protected boolean |
isAllowedHost(InetAddress remoteHost)
Checks if the specified remote host is allowed to send
signals to this receiver.
|
protected void |
listenOnSocket()
Start listening for incoming signals.
|
protected void |
parseInitParameters(String params)
Parse the initialisation parameters.
|
protected void |
processSignalMessage(String message)
Process the incoming message.
|
getLocalSignalHandlerId, getReceiverId, getSignalHandler, registerSignalHandler, sendToAll, unregisterSignalHandler
private static final org.slf4j.Logger logger
private InetAddress ip
private Thread listener
private int port
private String proxy
private boolean allowForward
private Set<InetAddress> allow
private boolean allowAll
public SocketSignalReceiver()
init(String)
.public void init(String params)
init
in interface SignalReceiver
init
in class AbstractSignalReceiver
params
- The ID of the signal receiver, needed if the default
ID generation should be usedpublic Class<? extends SignalTransporter> getSignalTransporterClass()
SignalReceiver
SocketSignalTransporter
public void close(int wait)
close
in interface SignalReceiver
close
in class AbstractSignalReceiver
wait
- Number of milliseconds to wait for registered jobs to abort,
use a negative value to disable notification, and 0 to disable waitingprotected String getGlobalSignalId(SignalHandler handler)
getGlobalSignalId
in class AbstractSignalReceiver
handler
- The signal handler to generate the ID forprotected void processSignalMessage(String message)
processSignalMessage
in class AbstractSignalReceiver
message
- The message to process, the format of the message
must be compatible with the message that AbstractSignalTransporter.generateSignalMessage(Signal)
generatesprotected void parseInitParameters(String params)
init(String)
method.params
- Parameter string passed to init(String)
methodprotected void listenOnSocket()
protected boolean forwardSignalMessageIfNeeded(String message)
protected boolean isAllowedHost(InetAddress remoteHost)
remoteHost
- The remote host that is sending the signal