fipa_services
TCPTransport.hpp
Go to the documentation of this file.
1 #ifndef FIPA_SERVICES_TRANSPORTS_TCP_TCP_TRANSPORT_HPP
2 #define FIPA_SERVICES_TRANSPORTS_TCP_TCP_TRANSPORT_HPP
3 
4 #include <fipa_services/MessageTransport.hpp>
5 #include <fipa_services/DistributedServiceDirectory.hpp>
6 #include <fipa_acl/fipa_acl.h>
7 #include "../Transport.hpp"
8 
9 #include <boost/asio/io_service.hpp>
10 #include <boost/asio/ip/tcp.hpp>
11 
12 namespace fipa {
13 namespace services {
14 namespace transports {
15 namespace tcp {
16 
20 class TCPTransport : public Transport
21 {
22  friend class OutgoingConnection;
23 
24  typedef boost::shared_ptr<boost::asio::ip::tcp::socket> SocketPtr;
25 
26  static boost::asio::io_service msIOService;
27  boost::asio::ip::tcp::acceptor mAcceptor;
28 
29  // List of connected clients
30  std::vector<SocketPtr> mClients;
31 
36  uint16_t getPort() const;
37 
42  void accept();
43 
44  /*
45  * Reads from one socket, until the connection is closed by the other side.
46  * All read envelopes are dispatched directly.
47  * The read method deletes the socket after having finished.
48  */
49  bool read(SocketPtr socket);
50 
51 protected:
55  static boost::asio::io_service& getIOService();
56 
57 public:
61  TCPTransport();
62  ~TCPTransport();
63 
68  virtual void start();
69 
74  void listen(uint16_t port = 0);
75 
80  void update(bool readAllMessages);
81 
86  Address getAddress(const std::string& interfaceName = "eth0") const;
87 
93 
94 };
95 
96 } // end namespace tcp
97 } // end namespace transports
98 } // end namespace services
99 } // end namespace fipa
100 #endif // FIPA_SERVICES_TRANSPORTS_TCP_TCP_TRANSPORT_HPP
A unidirectional, outgoing tcp connection that allows to send fipa letter to a receiver.
Definition: OutgoingConnection.hpp:16
Connection management base class.
Definition: Transport.hpp:24
boost::shared_ptr< OutgoingConnection > Ptr
Definition: OutgoingConnection.hpp:18
virtual void start()
Definition: TCPTransport.cpp:42
void update(bool readAllMessages)
Definition: TCPTransport.cpp:47
Communication address specified by IP, port, and protocol.
Definition: Address.hpp:15
TCPTransport()
Definition: TCPTransport.cpp:33
~TCPTransport()
Definition: TCPTransport.cpp:39
Address getAddress(const std::string &interfaceName="eth0") const
Definition: TCPTransport.cpp:95
virtual OutgoingConnection::Ptr establishOutgoingConnection(const Address &address)
Definition: TCPTransport.cpp:196
static boost::asio::io_service & getIOService()
Definition: TCPTransport.cpp:28
void listen(uint16_t port=0)
Definition: TCPTransport.cpp:110
Definition: DistributedServiceDirectory.cpp:5
Definition: TCPTransport.hpp:20