source: source/ariba/utility/transport/interfaces/transport_connection.hpp@ 12774

Last change on this file since 12774 was 12060, checked in by hock@…, 11 years ago

Reintegrate branch: 20130111-hock-message_classes

improvements:

  • new message classes (reboost, zero-copy)
  • "fast path" for direct links (skip overlay layer)
  • link-properties accessible from the application
  • SystemQueue can call boost::bind functions
  • protlib compatibility removed (32bit overhead saved in every message)
  • addressing2
  • AddressDiscovery discoveres only addresses on which we're actually listening
  • ariba serialization usage reduced (sill used in OverlayMsg)
  • Node::connect, easier and cleaner interface to start-up ariba from the application
  • ariba configs via JSON, XML, etc (boost::property_tree)
  • keep-alive overhead greatly reduced
  • (relayed) overlay links can actually be closed now
  • lost messages are detected in most cases
  • notification to the application when link is transformed into direct-link
  • overlay routing: send message to second best hop if it would be dropped otherwise
  • SequenceNumbers (only mechanisms, so for: upward compatibility)
  • various small fixes


regressions:

  • bluetooth is not yet working again
  • bootstrap modules deactivated
  • liblog4xx is not working (use cout-logging)

This patch brings great performance and stability improvements at cost of backward compatibility.
Also bluetooth and the bootstrap modules have not been ported to the new interfaces, yet.

File size: 1.5 KB
Line 
1#ifndef TRANSPORT_CONNECTION_HPP
2#define TRANSPORT_CONNECTION_HPP
3
4// ariba
5#include "ariba/utility/transport/messages/message.hpp"
6#include "ariba/utility/addressing2/endpoint.hpp"
7
8#include <vector>
9#include <boost/shared_ptr.hpp>
10
11namespace ariba {
12
13// forward declaration
14namespace utility {
15 class LinkID;
16}
17
18
19namespace transport {
20
21class transport_connection
22{
23public:
24 typedef boost::shared_ptr<transport_connection> sptr;
25
26 /// Allow deleting implementing classes by pointer
27 virtual ~transport_connection() {}
28
29 virtual bool send(reboost::message_t message, uint8_t priority = 1) = 0;
30
31 virtual ariba::addressing2::EndpointPtr getLocalEndpoint() = 0;
32 virtual ariba::addressing2::EndpointPtr getRemoteEndpoint() = 0;
33
34
35 /**
36 * Tells this transport_connection, that it's used by the given
37 * communication link.
38 */
39 virtual void register_communication_link(ariba::utility::LinkID* link) = 0;
40
41 /**
42 * Tells this transport_connection, that it's no longer used by the given
43 * communication link.
44 *
45 * A transport_connection may terminate itself, when it's no longer used by
46 * any communication link.
47 */
48 virtual void unregister_communication_link(ariba::utility::LinkID* link) = 0;
49
50 /**
51 * @return A vector of all registered communication links.
52 */
53 virtual std::vector<ariba::utility::LinkID*> get_communication_links() = 0;
54
55 virtual void terminate() = 0;
56};
57
58} /* namespace transport */
59} /* namespace ariba */
60#endif /* TRANSPORT_CONNECTION_HPP */
Note: See TracBrowser for help on using the repository browser.