void CRconn::RunL() { TUint count; TInt ret; DEBUG_INFO("CRconn::RunL err=%d\n", iStatus.Int()); if (KErrNone == iStatus.Int()) { udp_rconn_set(&iServ, &iConn); tcp_rconn_set(&iServ, &iConn); } /* Get the IAP id of the underlying interface of this RConnection */ TUint32 iapId = 0; ret = iConn.GetIntSetting(_L("IAP\\Id"), iapId); if (KErrNone == ret) { DEBUG_INFO("RConn: Using IAP=%u\n", iapId); } ret = iConn.EnumerateConnections(count); if (KErrNone != ret) { DEBUG_WARNING("EnumerateConnections: ret=%d\n", ret); } else { DEBUG_INFO("Enumerated connections: %u\n", count); } ch(kerr2errno(iStatus.Int()), iapId); }
// --------------------------------------------------------------------------- // CRoHandlerDMgrWrapper::PostResponseUrlL // --------------------------------------------------------------------------- // void CRoHandlerDMgrWrapper::PostResponseUrlL( const TDesC8& aPostResponseUrl ) { UpdateBufferL< HBufC8, TDesC8 >( iTriggerUrl, aPostResponseUrl ); if ( !iIapId ) { // Take AP from open conenction RSocketServ socketServer; TInt err( KErrNone ); err = socketServer.Connect(); RConnection myConnection; err = myConnection.Open( socketServer ); TUint connectionCount( 0 ); err = myConnection.EnumerateConnections( connectionCount ); if ( err != KErrNone || connectionCount < 1 ) { return; } TPckgBuf<TConnectionInfoV2> connectionInfo; err = myConnection.GetConnectionInfo( connectionCount, connectionInfo ); iIapId = connectionInfo().iIapId; myConnection.Close(); socketServer.Close(); } }
// ----------------------------------------------------------------------------- // CSIPApnConfigurationHandler::IsInUseL // ----------------------------------------------------------------------------- // TBool CSIPApnConfigurationHandler::IsInUseL( TConnectionInfo& aConnectionInfo ) { PROFILE_DEBUG1( "CSIPApnConfigurationHandler::IsInUseL()" ) TBool inUse( EFalse ); RConnection rcon; User::LeaveIfError( rcon.Open( iSocketSrv ) ); CleanupClosePushL( rcon ); TUint activeCount( 0 ); User::LeaveIfError( rcon.EnumerateConnections( activeCount ) ); if ( activeCount > 0 ) { // Indexing is unordinary for( TUint i = 1; i <= activeCount && !inUse; i++ ) { TPckgBuf<TConnectionInfoV2> connectionInfo; User::LeaveIfError( rcon.GetConnectionInfo( i, connectionInfo ) ); if ( connectionInfo().iIapId == iIapId ) { inUse = ETrue; aConnectionInfo = connectionInfo(); } } } CleanupStack::PopAndDestroy( &rcon ); PROFILE_DEBUG3( "CSIPApnConfigurationHandler::IsInUseL() inuse", inUse ) return inUse; }