public class MessageService
extends jadex.bridge.service.BasicService
implements jadex.bridge.service.types.message.IMessageService
Modifier and Type | Class and Description |
---|---|
protected class |
MessageService.DeliverMessage
Deliver message(s) executable.
|
class |
MessageService.SendManager
Send message(s) executable.
|
Modifier and Type | Field and Description |
---|---|
protected jadex.bridge.service.types.address.ITransportAddressService |
addrservice |
protected java.lang.ClassLoader |
classloader
The class loader of the message service (only for envelope en/decoding, content is handled by receiver class loader).
|
protected jadex.bridge.service.types.clock.IClockService |
clockservice
The cashed clock service.
|
protected jadex.bridge.service.types.cms.IComponentManagementService |
cms
The cms.
|
protected CodecFactory |
codecfactory
The codec factory for messages.
|
static jadex.bridge.service.types.message.IContentCodec[] |
CODECS
The default codecs.
|
protected jadex.bridge.IInternalAccess |
component
The component.
|
protected java.util.Map<jadex.bridge.IComponentIdentifier,java.util.Map<java.lang.Class<?>,java.lang.Object[]>> |
contentcodecinfos
The map of content codec infos.
|
protected java.util.List |
contentcodecs
The content codecs.
|
protected java.lang.String |
deflanguage
The default content language (if not specified).
|
protected MessageService.DeliverMessage |
delivermsg
The deliver message action executed by platform executor.
|
protected java.util.Map<java.lang.Byte,jadex.commons.ICommand> |
deliveryhandlers
The delivery handler map.
|
protected jadex.bridge.service.types.execution.IExecutionService |
exeservice
The execution service.
|
protected java.util.Map<java.lang.Integer,AbstractConnectionHandler> |
icons
The initiator connections.
|
protected jadex.bridge.service.types.library.ILibraryService |
libservice
The library service.
|
protected java.util.Map<jadex.bridge.service.types.message.IMessageListener,jadex.commons.IFilter> |
listeners
The listeners (listener->filter).
|
protected java.util.logging.Logger |
logger
The logger.
|
protected jadex.commons.collection.LRU<jadex.bridge.IComponentIdentifier,MessageService.SendManager> |
managers
The target managers (platform id->manager).
|
protected java.util.Map |
messagetypes
The message types.
|
protected java.util.Map<java.lang.Integer,AbstractConnectionHandler> |
pcons
The participant connections.
|
protected jadex.commons.collection.LRU<jadex.bridge.IComponentIdentifier,java.util.Date> |
releasedatecache
Release date cache
|
protected boolean |
strictcom
Enable strict communication (i.e.
|
protected jadex.bridge.service.types.address.TransportAddressBook |
taddresses |
protected java.util.Timer |
timer
The (real) system clock timer.
|
protected java.util.List<ITransport> |
transports
The transports.
|
Constructor and Description |
---|
MessageService(jadex.bridge.IInternalAccess component,
java.util.logging.Logger logger,
ITransport[] transports,
jadex.bridge.service.types.message.MessageType[] messagetypes)
Constructor for Outbox.
|
MessageService(jadex.bridge.IInternalAccess component,
java.util.logging.Logger logger,
ITransport[] transports,
jadex.bridge.service.types.message.MessageType[] messagetypes,
jadex.bridge.service.types.message.IContentCodec[] contentcodecs,
java.lang.String deflanguage,
CodecFactory codecfactory,
boolean strictcom)
Constructor for Outbox.
|
Modifier and Type | Method and Description |
---|---|
jadex.commons.future.IFuture<java.lang.Void> |
addContentCodec(jadex.bridge.service.types.message.IContentCodec codec)
Add content codec type.
|
jadex.commons.future.IFuture<java.lang.Void> |
addMessageCodec(java.lang.Class codec)
Add message codec type.
|
jadex.commons.future.IFuture<java.lang.Void> |
addMessageListener(jadex.bridge.service.types.message.IMessageListener listener,
jadex.commons.IFilter filter)
Add a message listener.
|
void |
addTransport(ITransport transport)
Adds a transport for this outbox.
|
protected void |
announceComponentIdentifier(jadex.bridge.ITransportComponentIdentifier cid)
Announce a component identifier to message awareness
and address service.
|
void |
changeTransportPosition(boolean up,
ITransport transport)
Moves a transport up or down.
|
jadex.commons.future.IFuture<jadex.bridge.IInputConnection> |
createInputConnection(jadex.bridge.IComponentIdentifier sender,
jadex.bridge.IComponentIdentifier receiver,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create a virtual input connection.
|
jadex.commons.future.IFuture<jadex.bridge.IOutputConnection> |
createOutputConnection(jadex.bridge.IComponentIdentifier sender,
jadex.bridge.IComponentIdentifier receiver,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create a virtual output connection.
|
protected void |
decodeMessage(java.util.logging.Logger logger,
jadex.bridge.service.types.message.MessageType messagetype,
java.util.Map<java.lang.String,java.lang.Object> fmessage,
java.lang.ClassLoader cl,
jadex.bridge.IComponentIdentifier rec,
jadex.bridge.IInternalAccess component)
Decode a message.
|
void |
deliverMessage(java.lang.Object msg)
Deliver a message to the intended components.
|
protected jadex.commons.future.IFuture<java.lang.Void> |
deliverToAllReceivers(jadex.bridge.IComponentIdentifier[] receivers,
jadex.bridge.service.types.cms.IComponentManagementService cms,
java.lang.ClassLoader classloader,
java.util.Map msg,
java.util.logging.Logger logger,
jadex.bridge.service.types.message.MessageType messagetype) |
protected jadex.commons.future.IFuture<java.lang.Void> |
deliverToReceiver(jadex.bridge.IComponentIdentifier[] receivers,
int i,
jadex.bridge.service.types.cms.IComponentManagementService cms,
java.lang.ClassLoader classloader,
java.util.Map<java.lang.String,java.lang.Object> msg,
java.util.logging.Logger logger,
jadex.bridge.service.types.message.MessageType messagetype) |
protected void |
doSendMessage(java.util.Map<java.lang.String,java.lang.Object> msg,
jadex.bridge.service.types.message.MessageType type,
jadex.bridge.IExternalAccess comp,
java.lang.ClassLoader cl,
jadex.commons.future.Future<java.lang.Void> ret,
byte[] codecids,
jadex.bridge.service.types.message.IEncodingContext enccontext)
Extracted method to be callable from listener.
|
jadex.commons.future.IFuture<java.lang.String[]> |
getAddresses()
Get the adresses of a component.
|
java.lang.String[] |
getAddressSchemes()
Get addresses of all transports.
|
jadex.commons.future.IFuture<java.util.Map<java.lang.Byte,jadex.bridge.service.types.message.ICodec>> |
getAllCodecs()
Get the codecs with message codecs.
|
CodecFactory |
getCodecFactory()
Get the codec factory.
|
jadex.bridge.IExternalAccess |
getComponent()
Get the component.
|
java.util.Map<java.lang.Class<?>,java.lang.Object[]> |
getContentCodecInfo(jadex.bridge.IComponentIdentifier cid)
Get a matching content codec.
|
jadex.bridge.service.types.message.IContentCodec[] |
getContentCodecs()
Get content codecs.
|
jadex.bridge.service.types.message.IContentCodec[] |
getContentCodecs(jadex.bridge.modelinfo.IModelInfo model,
java.lang.ClassLoader cl)
Get a matching content codec.
|
jadex.commons.future.IFuture<jadex.bridge.service.types.message.ICodec[]> |
getDefaultCodecs()
Get the default codecs.
|
jadex.bridge.service.types.message.ICodec[] |
getMessageCodecs(byte[] codecids)
Get array of message codecs for codec ids.
|
jadex.bridge.service.types.message.MessageType |
getMessageType(java.lang.String type)
Get the message type.
|
jadex.bridge.IInputConnection |
getParticipantInputConnection(int conid,
jadex.bridge.ITransportComponentIdentifier initiator,
jadex.bridge.ITransportComponentIdentifier participant,
java.util.Map<java.lang.String,java.lang.Object> nonfunc) |
jadex.bridge.IOutputConnection |
getParticipantOutputConnection(int conid,
jadex.bridge.ITransportComponentIdentifier initiator,
jadex.bridge.ITransportComponentIdentifier participant,
java.util.Map<java.lang.String,java.lang.Object> nonfunc) |
protected jadex.commons.future.IFuture<java.util.Date> |
getReleaseDate(jadex.bridge.service.types.message.MessageType type,
java.util.Map<java.lang.String,java.lang.Object> msg)
Get the release date from a message.
|
protected jadex.commons.future.IFuture<java.lang.ClassLoader> |
getRIDClassLoader(java.util.Map msg,
jadex.bridge.service.types.message.MessageType mt)
Get the classloader for a resource identifier.
|
MessageService.SendManager |
getSendManager(jadex.bridge.IComponentIdentifier cid)
Get a send target manager for addresses.
|
ITransport[] |
getTransports()
Get the transports.
|
protected jadex.bridge.IInputConnection |
initInputConnection(int conid,
jadex.bridge.ITransportComponentIdentifier initiator,
jadex.bridge.ITransportComponentIdentifier participant,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create local input connection side after receiving a remote init output message.
|
protected jadex.bridge.IOutputConnection |
initOutputConnection(int conid,
jadex.bridge.ITransportComponentIdentifier initiator,
jadex.bridge.ITransportComponentIdentifier participant,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create local output connection side after receiving a remote init input message.
|
InputConnection |
internalCreateInputConnection(jadex.bridge.IComponentIdentifier sender,
jadex.bridge.IComponentIdentifier receiver,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create a virtual input connection.
|
OutputConnection |
internalCreateOutputConnection(jadex.bridge.IComponentIdentifier sender,
jadex.bridge.IComponentIdentifier receiver,
java.util.Map<java.lang.String,java.lang.Object> nonfunc)
Create a virtual output connection.
|
protected void |
internalDeliverMessage(java.lang.Object obj)
Deliver a message to the receivers.
|
java.lang.String[] |
internalGetAddresses()
Get the adresses of a component.
|
static void |
main(java.lang.String[] args) |
jadex.commons.future.IFuture<java.lang.Void> |
refreshAddresses()
Announce that addresses of transports might have changed.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeContentCodec(jadex.bridge.service.types.message.IContentCodec codec)
Remove content codec type.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeMessageCodec(java.lang.Class codec)
Remove message codec type.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeMessageListener(jadex.bridge.service.types.message.IMessageListener listener)
Remove a message listener.
|
void |
removeTransport(ITransport transport)
Remove a transport for the outbox.
|
jadex.commons.future.IFuture<java.lang.Void> |
sendMessage(java.util.Map<java.lang.String,java.lang.Object> origmsg,
jadex.bridge.service.types.message.MessageType type,
jadex.bridge.IComponentIdentifier osender,
jadex.bridge.IResourceIdentifier rid,
jadex.bridge.IComponentIdentifier realrec,
byte[] codecids)
Send a message.
|
void |
setContentCodecInfo(jadex.bridge.IComponentIdentifier cid,
java.util.Map<java.lang.Class<?>,java.lang.Object[]> info)
Get a matching content codec.
|
jadex.commons.future.IFuture<java.lang.Void> |
shutdownService()
Called when the platform shuts down.
|
jadex.commons.future.IFuture<java.lang.Void> |
startService()
Start the service.
|
void |
startStreamCheckAliveBehavior() |
void |
startStreamSendAliveBehavior() |
java.util.TimerTask |
waitForRealDelay(long delay,
jadex.bridge.IComponentStep<?> step)
Wait for a time delay on the (real) system clock.
|
createServiceIdentifier, createServiceIdentifier, equals, generateServiceName, getInterfaceType, getInternalAccess, getMethodTimeout, getPropertyMap, getProviderId, getServiceIdentifier, hashCode, initNFProperties, isValid, setComponentAccess, setPropertyMap, toString
public static jadex.bridge.service.types.message.IContentCodec[] CODECS
protected jadex.bridge.IInternalAccess component
protected java.util.List<ITransport> transports
protected java.util.Map messagetypes
protected MessageService.DeliverMessage delivermsg
protected java.util.logging.Logger logger
protected java.util.Map<jadex.bridge.service.types.message.IMessageListener,jadex.commons.IFilter> listeners
protected jadex.bridge.service.types.clock.IClockService clockservice
protected jadex.bridge.service.types.library.ILibraryService libservice
protected jadex.bridge.service.types.execution.IExecutionService exeservice
protected jadex.bridge.service.types.address.ITransportAddressService addrservice
protected jadex.bridge.service.types.address.TransportAddressBook taddresses
protected jadex.commons.collection.LRU<jadex.bridge.IComponentIdentifier,java.util.Date> releasedatecache
protected jadex.bridge.service.types.cms.IComponentManagementService cms
protected java.lang.ClassLoader classloader
protected jadex.commons.collection.LRU<jadex.bridge.IComponentIdentifier,MessageService.SendManager> managers
protected CodecFactory codecfactory
protected java.util.Map<java.lang.Byte,jadex.commons.ICommand> deliveryhandlers
protected java.util.Map<java.lang.Integer,AbstractConnectionHandler> icons
protected java.util.Map<java.lang.Integer,AbstractConnectionHandler> pcons
protected java.util.List contentcodecs
protected java.lang.String deflanguage
protected java.util.Map<jadex.bridge.IComponentIdentifier,java.util.Map<java.lang.Class<?>,java.lang.Object[]>> contentcodecinfos
protected boolean strictcom
protected volatile java.util.Timer timer
public MessageService(jadex.bridge.IInternalAccess component, java.util.logging.Logger logger, ITransport[] transports, jadex.bridge.service.types.message.MessageType[] messagetypes)
platform
- public MessageService(jadex.bridge.IInternalAccess component, java.util.logging.Logger logger, ITransport[] transports, jadex.bridge.service.types.message.MessageType[] messagetypes, jadex.bridge.service.types.message.IContentCodec[] contentcodecs, java.lang.String deflanguage, CodecFactory codecfactory, boolean strictcom)
platform
- public jadex.bridge.IInputConnection getParticipantInputConnection(int conid, jadex.bridge.ITransportComponentIdentifier initiator, jadex.bridge.ITransportComponentIdentifier participant, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
public jadex.bridge.IOutputConnection getParticipantOutputConnection(int conid, jadex.bridge.ITransportComponentIdentifier initiator, jadex.bridge.ITransportComponentIdentifier participant, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
public OutputConnection internalCreateOutputConnection(jadex.bridge.IComponentIdentifier sender, jadex.bridge.IComponentIdentifier receiver, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
public jadex.commons.future.IFuture<jadex.bridge.IOutputConnection> createOutputConnection(jadex.bridge.IComponentIdentifier sender, jadex.bridge.IComponentIdentifier receiver, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
createOutputConnection
in interface jadex.bridge.service.types.message.IMessageService
public InputConnection internalCreateInputConnection(jadex.bridge.IComponentIdentifier sender, jadex.bridge.IComponentIdentifier receiver, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
public jadex.commons.future.IFuture<jadex.bridge.IInputConnection> createInputConnection(jadex.bridge.IComponentIdentifier sender, jadex.bridge.IComponentIdentifier receiver, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
createInputConnection
in interface jadex.bridge.service.types.message.IMessageService
public jadex.commons.future.IFuture<java.lang.Void> sendMessage(java.util.Map<java.lang.String,java.lang.Object> origmsg, jadex.bridge.service.types.message.MessageType type, jadex.bridge.IComponentIdentifier osender, jadex.bridge.IResourceIdentifier rid, jadex.bridge.IComponentIdentifier realrec, byte[] codecids)
sendMessage
in interface jadex.bridge.service.types.message.IMessageService
message
- The message as key value pairs.msgtype
- The message type.sender
- The sender component identifier.rid
- The resource identifier used by the sending component (i.e. corresponding to classes of objects in the message map).realrec
- The real receiver if different from the message receiver (e.g. message to rms encapsulating service call to other component).codecids
- The codecs to use for encoding (if different from default).protected void doSendMessage(java.util.Map<java.lang.String,java.lang.Object> msg, jadex.bridge.service.types.message.MessageType type, jadex.bridge.IExternalAccess comp, java.lang.ClassLoader cl, jadex.commons.future.Future<java.lang.Void> ret, byte[] codecids, jadex.bridge.service.types.message.IEncodingContext enccontext)
public jadex.bridge.service.types.message.ICodec[] getMessageCodecs(byte[] codecids)
public jadex.bridge.service.types.message.IContentCodec[] getContentCodecs()
public jadex.bridge.service.types.message.IContentCodec[] getContentCodecs(jadex.bridge.modelinfo.IModelInfo model, java.lang.ClassLoader cl)
props
- The properties.public void setContentCodecInfo(jadex.bridge.IComponentIdentifier cid, java.util.Map<java.lang.Class<?>,java.lang.Object[]> info)
props
- The properties.public java.util.Map<java.lang.Class<?>,java.lang.Object[]> getContentCodecInfo(jadex.bridge.IComponentIdentifier cid)
props
- The properties.public CodecFactory getCodecFactory()
public jadex.commons.future.IFuture<java.util.Map<java.lang.Byte,jadex.bridge.service.types.message.ICodec>> getAllCodecs()
getAllCodecs
in interface jadex.bridge.service.types.message.IMessageService
public jadex.commons.future.IFuture<jadex.bridge.service.types.message.ICodec[]> getDefaultCodecs()
getDefaultCodecs
in interface jadex.bridge.service.types.message.IMessageService
public void deliverMessage(java.lang.Object msg)
deliverMessage
in interface jadex.bridge.service.types.message.IMessageService
message
- The native message.
(Synchronized because can be called from concurrently executing transports)public void addTransport(ITransport transport)
transport
- The transport.public void removeTransport(ITransport transport)
transport
- The transport.public void changeTransportPosition(boolean up, ITransport transport)
up
- Move up?transport
- The transport to move.public java.lang.String[] internalGetAddresses()
public jadex.commons.future.IFuture<java.lang.String[]> getAddresses()
getAddresses
in interface jadex.bridge.service.types.message.IMessageService
public java.lang.String[] getAddressSchemes()
getAddressSchemes
in interface jadex.bridge.service.types.message.IMessageService
public ITransport[] getTransports()
public MessageService.SendManager getSendManager(jadex.bridge.IComponentIdentifier cid)
public jadex.commons.future.IFuture<java.lang.Void> startService()
startService
in interface jadex.bridge.service.IInternalService
startService
in class jadex.bridge.service.BasicService
public jadex.commons.future.IFuture<java.lang.Void> shutdownService()
shutdownService
in interface jadex.bridge.service.IInternalService
shutdownService
in class jadex.bridge.service.BasicService
public jadex.bridge.service.types.message.MessageType getMessageType(java.lang.String type)
getMessageType
in interface jadex.bridge.service.types.message.IMessageService
type
- The type name.public jadex.commons.future.IFuture<java.lang.Void> addMessageListener(jadex.bridge.service.types.message.IMessageListener listener, jadex.commons.IFilter filter)
addMessageListener
in interface jadex.bridge.service.types.message.IMessageService
listener
- The change listener.filter
- An optional filter to only receive notifications for matching messages.public jadex.commons.future.IFuture<java.lang.Void> removeMessageListener(jadex.bridge.service.types.message.IMessageListener listener)
removeMessageListener
in interface jadex.bridge.service.types.message.IMessageService
listener
- The change listener.public jadex.commons.future.IFuture<java.lang.Void> addContentCodec(jadex.bridge.service.types.message.IContentCodec codec)
addContentCodec
in interface jadex.bridge.service.types.message.IMessageService
codec
- The codec type.public jadex.commons.future.IFuture<java.lang.Void> removeContentCodec(jadex.bridge.service.types.message.IContentCodec codec)
removeContentCodec
in interface jadex.bridge.service.types.message.IMessageService
codec
- The codec type.public jadex.commons.future.IFuture<java.lang.Void> addMessageCodec(java.lang.Class codec)
addMessageCodec
in interface jadex.bridge.service.types.message.IMessageService
codec
- The codec type.public jadex.commons.future.IFuture<java.lang.Void> removeMessageCodec(java.lang.Class codec)
removeMessageCodec
in interface jadex.bridge.service.types.message.IMessageService
codec
- The codec type.public jadex.commons.future.IFuture<java.lang.Void> refreshAddresses()
refreshAddresses
in interface jadex.bridge.service.types.message.IMessageService
public jadex.bridge.IExternalAccess getComponent()
public void startStreamSendAliveBehavior()
public void startStreamCheckAliveBehavior()
protected void internalDeliverMessage(java.lang.Object obj)
protected jadex.commons.future.IFuture<java.lang.ClassLoader> getRIDClassLoader(java.util.Map msg, jadex.bridge.service.types.message.MessageType mt)
protected jadex.commons.future.IFuture<java.lang.Void> deliverToAllReceivers(jadex.bridge.IComponentIdentifier[] receivers, jadex.bridge.service.types.cms.IComponentManagementService cms, java.lang.ClassLoader classloader, java.util.Map msg, java.util.logging.Logger logger, jadex.bridge.service.types.message.MessageType messagetype)
protected jadex.commons.future.IFuture<java.lang.Void> deliverToReceiver(jadex.bridge.IComponentIdentifier[] receivers, int i, jadex.bridge.service.types.cms.IComponentManagementService cms, java.lang.ClassLoader classloader, java.util.Map<java.lang.String,java.lang.Object> msg, java.util.logging.Logger logger, jadex.bridge.service.types.message.MessageType messagetype)
public java.util.TimerTask waitForRealDelay(long delay, jadex.bridge.IComponentStep<?> step)
protected jadex.bridge.IInputConnection initInputConnection(int conid, jadex.bridge.ITransportComponentIdentifier initiator, jadex.bridge.ITransportComponentIdentifier participant, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
protected jadex.bridge.IOutputConnection initOutputConnection(int conid, jadex.bridge.ITransportComponentIdentifier initiator, jadex.bridge.ITransportComponentIdentifier participant, java.util.Map<java.lang.String,java.lang.Object> nonfunc)
public static void main(java.lang.String[] args)
protected void announceComponentIdentifier(jadex.bridge.ITransportComponentIdentifier cid)
protected jadex.commons.future.IFuture<java.util.Date> getReleaseDate(jadex.bridge.service.types.message.MessageType type, java.util.Map<java.lang.String,java.lang.Object> msg)
protected void decodeMessage(java.util.logging.Logger logger, jadex.bridge.service.types.message.MessageType messagetype, java.util.Map<java.lang.String,java.lang.Object> fmessage, java.lang.ClassLoader cl, jadex.bridge.IComponentIdentifier rec, jadex.bridge.IInternalAccess component)