|
fipa_services
|
Service responsible for handling FIPA message and managing the forwarding and relaying. More...
#include <MessageTransport.hpp>
Public Member Functions | |
| MessageTransport (const fipa::acl::AgentID &id, ServiceDirectory::Ptr serviceDirectory) | |
| Constructor for MessageTransport. More... | |
| fipa::acl::AgentID | getAgentID () const |
| void | configure (const std::vector< transports::Configuration > &configurations) |
| void | activateTransports (const std::vector< std::string > &transports) |
| void | activateTransports (transports::Transport::Type flags) |
| void | activateTransport (transports::Transport::Type type) |
| std::vector< fipa::services::ServiceLocation > | getTransportEndpoints () const |
| void | handle (fipa::acl::Letter &msg) |
| void | handleError (const fipa::acl::Letter &msg) const |
| void | registerMessageTransport (const std::string &id, MessageTransportHandler handler) |
| void | deregisterMessageTransport (const std::string &id) |
| void | modifyMessageTransport (const std::string &id, MessageTransportHandler handler) |
| bool | handleInternalCommunication (const fipa::acl::Letter &letter) |
| void | setInternalMessageRepresentationType (const fipa::acl::representation::Type &representation) |
| fipa::acl::representation::Type | getInternalMessageRepresentationType () const |
| void | trigger () |
| std::string | getServiceSignature () const |
| void | addAcceptedServiceSignature (const std::string &signature) |
| ServiceDirectory::Ptr | getServiceDirectory () |
| void | registerClient (const std::string &clientName, const std::string &clientDescription) |
| void | deregisterClient (const std::string &clientName) |
| std::string | serializeLetter (const fipa::acl::Letter &letter, const std::string &signature) const |
Service responsible for handling FIPA message and managing the forwarding and relaying.
Usage example of the MessageTransport class
#include <iostream>
class CustomMessageTransport
{
public:
bool deliverForwardLetter(const std::string& receiverName, const fipa::acl::Letter& letter)
{
fipa::acl::ACLMessage msg = letter.getACLMessage();
std::cout << msg.getContent() << std::endl;
// List of agents which could not be delivery to
return fipa::acl::AgentIDList();
}
};
#include <fipa_services/FipaServices.hpp>
#include <boost/bind.hpp>
using fipa::acl::message_transport;
MessageTransport mts("my-mts");
mts.registerMessageTransport("custom-transport", boost::bind(&CustomTransport::deliverForwardLetter, this, _1,_2));
...
// Some letter from somewhere, here just manually constructed
using fipa::acl;
ACLMessage msg;
msg.setSender( AgentID("my-agent") );
Letter letter( msg, representation::BITEFFICIENT );
...
mts.handle(letter);
... | fipa::services::message_transport::MessageTransport::MessageTransport | ( | const fipa::acl::AgentID & | id, |
| ServiceDirectory::Ptr | serviceDirectory | ||
| ) |
Constructor for MessageTransport.
| id | Agent id for this message transport for registered agents) |
| void fipa::services::message_transport::MessageTransport::activateTransport | ( | transports::Transport::Type | type | ) |
Activate a transport given by type This start the transport
| std::runtime_error | when a transport has already been activated |
| void fipa::services::message_transport::MessageTransport::activateTransports | ( | const std::vector< std::string > & | transports | ) |
Activate the given transports
| list | of transports that shall be activated – names need to corresponding to inbuilt transports |
| std::runtime_error | when a transport has already been activated |
| void fipa::services::message_transport::MessageTransport::activateTransports | ( | transports::Transport::Type | flags | ) |
Activate transports as indicated by flags,e.g.
MessageTransport mt = MessageTransport( AgentID("agent"), ServiceDirectory::Ptr( new ServiceDirectory()));
mt.activateTransports( transports::Transport::UDT | transports::Transport::TCP );
| std::runtime_error | when a transport has already been activated |
|
inline |
Service signature are part of the locator which is stored in the ServiceDirectory. The MessageTransport handles only services with service signature that are 'accepted'. This adds the given signature to the whitelist of accepted signatures.
| signature | Service signature |
|
inline |
| void fipa::services::message_transport::MessageTransport::deregisterClient | ( | const std::string & | clientName | ) |
Allows to register a client which is added to the service directory accordingly
| clientName | Name of client to deregister |
| fipa::services::NotFound | when client could not be found |
| void fipa::services::message_transport::MessageTransport::deregisterMessageTransport | ( | const std::string & | id | ) |
Deregister a MessageTransportHandler
| Duplicate |
|
inline |
|
inline |
Get type of the internal message representation
|
inline |
Get the service directory that is associated with this MessageTransport
|
inline |
Get the service signature of the MessageTransport
| std::vector< fipa::services::ServiceLocation > fipa::services::message_transport::MessageTransport::getTransportEndpoints | ( | ) | const |
Get the endpoints of the inbuilt transports
| void fipa::services::message_transport::MessageTransport::handle | ( | fipa::acl::Letter & | msg | ) |
Handle message, i.e. check forward – create and internal ticket (based on the conversation id and interprete error messages correctly)
| void fipa::services::message_transport::MessageTransport::handleError | ( | const fipa::acl::Letter & | msg | ) | const |
Handle error, i.e. generate an error message from the original message
| bool fipa::services::message_transport::MessageTransport::handleInternalCommunication | ( | const fipa::acl::Letter & | letter | ) |
Handle an internal communication, i.e. for exchange of information between two message transport services
| void fipa::services::message_transport::MessageTransport::modifyMessageTransport | ( | const std::string & | id, |
| MessageTransportHandler | handler | ||
| ) |
Modify existing MessageTransportHandler
| Duplicate |
| void fipa::services::message_transport::MessageTransport::registerClient | ( | const std::string & | clientName, |
| const std::string & | clientDescription | ||
| ) |
Allows to register a client which is added to the service directory accordingly Locators of this client will be set according to the activated transports
| clientName | Name of client to register |
| clientDescription | Description of client to register |
| void fipa::services::message_transport::MessageTransport::registerMessageTransport | ( | const std::string & | id, |
| MessageTransportHandler | handler | ||
| ) |
Register a TransportHandler (the order of registration determines the priority) for local (!) delivery
| Duplicate |
| std::string fipa::services::message_transport::MessageTransport::serializeLetter | ( | const fipa::acl::Letter & | letter, |
| const std::string & | signature | ||
| ) | const |
Serialize letter according to requirement of the signature
|
inline |
Set the internal message representation type
| message | representation |
| void fipa::services::message_transport::MessageTransport::trigger | ( | ) |
Trigger the MessageTransport and all associated underlying transports to process messages and establishing connections
1.8.13