diff options
Diffstat (limited to 'src/usr/diag/prdf/common/framework/resolution/iipResolution.C')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/resolution/iipResolution.C | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/src/usr/diag/prdf/common/framework/resolution/iipResolution.C b/src/usr/diag/prdf/common/framework/resolution/iipResolution.C index 2aa11b790..ae73bcd9e 100755 --- a/src/usr/diag/prdf/common/framework/resolution/iipResolution.C +++ b/src/usr/diag/prdf/common/framework/resolution/iipResolution.C @@ -228,43 +228,53 @@ int32_t CalloutConnected::Resolve( STEP_CODE_DATA_STRUCT & io_serviceData ) { using namespace TARGETING; - TargetHandle_t sourceTrgt = ServiceDataCollector::getTargetAnalyzed(); - TargetHandle_t connTrgt = NULL; - - TargetHandleList list = getConnected( sourceTrgt, iv_targetType ); + TargetHandle_t sourceTrgt = ServiceDataCollector::getTargetAnalyzed(); + TargetHandle_t connTrgt = NULL; + TargetHandle_t srcEndPoint = NULL; - if ( 0xffffffff == iv_idx ) - { - if ( 0 < list.size() ) - connTrgt = list[0]; - } - else + if(TYPE_NA == iv_peerConnType) { - for (TargetHandleList::iterator i = list.begin(); i != list.end(); i++) + TargetHandleList list = getConnected( sourceTrgt, iv_targetType ); + + if ( 0xffffffff == iv_idx ) { - if ( iv_idx == getTargetPosition(*i) ) + if ( 0 < list.size() ) + connTrgt = list[0]; + } + else + { + for (TargetHandleList::iterator i = list.begin(); + i != list.end(); + i++) { - connTrgt = *i; - break; + if ( iv_idx == getTargetPosition(*i) ) + { + connTrgt = *i; + break; + } } } } + else + { + srcEndPoint = getConnectedChild( sourceTrgt, iv_peerConnType, iv_idx ); + + if ( NULL != srcEndPoint ) + connTrgt = getConnectedPeerTarget( srcEndPoint ); + } if ( NULL != connTrgt ) - { io_serviceData.service_data->SetCallout( connTrgt, iv_priority ); - } else { if ( NULL != iv_altResolution ) - { iv_altResolution->Resolve( io_serviceData ); - } else { - PRDF_ERR( "[CalloutConnected::Resolve] No connected chip found: " - "sourceTrgt=0x%08x iv_targetType=0x%x", - getHuid(sourceTrgt), iv_targetType ); + PRDF_ERR( "[CalloutConnected::Resolve] No connected chip found:" + " sourceTrgt=0x%08x, iv_peerConnType=0x%x", + getHuid(sourceTrgt), iv_peerConnType); + io_serviceData.service_data->SetCallout( sourceTrgt ); } } |