| 
            Last change
 on this file since 12767 was             12060, checked in by hock@…, 12 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.