Last change
on this file since 12351 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
|
Rev | 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
|
---|
| 12 | namespace ariba {
|
---|
| 13 | namespace transport {
|
---|
| 14 |
|
---|
| 15 | struct 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 | */
|
---|
| 32 | class transport_protocol {
|
---|
| 33 | public:
|
---|
| 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.