fipa_services
MessageTransportTask.hpp
Go to the documentation of this file.
1 /* Generated from orogen/lib/orogen/templates/tasks/Task.hpp */
2 
3 #ifndef FIPA_SERVICES_MESSAGETRANSPORT_TASK_HPP
4 #define FIPA_SERVICES_MESSAGETRANSPORT_TASK_HPP
5 
6 #include "fipa_services/MessageTransportTaskBase.hpp"
7 
8 #include <map>
9 #include <vector>
10 #include <boost/thread.hpp>
11 #include <service_discovery/ServiceDiscovery.hpp>
12 #include <fipa_services/ServiceDirectoryEntry.hpp>
13 
14 namespace fipa {
15 namespace services {
16  class Transport;
17 
18  namespace message_transport {
19  class MessageTransport;
20  }
21 
22 } // namespace service
23 } // namespace fipa
24 
25 namespace fipa_services {
26 
63  class MessageTransportTask : public MessageTransportTaskBase
64  {
65  friend class MessageTransportTaskBase;
66  protected:
67  mutable boost::mutex mConnectToMTSMutex;
68  mutable boost::shared_mutex mServiceChangeMutex;
69 
70  fipa::services::message_transport::MessageTransport* mMessageTransport;
71 
72  std::string mInterface;
73  std::string mClientServiceType;
74 
75  // Service directory entries of other agents (where mDNS is not supported).
76  // They will be all registered with the DSD.
77  std::vector<fipa::services::ServiceDirectoryEntry> mExtraServiceDirectoryEntries;
78 
79  // Receiver ports for receivers that have been attached via the given operation
80  typedef std::map<std::string, RTT::base::OutputPortInterface*> ReceiverPorts;
81  ReceiverPorts mReceivers;
82 
83  /* Upon adding of a receiver, a new output port for this receiver is generated. Output port will be of receivers name (if successful)
84  */
85  virtual bool addReceiver(::std::string const & receiver, bool is_local = false);
86 
87  /* Retrieve list of currently attached receivers
88  */
89  virtual ::std::vector< ::std::string > getReceivers();
90 
91  /* Upon removal of a receiver, the corresponding output port is removed
92  */
93  virtual bool removeReceiver(::std::string const & receiver);
94 
100  bool addReceiverPort(RTT::base::OutputPortInterface* outputPort, const std::string& name);
101 
106  bool removeReceiverPort(const std::string& name);
107 
111  void registerService(std::string receiver);
115  void deregisterService(std::string receiver);
116 
120  void serviceAdded(servicediscovery::avahi::ServiceEvent event);
121 
125  void serviceRemoved(servicediscovery::avahi::ServiceEvent event);
126 
130  void connectToMTS(const std::string& serviceName, const std::string& ior);
131 
132  /*
133  * Local delivery to an output port
134  */
135  bool deliverLetterLocally(const std::string& receiverName, const fipa::acl::Letter& letter);
136 
140  void initializeMessageTransport();
141 
142  public:
147  MessageTransportTask(std::string const& name = "fipa_services::MessageTransportTask");
148 
154  MessageTransportTask(std::string const& name, RTT::ExecutionEngine* engine);
155 
159 
174  bool configureHook();
175 
181  bool startHook();
182 
197  void updateHook();
198 
205  void errorHook();
206 
210  void stopHook();
211 
216  void cleanupHook();
217  };
218 }
219 
220 #endif
221 
The task context provides and requires services. It uses an ExecutionEngine to perform its functions...
Definition: MessageTransportTask.hpp:63
Definition: EchoTask.hpp:8
ReceiverPorts mReceivers
Definition: MessageTransportTask.hpp:81
std::string mInterface
Definition: MessageTransportTask.hpp:72
boost::mutex mConnectToMTSMutex
Definition: MessageTransportTask.hpp:67
fipa::services::message_transport::MessageTransport * mMessageTransport
Prevents a simulatenous change of the service.
Definition: MessageTransportTask.hpp:70
std::string mClientServiceType
Definition: MessageTransportTask.hpp:73
boost::shared_mutex mServiceChangeMutex
Definition: MessageTransportTask.hpp:68
std::vector< fipa::services::ServiceDirectoryEntry > mExtraServiceDirectoryEntries
Definition: MessageTransportTask.hpp:77
Definition: MessageTransportTask.hpp:14
std::map< std::string, RTT::base::OutputPortInterface * > ReceiverPorts
Definition: MessageTransportTask.hpp:80