// --------------------------------------------------------------------------- // 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; }
// creates a connection and destroys it again enum TVerdict TE_RConnectionTest302::doTestStepL(void) { TInt err; RConnection activeConn; RConnection conn; RConnection conn2; RSocketServ ss; TUint numOfConnections; TPckgBuf<TConnectionInfo> connInfo; TRequestStatus status; TInterfaceNotificationBuf info; err = OpenSocketServer(ss); TESTEL(KErrNone == err, err); CleanupClosePushL(ss); err = OpenConnection(conn, ss); TESTEL(KErrNone == err, err); CleanupClosePushL(conn); err = OpenConnection(conn2, ss); TESTEL(KErrNone == err, err); CleanupClosePushL(conn2); err = OpenConnection(activeConn, ss); TESTEL(KErrNone == err, err); CleanupClosePushL(activeConn); err = StartConnectionWithOverrides(conn, 1); TESTEL(KErrNone == err, err); // need to call Enumerate() before GetConnectionInfo() to set up array used there err = EnumerateConnections(conn, numOfConnections); TESTEL(KErrNone == err, err); TESTEL(1 == numOfConnections, numOfConnections); err = conn.GetConnectionInfo(1, connInfo); TESTEL(KErrNone == err, err); err = AttachNormal(conn2, connInfo); TESTEL(KErrNone == err, err); // issue request AllInterfaceNotification(conn2, status, info); // start another different connection to complete request if it hasn't already done so err = StartConnectionWithOverrides(activeConn, 6); TESTEL(KErrNone == err, err); // wait for completion User::WaitForRequest(status); // check for correct value TESTEL(status.Int() == KErrInUse, status.Int()); CloseConnection(activeConn); CleanupStack::Pop(); CloseConnection(conn2); CleanupStack::Pop(); CloseConnection(conn); CleanupStack::Pop(); CloseSocketServer(ss); CleanupStack::Pop(); return TestStepResult(); } // TE_RConnectionTest302