public class HttpRelayTransport extends java.lang.Object implements ITransport
Modifier and Type | Class and Description |
---|---|
class |
HttpRelayTransport.Worker
Worker for sending messages.
|
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,java.lang.Long> |
addresses
The known addresses (address -> last used date (0 for pinging, negative for dead connections)).
|
protected static long |
ALIVETIME
The alive time for assuming a connection is working.
|
protected boolean |
awaonly
Flag if only awareness messages should be sent through relay.
|
protected jadex.bridge.IInternalAccess |
component
The component.
|
protected RelayConnectionManager |
conman
The connection manager.
|
protected java.lang.String |
defaddresses
The default relay server lookup addresses.
|
protected static int |
MAX_WORKERS
The maximum number of workers for an address.
|
protected java.util.Map<java.lang.String,java.util.Collection<ISendTask>> |
readyqueue
The ready queue per address (tasks to reschedule after ping).
|
protected HttpReceiver |
receiver
The receiver process.
|
protected boolean |
secure
Flag if receiver connection should use https.
|
protected java.util.Map<java.lang.String,java.util.List<jadex.commons.Tuple2<ISendTask,jadex.commons.future.Future<java.lang.Void>>>> |
sendqueue
The send queue per address (tasks to send on worker thread).
|
protected jadex.bridge.service.types.threadpool.IDaemonThreadPoolService |
threadpool
The thread pool.
|
protected java.util.Map<java.lang.String,java.lang.Integer> |
workers
The worker count (address -> count).
|
Constructor and Description |
---|
HttpRelayTransport(jadex.bridge.IInternalAccess component,
java.lang.String defaddresses,
boolean secure,
boolean awaonly)
Create a new relay transport.
|
Modifier and Type | Method and Description |
---|---|
protected void |
connected(java.lang.String address,
boolean dead)
Called from receiver thread, when it connects to an address.
|
java.lang.String[] |
getAddresses()
Get the addresses of this transport.
|
RelayConnectionManager |
getConnectionManager()
Get the connection manager.
|
java.lang.String |
getDefaultAddresses()
Get the default addresses.
|
java.lang.String[] |
getServiceSchemas()
Returns the prefix of this transport
|
jadex.bridge.service.types.threadpool.IDaemonThreadPoolService |
getThreadPool()
Get the thread pool.
|
void |
internalSendMessage(java.lang.String address,
ISendTask task)
Schedule message sending.
|
boolean |
isApplicable(java.lang.String address)
Test if a transport is applicable for the target address.
|
boolean |
isNonFunctionalSatisfied(java.util.Map<java.lang.String,java.lang.Object> nonfunc,
java.lang.String address)
Test if a transport satisfies the non-functional requirements.
|
boolean |
isSecure()
Flag if receiver connection should use https.
|
protected jadex.commons.future.IFuture<java.lang.Void> |
queueDoSendTask(java.lang.String address,
ISendTask task)
Queue a send task for execution on a worker thread.
|
protected void |
queueReadySendTask(java.lang.String address,
ISendTask task,
boolean ping)
Queue a ready send task for execution after a ping.
|
void |
sendMessage(java.lang.String address,
ISendTask task)
Send a message to the given address.
|
jadex.commons.future.IFuture<java.lang.Void> |
shutdown()
Perform cleanup operations (if any).
|
jadex.commons.future.IFuture<java.lang.Void> |
start()
Start the transport.
|
protected static final long ALIVETIME
protected static final int MAX_WORKERS
protected jadex.bridge.IInternalAccess component
protected jadex.bridge.service.types.threadpool.IDaemonThreadPoolService threadpool
protected java.lang.String defaddresses
protected boolean secure
protected boolean awaonly
protected RelayConnectionManager conman
protected HttpReceiver receiver
protected java.util.Map<java.lang.String,java.lang.Long> addresses
protected java.util.Map<java.lang.String,java.lang.Integer> workers
protected java.util.Map<java.lang.String,java.util.Collection<ISendTask>> readyqueue
protected java.util.Map<java.lang.String,java.util.List<jadex.commons.Tuple2<ISendTask,jadex.commons.future.Future<java.lang.Void>>>> sendqueue
public HttpRelayTransport(jadex.bridge.IInternalAccess component, java.lang.String defaddresses, boolean secure, boolean awaonly)
public java.lang.String getDefaultAddresses()
public jadex.bridge.service.types.threadpool.IDaemonThreadPoolService getThreadPool()
public RelayConnectionManager getConnectionManager()
public boolean isSecure()
public jadex.commons.future.IFuture<java.lang.Void> start()
start
in interface ITransport
public jadex.commons.future.IFuture<java.lang.Void> shutdown()
shutdown
in interface ITransport
protected void connected(java.lang.String address, boolean dead)
public boolean isApplicable(java.lang.String address)
isApplicable
in interface ITransport
public boolean isNonFunctionalSatisfied(java.util.Map<java.lang.String,java.lang.Object> nonfunc, java.lang.String address)
isNonFunctionalSatisfied
in interface ITransport
nonfunc
- The non-functional requirements (name, value).address
- The transport address.public void sendMessage(java.lang.String address, ISendTask task)
sendMessage
in interface ITransport
address
- The address to send to.task
- A task representing the message to send.public void internalSendMessage(java.lang.String address, ISendTask task)
public java.lang.String[] getServiceSchemas()
getServiceSchemas
in interface ITransport
public java.lang.String[] getAddresses()
getAddresses
in interface ITransport
protected void queueReadySendTask(java.lang.String address, ISendTask task, boolean ping)
protected jadex.commons.future.IFuture<java.lang.Void> queueDoSendTask(java.lang.String address, ISendTask task)