source: source/ariba/utility/transport/interfaces/transport_protocol.hpp@ 12060

Last change on this file since 12060 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.3 KB
Line 
1#ifndef TRANSPORT_PROTOCOL_HPP_
2#define TRANSPORT_PROTOCOL_HPP_
3
4// ariba
5#include "ariba/utility/addressing2/endpoint_set.hpp"
6#include "ariba/utility/transport/messages/message.hpp"
7
8// ariba interfaces
9#include "transport_listener.hpp"
10
11// namespace ariba::transport
12namespace ariba {
13namespace transport {
14
15struct system_priority {
16 enum SEND_PRIORITY_INTERNAL {
17 HIGHEST = 0,
18 HIGH = 1,
19 ON_IDLE = 7
20 };
21
22 static const SEND_PRIORITY_INTERNAL OVERLAY = HIGHEST;
23};
24
25
26
27/**
28 * TODO: Doc
29 *
30 * @author Sebastian Mies <mies@tm.uka.de>, Mario Hock
31 */
32class transport_protocol {
33public:
34 /// Allow deleting implementing classes by pointer
35 virtual ~transport_protocol() {}
36
37 virtual void start() = 0;
38 virtual void stop() = 0;
39
40 /**
41 * @returns whether this connection is assumed to be valid
42 */
43 virtual void send(
44 const addressing2::const_EndpointSetPtr endpoints,
45 reboost::message_t message,
46 uint8_t priority = system_priority::HIGH) = 0;
47
48 /// @deprecated: Use terminate() from transport_connection instead
49// virtual void terminate( const address_v* remote ) = 0;
50
51 virtual void register_listener( transport_listener* listener ) = 0;
52};
53
54}} // namespace ariba::transport
55
56#endif /* TRANSPORT_PROTOCOL_HPP_ */
Note: See TracBrowser for help on using the repository browser.