Ignore:
Timestamp:
Jun 19, 2013, 11:05:49 AM (11 years ago)
Author:
hock@…
Message:

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:
1 edited

Legend:

Unmodified
Added
Removed
  • source/ariba/SideportListener.cpp

    r7468 r12060  
    4141#include "ariba/overlay/BaseOverlay.h"
    4242#include "ariba/overlay/LinkDescriptor.h"
    43 #include "ariba/utility/addressing/endpoint_set.hpp"
     43#include "ariba/utility/addressing2/tcpip_endpoint.hpp"
    4444
    4545using ariba::overlay::LinkDescriptor;
     
    130130        if( overlay == NULL ) return (Protocol)ret;
    131131
    132         using namespace ariba::addressing;
    133 
    134132        LinkDescriptor* link = NULL;
    135133        BOOST_FOREACH( LinkDescriptor* lnk, overlay->links ){
     
    147145        if(bclink.isUnspecified() || bclink.remoteLocator == NULL) return (Protocol)ret;
    148146
    149         const address_v* locator = bclink.remoteLocator;
     147        addressing2::EndpointPtr locator = bclink.remoteLocator;
    150148
    151         if( locator->instanceof<tcpip_endpoint>() ){
    152                 tcpip_endpoint tcpip = *locator;
    153 
    154                 if( tcpip.address().is_v4() || tcpip.address().is_v4_mapped() ){
     149        if( locator->get_category() == addressing2::endpoint_category::TCPIP )
     150        {
     151        boost::shared_ptr<addressing2::tcpip_endpoint> endp =
     152                boost::dynamic_pointer_cast<addressing2::tcpip_endpoint>(locator);
     153           
     154                if( endp->to_asio().address().is_v4() )
     155                {
    155156                        ret = SideportListener::ipv4;
    156                 }else if( tcpip.address().is_v6() ){
     157                }else {
    157158                        ret = SideportListener::ipv6;
    158159                }
    159160
    160         }else if( locator->instanceof<rfcomm_endpoint>() ){
     161        }else if( locator->get_category() == addressing2::endpoint_category::BLUETOOTH ){
    161162                ret = SideportListener::rfcomm;
    162163        }
Note: See TracChangeset for help on using the changeset viewer.