wlanutilities/wlansniffer/wlaninfo/src/wsfwlaninfoarray.cpp
branchRCL_3
changeset 24 63be7eb3fc78
parent 23 b852595f5cbe
child 25 f28ada11abbf
--- a/wlanutilities/wlansniffer/wlaninfo/src/wsfwlaninfoarray.cpp	Thu Aug 19 10:59:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,517 +0,0 @@
-/*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CWsfWlanInfoArray
-*
-*/
-
-
-
-//  EXTERNAL INCLUDES
-#include <s32mem.h>
-
-
-//  CLASS HEADER
-#include "wsfwlaninfoarray.h"
-
-
-//  INTERNAL INCLUDES
-#include "wsfwlaninfoarraysortkey.h"
-#include "wsfwlaninfoarrayfiltervisitor.h"
-
-
-using namespace CMManager;
-
-//  LOCAL DEFINITIONS
-static const TUint KInfoArrayGranuality = 10;    
-
-    
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::NewL
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C CWsfWlanInfoArray* CWsfWlanInfoArray::NewL()
-	{
-	CWsfWlanInfoArray* thisPtr = NewLC();
-	CleanupStack::Pop( thisPtr );
-	return thisPtr; 
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::NewLC
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C CWsfWlanInfoArray* CWsfWlanInfoArray::NewLC()
-	{
-	CWsfWlanInfoArray* thisPtr = new ( ELeave ) CWsfWlanInfoArray();
-	CleanupStack::PushL( thisPtr );
-	thisPtr->ConstructL();
-	return thisPtr;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::~CWsfWlanInfoArray
-// ---------------------------------------------------------------------------
-//    
-CWsfWlanInfoArray::~CWsfWlanInfoArray()
-	{
-	if ( iInfoArray )
-		{
-		iInfoArray->ResetAndDestroy();
-    	delete iInfoArray;		
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::CWsfWlanInfoArray
-// ---------------------------------------------------------------------------
-//    
-CWsfWlanInfoArray::CWsfWlanInfoArray() :
-    iUIPrioritySort( EFalse )
-	{
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::ConstructL
-// ---------------------------------------------------------------------------
-//    
-void CWsfWlanInfoArray::ConstructL()
-	{
-	iInfoArray = new (ELeave) CArrayPtrFlat<TWsfWlanInfo>( 
-	                                                    KInfoArrayGranuality );
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::Reset
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::Reset()
-	{
-	iInfoArray->ResetAndDestroy();
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::Count
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TUint CWsfWlanInfoArray::Count()
-	{
-	return iInfoArray->Count();	
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::AppendL
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::AppendL( TWsfWlanInfo* aWlanInfo )
-	{
-    iInfoArray->AppendL( aWlanInfo );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::At
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TWsfWlanInfo* CWsfWlanInfoArray::At( TInt aIndex ) const
-    {
-    TWsfWlanInfo* temp( NULL );
-    TInt count = iInfoArray->Count();
-    
-    if ( count && ( aIndex < count ) )
-        {
-        temp = ( *iInfoArray )[aIndex];
-        } 
-    return temp;
-    }    
-    
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::Delete
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::Delete( TWsfWlanInfo* aWlanInfo )
-	{
-	TInt count = iInfoArray->Count();
-    
-    for( TInt i = 0; i < count; ++i )
-        {
-        if ( ( *iInfoArray )[i] == aWlanInfo )
-            {
-            delete ( *iInfoArray )[i];
-            iInfoArray->Delete( i );
-            iInfoArray->Compress();
-            break;
-            }
-        }
-
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::GetArrayIndex
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TInt CWsfWlanInfoArray::GetArrayIndex( TWsfWlanInfo* aWlanInfo ) const
-	{
-	TBool found( EFalse );
-    TInt index( 0 );
-    TWsfWlanInfo* temp;
-    TInt count = iInfoArray->Count();
-
-    while( ( index <  count ) && !found  )
-        {
-        temp = ( *iInfoArray )[index]; 
-        if ( !temp->iSsid.Compare( aWlanInfo->iSsid ) )
-            {
-            found = ETrue;
-            }
-        else
-            {
-            ++index;            
-            }        
-        }
-    return ( found ? index : KErrNotFound );        
-	}	
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::operator[]
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TWsfWlanInfo* CWsfWlanInfoArray::operator[]( TUint aIndex ) const
-    {
-    return ( *iInfoArray )[aIndex];
-    }	
-    
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::Match
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TWsfWlanInfo* CWsfWlanInfoArray::Match( const TDesC8& aSsid, 
-                                                 const TInt aPriorThis )
-	{
-	TInt count = iInfoArray->Count();
-    TWsfWlanInfo* ret( NULL );
-
-    count = count < aPriorThis ? count: aPriorThis;
-
-    for( TInt i = 0; i < count; i++ )
-        {
-        TWsfWlanInfo* temp = ( *iInfoArray )[i]; 
-        if ( !temp->iSsid.Compare( aSsid ) )
-            {
-			ret = temp;
-			break;
-            }
-        }
-	return ret;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::Match
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TWsfWlanInfo* CWsfWlanInfoArray::Match( const TUint32 aIapID, 
-                                                 const TInt aPriorThis )
-    {
-    TInt count = iInfoArray->Count();
-    TWsfWlanInfo* ret( NULL );
-
-    count = count < aPriorThis ? count: aPriorThis;
-
-    for( TInt i = 0; i < count; i++ )
-        {
-        TWsfWlanInfo* temp = ( *iInfoArray )[i]; 
-        if ( temp->iIapId == aIapID )
-            {
-            ret = temp;
-            break;
-            }
-        }
-    return ret;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::MatchWithIapIDL
-// ---------------------------------------------------------------------------
-//      
-EXPORT_C void CWsfWlanInfoArray::MatchWithIapIDL( const TUint aIapID, 
-                                                   const TInt aPriorThis, 
-                                                   RPointerArray<TWsfWlanInfo>& aMatchArray )
-    {
-    aMatchArray.Reset();
-
-    TInt count = iInfoArray->Count();
-    TWsfWlanInfo* temp(NULL);
-
-    count = count < aPriorThis ? count: aPriorThis;
-
-    for( TInt i = 0; i < count ; i++ )
-        {
-        temp = ( *iInfoArray )[i]; 
-        if( temp->iIapId == aIapID )
-            {
-            aMatchArray.AppendL(temp);
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::MatchL
-// ---------------------------------------------------------------------------
-//    	
-EXPORT_C void CWsfWlanInfoArray::MatchL( const TDesC8& aSsid, 
-                                         CMManager::TWlanSecMode aSecMode, 
-                                         CMManager::TWlanNetMode aNetMode, 
-                                         TBool aUsesPreSharedKey,
-                                         const TInt aPriorThis, 
-                                         RPointerArray<TWsfWlanInfo>& aMatchArray )
-    {
-    aMatchArray.Reset();
-
-    TInt count = iInfoArray->Count();
-    TWsfWlanInfo* temp(NULL);
-
-    count = count < aPriorThis ? count: aPriorThis;
-
-    for( TInt i = 0; i < count ; i++ )
-        {
-        temp = ( *iInfoArray )[i]; 
-        if( !temp->iSsid.Compare( aSsid ) && temp->iSecurityMode == aSecMode  
-                && temp->iNetMode == aNetMode )
-            {
-            aMatchArray.AppendL(temp);
-            }
-        else if ( temp->iIapId && !temp->iSsid.Compare( aSsid ) 
-                    && temp->SecurityMode() == CMManager::EWlanSecMode802_1x 
-                    && temp->iNetMode == aNetMode )
-            {
-            if ( aSecMode == CMManager::EWlanSecModeOpen )
-                {
-                aMatchArray.AppendL(temp);
-                }
-            else if ( aSecMode == CMManager::EWlanSecModeWep )
-                {
-                aMatchArray.AppendL(temp);
-                }
-            else if ( aSecMode == CMManager::EWlanSecModeWpa 
-                        && !aUsesPreSharedKey )
-                {
-                aMatchArray.AppendL(temp);
-                }
-            else if ( aSecMode == CMManager::EWlanSecMode802_1x )
-                {
-                aMatchArray.AppendL(temp);
-                }
-            }
-        }
-    }
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::SerializeContentLC
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C HBufC8* CWsfWlanInfoArray::SerializeContentLC()
-	{
-	HBufC8* buffer( NULL );
-	
-	if ( !iInfoArray->Count() )
-		{
-		buffer = KNullDesC8().AllocLC();
-		}
-	else
-	    {
-    	TInt32 requiredBufferSize = sizeof( TUint32 ) + 
-    	                          iInfoArray->Count() * sizeof( TWsfWlanInfo );
-    	buffer = HBufC8::NewLC( requiredBufferSize );
-    	
-    	// create a stream..
-    	TPtr8 bufferPtr = buffer->Des();
-    	RDesWriteStream writeStream( bufferPtr );
-    	writeStream.Open( bufferPtr);
-    	CleanupClosePushL( writeStream );
-    	writeStream.WriteInt16L( iInfoArray->Count() );
-    	TWsfWlanInfo* infoPtr = NULL;
-     	for ( TInt i( 0 ); i < iInfoArray->Count(); i++)
-     		{
-     		infoPtr = ( *iInfoArray )[i]; 
-     		writeStream << *infoPtr;	
-     		}
-     	writeStream.CommitL();
-     	// try to realloc - save space realloc to required level..
-     	TStreamPos position = writeStream.Sink()->TellL( MStreamBuf::EWrite );
-     
-        CleanupStack::PopAndDestroy( &writeStream ); // closes the stream
-     	CleanupStack::Pop( buffer );
-     	HBufC8* newBuffer = buffer->ReAlloc( position.Offset() );
-    	if ( newBuffer ) // the realloc succeeded - swap the buffer 
-    		{
-    		buffer = newBuffer;
-    		}
-    	CleanupStack::PushL( buffer);		
-	    }
-
- 	return buffer;
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::AppendFromStreamBufferL
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TInt CWsfWlanInfoArray::AppendFromStreamBufferL( 
-                                                  const TDesC8& aStreamBuffer )
-	{
-	RDesReadStream reader( aStreamBuffer );
-	reader.Open( aStreamBuffer ); // codescanner false alarm
-	// ignoring Open() return value.. Open returns void
-	CleanupClosePushL( reader );
-	
-	TInt infoCount = reader.ReadInt16L();
-	
-	TWsfWlanInfo *infoPtr = NULL;
-	for ( TInt i(0); i < infoCount; i++ )
-		{
-		infoPtr = new (ELeave)TWsfWlanInfo;
-		CleanupStack::PushL( infoPtr );
-		reader >> *infoPtr;
-		AppendL( infoPtr );
-		CleanupStack::Pop( infoPtr );
-		}
-
-	CleanupStack::PopAndDestroy( &reader ); 
-	return Count();
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::FindHiddenEntry
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TWsfWlanInfo* CWsfWlanInfoArray::FindHiddenEntry( 
-                                                        const TInt aPriorThis )
-	{
-	TInt count = iInfoArray->Count();
-    TWsfWlanInfo* ret( NULL );
-    count = count < aPriorThis ? count : aPriorThis; 
-    
-    for ( TInt i = 0; i < count; ++i )
-        {
-        TWsfWlanInfo* temp = ( *iInfoArray )[i]; 
-        if ( !temp->iVisibility )
-            {
-			ret = temp;
-			break;
-            }
-        }
-	return ret;
-	}
-	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::DeleteFromTail
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TInt CWsfWlanInfoArray::DeleteFromTail( const TInt aCount )
-	{
-	TInt arrayItemCount = iInfoArray->Count();
-
-	if ( aCount >= arrayItemCount )
-		{
-		iInfoArray->ResetAndDestroy();
-		}
-    else
-        {
-        --arrayItemCount;
-    	for ( TInt i( 1 ) ; i <= aCount; ++i, --arrayItemCount )
-    		{
-          	delete ( *iInfoArray )[arrayItemCount];
-            iInfoArray->Delete( arrayItemCount );
-    		}
-        iInfoArray->Compress();
-        }
-
-    return iInfoArray->Count();
-  	}
-  	
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::SortArrayL
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::SortArrayL()
-	{
-	if ( iInfoArray->Count() > 1 ) 
-		{
-        CWsfWlanInfoArraySortKey* sortKey = CWsfWlanInfoArraySortKey::NewLC( 
-                                                                       *this );
-
-        // Sort returns KErrGeneral if stack overflow, otherwise, returns
-        // KErrNone. So we will Leave only if stack overflow,
-        // but than that really does not matter...
-        User::LeaveIfError( iInfoArray->Sort( *sortKey ) );	
-
-        CleanupStack::PopAndDestroy( sortKey );
-		}			
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::SortArrayL
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::SortArrayL( 
-                                     MWsfWlanInfoArrayFilterVisitor& aSortKey )
-	{
-	// the visitor sortkey may do some other stuff too 
-	// so don't make any asumptions...
-	// just go for the sorting...
-	
-	aSortKey.FilterPreSortL( this );
-	
-	User::LeaveIfError( iInfoArray->Sort( aSortKey.SortingKey() ) );
-	
-	aSortKey.FilterPostSortL( this );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::SetUIPrioritySort
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C void CWsfWlanInfoArray::SetUIPrioritySort( const TBool aUIPrioritySort )
-    {
-    iUIPrioritySort = aUIPrioritySort;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CWsfWlanInfoArray::GetUIPrioritySort
-// ---------------------------------------------------------------------------
-//    
-EXPORT_C TBool CWsfWlanInfoArray::GetUIPrioritySort( )
-    {
-    return iUIPrioritySort;
-    }
-