void UT_CNATFWStunConnectionHandler::UT_CNATFWStunConnectionHandler_GetConnectionIdLL(  )
    {
    // Matching candidate
    CNATFWCandidate* candidate = CNATFWCandidate::NewL();
    CleanupStack::PushL( candidate );
    candidate->SetStreamId( 222 );
    candidate->SetType( CNATFWCandidate::EServerReflexive );
    candidate->SetBase( KInetAddrAny );
    candidate->SetTransportAddrL( KInetAddrAny );
    
    // Non-matching candidate
    CNATFWCandidate* candidate2 = CNATFWCandidate::NewL();
    CleanupStack::PushL( candidate2 );
    candidate2->SetStreamId( 222 );
    
    // create STUN Client
    iConnHandler->TryNextServerL();
    // Store stream ID and create connection to array
    iConnHandler->FetchCandidateL( iStreamId, 0, KAFUnspec, KAFUnspec );
    iConnHandler->iStreamArray[0].iConnArray[0].iConnectionId = 2;
    iConnHandler->iStreamArray[0].iConnArray[0].iLocalCandidate = candidate;
    
    TUint connectionId( 0 );
    EUNIT_ASSERT_LEAVE( iConnHandler->GetConnectionIdL( *candidate2, 222, connectionId ) );
    
    connectionId = 0;
    NATFW_EUNIT_ASSERT_NO_LEAVE( iConnHandler->GetConnectionIdL(
        *candidate, 222, connectionId ) );
    
    CleanupStack::PopAndDestroy();
    CleanupStack::PopAndDestroy();
    }
void UT_CNATFWStunConnectionHandler::UT_CNATFWStunConnectionHandler_ConnectionByIdL(  )
    {
    // create STUN Client
    iConnHandler->TryNextServerL();
    // Store stream ID and create connection to array
    iConnHandler->FetchCandidateL( iStreamId, 0, KAFUnspec, KAFUnspec );
    TUint streamIndex( 0 );
    TUint connectionId( 3 );
    
    TConnectionData* connection = iConnHandler->ConnectionById(
        streamIndex, connectionId );
    
    if ( connection )
        {
        EUNIT_ASSERT( EFalse );
        }
    
    connectionId = 2;
    
    connection = iConnHandler->ConnectionById( streamIndex, connectionId );
    
    if ( !connection )
        {
        EUNIT_ASSERT( EFalse );
        }
    }
void UT_CIceHostResolver::UT_CICEHostResolver_GetConnectionIdLL()
{
    UT_CICEHostResolver_FetchCandidateLL();

    // test with host, stun & relay candidates
    TInt hostCandidateInd( KErrNotFound );
    TUint connectionId( 0 );
    for ( TInt i(0); i < iLocalCandidates.Count(); ++i )
    {
        if ( TIceTestUtils::AllocTestEnabled() )
        {
            iResolver->GetConnectionIdL(
                *iLocalCandidates[i], connectionId );
        }
        else
        {
            if ( CNATFWCandidate::EHost == iLocalCandidates[i]->Type() )
            {
                hostCandidateInd = i;
                EUNIT_ASSERT_NO_LEAVE( iResolver->GetConnectionIdL(
                                           *iLocalCandidates[i], connectionId ) );
            }
            else
            {
                EUNIT_ASSERT_SPECIFIC_LEAVE( iResolver->GetConnectionIdL(
                                                 *iLocalCandidates[i], connectionId ), KErrNotFound );
            }
        }
    }

    // test with peer reflexive candidate
    if ( KErrNotFound != hostCandidateInd )
    {
        CNATFWCandidate* peerCandidate
            = CNATFWCandidate::NewLC( *iLocalCandidates[hostCandidateInd] );
        peerCandidate->SetType( CNATFWCandidate::EPeerReflexive );

        if ( TIceTestUtils::AllocTestEnabled() )
        {
            iResolver->GetConnectionIdL( *peerCandidate,
                                         connectionId );
        }
        else
        {
            EUNIT_ASSERT_NO_LEAVE(
                iResolver->GetConnectionIdL( *peerCandidate, connectionId ) );
        }

        CleanupStack::PopAndDestroy( peerCandidate );
    }
}
void NodeGraphNodeConnector::visit( he::io::StructuredVisitor* const visitor )
{
    if (m_Type == eNodeGraphNodeConnectorType_Input)
    {
        if (visitor->enterNode(m_Id))
        {
            if (visitor->isReading())
                disconnectAll();
            visitor->visitCustomList<NodeGraphNodeConnector*>(he::HEFS::strConnections, m_Connections, 
            [this](he::io::StructuredVisitor* visitor, size_t /*index*/, NodeGraphNodeConnector*& val)
            {
                he::Guid nodeId(val->m_Parent->getParent()->getGuid());
                if (visitor->visit(HSFS::strNodeID, nodeId))
                {
                    he::FixedString connectionId(val->getId());
                    if (visitor->visit(HSFS::strConnectionID, connectionId))
                    {
                        if (visitor->isReading())
                        {
                            NodeGraphNode* node(m_Parent->getParent()->getParent()->getNode(nodeId));
                            if (node)
                            {
                                node->getAttachments().forEach([this, &connectionId](NodeGraphNodeAttachment* att)
                                {
                                    NodeGraphNodeConnector* connector(att->getNodeConnector());
                                    if (connector && connector->getId() == connectionId)
                                    {
                                        connector->connect(this);
                                    }
                                });
                            }
                        }
                    }
                }
            });
            visitor->exitNode(m_Id);
        }
    }
}