locationcentre/lcserver/src/lcserverengine.cpp
changeset 15 13ae750350c9
parent 0 522cd55cc3d7
child 17 0f22fb80ebba
--- a/locationcentre/lcserver/src/lcserverengine.cpp	Tue Feb 02 00:16:03 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,704 +0,0 @@
-/*
-* Copyright (c) 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:  Location Centre Server Engine Object.
-*
-*/
-
-
-// SYSTEM INCLUDES
-#include <s32mem.h>
-#include <e32std.h>
-
-// USER INCLUDES
-#include "lcserverengine.h"
-#include "lcregistry.h"
-#include "lcserverengineobserver.h"
-#include "lcserverinterface.h"
-#include "lcdebug.h"
-
-// CONSTANT DEFINTIONS
-const TUint32 KUidMaxValue = 0xFFFFFFFF;
-
-// ----- Member funtions for CLcServerEngine ---------------------------------
-
-// ---------------------------------------------------------------------------
-// CLcServerEngine::CLcServerEngine
-// ---------------------------------------------------------------------------
-//
-CLcServerEngine::CLcServerEngine( MLcServerEngineObserver&    aObserver )
-    :iObserver( aObserver )
-    {
-    // C++ Default constructor. No allocations or functions which can Leave
-    // should be called from here.
-    }
-         
-// ---------------------------------------------------------------------------
-// CLcServerEngine::~CLcServerEngine
-// ---------------------------------------------------------------------------
-//
-CLcServerEngine::~CLcServerEngine()
-    {
-    // C++ Destructor. Free all resources associated with this class.
-    
-    // Complete any outstanding messages if they exist and free all the
-    // associated resources
-    while ( iMessageArray.Count())
-        {
-        // Extract the IPC message handle from the Array
-        RMessage2* message = iMessageArray[0];
-        iMessageArray.Remove( 0 );
-        
-        // Service the Request.
-        message->Complete( KErrServerTerminated );
-        
-        // Free the message structure
-        delete message;
-        }    
-    iMessageArray.ResetAndDestroy();
-    iMessageArray.Close();
-    
-    // Delete the Location Centre Registry
-    delete iRegistry;
-    }
-        
-// ---------------------------------------------------------------------------
-// CLcServerEngine* CLcServerEngine::NewL
-// ---------------------------------------------------------------------------
-//
-CLcServerEngine* CLcServerEngine::NewL( MLcServerEngineObserver&    aObserver )
-    {
-    CLcServerEngine* self = NewLC( aObserver );
-    CleanupStack::Pop( self );
-    return self;         
-    }
-
-// ---------------------------------------------------------------------------
-// CLcServerEngine* CLcServerEngine::NewLC
-// ---------------------------------------------------------------------------
-//
-CLcServerEngine* CLcServerEngine::NewLC( MLcServerEngineObserver&    aObserver )
-    { 
-    // Symbian Two phased constructor. Leaves the object on the Clean-up
-    // stack.
-    CLcServerEngine* self = new ( ELeave )CLcServerEngine( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;         
-    }
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::ConstructL()
-    {
-    // Create the Location Centre Registry
-    iRegistry = CLcRegistry::NewL( *this );
-      
-    }
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::DoServiceL( const RMessage2&      aMessage )
-    {
-    // We cannot store the reference to the RMessage2 object passed but
-    // need to create a new instance and copy the contents for all
-    // furture purposes
-    RMessage2* message = new RMessage2;
-    *message = aMessage;
-    
-    // Append the message to the Queue. All messages will be serviced later
-    // in a generic manner.
-    User::LeaveIfError( iMessageArray.Append( message ));
-        
-    if ( !iRegistryUnderUpdate )
-        {
-        // The registry is consistent. So the message can be handled immediately.
-        ServiceRequests();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::RegistryUnderUpdation
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::RegistryUnderUpdation()
-    {
-    DEBUG( "+ CLcServerEngine::RegistryUnderUpdation")
-    
-    // Set the Registry update flag. This would prevent the Engine from
-    // performing any operation until the updation completes.
-    iRegistryUnderUpdate = ETrue;
-    
-    DEBUG( "- CLcServerEngine::RegistryUnderUpdation")
-    }
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::RegistryUpdated
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::RegistryUpdated()
-    {
-    DEBUG( "+ CLcServerEngine::RegistryUpdated")
-        
-    // Reset the Registry Update flag. Now the Registry is consistent and
-    // the Engine can service any requestsy
-    iRegistryUnderUpdate = EFalse;
-    
-    // Serve all the outstanding Location Requests.
-    ServiceRequests();
-    
-    // Notify the Engine Observer about the changes to the Registry.
-    iObserver.LcRegistryUpdated();
-    
-    DEBUG( "- CLcServerEngine::RegistryUpdated")    
-    }
-    
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::ServiceRequests
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::ServiceRequests()
-    {                       
-    // Service all outstanding LC requests.
-    while ( iMessageArray.Count())
-        {
-        // Extract the IPC message handle from the Array
-        RMessage2* message = iMessageArray[0];
-        iMessageArray.Remove( 0 );
-        
-        // Service the Request.
-        TRAPD( error, ServiceRequestL(*message));
-        
-        DEBUG1( "ServiceRequest Error %d", error ) 
-            
-        // Complete the request with the error code.
-        message->Complete( error );
-                            
-        // Free the message structure
-        delete message;
-        }   
-    }
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::ServiceRequestL
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::ServiceRequestL( RMessage2&      aMessage )
-    {
-    // Set the Current requestor's SID
-    iCurrentRequestorSid = aMessage.SecureId();
-       
-    switch( aMessage.Function())
-        {
-        case ELcFilteredAppsBufferLength:
-        case ELcFilteredApps:
-            {
-            // Getting the Application buffer length and Getting the list of applications
-            // have similar functionality. Only the last portion of the code changes.
-            // Hence, both the requests will be handled similarly with the necessary
-            // differentiation at the end. 
-           
-            // Create the package buffer for obtaining the filter conditions
-            TPckgBuf< TLcLocationAppFilter > filterBuf;
-             
-            // Read the filter contents
-            User::LeaveIfError( aMessage.Read( 0, filterBuf ));
-            
-            RLcIpcAppInfoArray appArray;
-            CleanupClosePushL( appArray );
-
-            // Filter Location based Applications based on the Filter
-            // conditions
-            GetFilteredAppsL( filterBuf(), appArray );
-            
-            // Now for the differentiation
-            if ( aMessage.Function() == ELcFilteredAppsBufferLength )
-                {
-                // Write the Length Value into a buffer
-                CBufFlat* lengthBuffer = CBufFlat::NewL( sizeof( TUint32 ));
-                CleanupStack::PushL( lengthBuffer );
-                RBufWriteStream lengthWrite( *lengthBuffer, 0 );
-                CleanupClosePushL( lengthWrite );
-                lengthWrite.WriteInt32L( appArray.BufferLength());
-                CleanupStack::PopAndDestroy(); // lengthWrite
-                
-                // Write the Buffer back to the IPC message                
-                TPtr8    ptr( lengthBuffer->Ptr(0));
-                User::LeaveIfError( aMessage.Write( 1, ptr ));
-                
-                // Pop and destroy the length buffer
-                CleanupStack::PopAndDestroy( lengthBuffer );                    
-                }
-            else
-                {
-                // Create the buffer for packing the Application Information
-                // structures and pack the contents into this buffer
-                CBufFlat* buffer = CBufFlat::NewL( appArray.BufferLength() );
-                CleanupStack::PushL( buffer );
-                RBufWriteStream writeStream( *buffer, 0 );
-                CleanupClosePushL( writeStream );                
-                appArray.ExternalizeL( writeStream );
-                CleanupStack::PopAndDestroy(); // writeStream
-                
-                // Write the buffer back to the IPC message.
-                TPtr8    ptr( buffer->Ptr(0));
-                User::LeaveIfError( aMessage.Write( 1, ptr ));
-                
-                // Pop and destroy the app buffer              
-                CleanupStack::PopAndDestroy( buffer );                    
-                }
-            
-            // Reset and Destroy the Contents of the Application info
-            // array
-            CleanupStack::PopAndDestroy( &appArray );
-            break;
-            }
-        case ELcSpecifiedAppsBufferLength:
-        case ELcSpecifiedApps:
-            {
-            // Getting the Application buffer length and Getting the list of applications
-            // have similar functionality. Only the last portion of the code changes.
-            // Hence, both the requets will be handled similarly with the necessary
-            // differentiation at the end. 
-                            
-            // Obtain the array of Applications which need to be used for
-            // filtering.              
-            
-            // Read the Descriptor from the IPC arguments
-            TInt desLength = aMessage.GetDesLength( 0 );          
-            // Allocate the id Array buffer    
-            CBufFlat* idArrayBuf = CBufFlat::NewL( desLength );
-            CleanupStack::PushL( idArrayBuf );
-            idArrayBuf->ResizeL( desLength );
-            
-            TPtr8   idArrayPtr( idArrayBuf->Ptr(0));
-            
-            // Now read the descriptor finally
-            User::LeaveIfError( aMessage.Read( 0, idArrayPtr ));
-            
-            // Create a Read buffer stream to read the App Ids    
-            RBufReadStream  appReadStream( *idArrayBuf, 0 );
-            CleanupClosePushL( appReadStream );
-            
-            RLcIpcAppIdArray    idArray;
-            CleanupStack::PushL( TCleanupItem( RLcIpcAppIdArray::ResetAndDestroyIdArray, &idArray ));  
-                            
-            // Internalize the structure to obtain the Actual list of Ids    
-            idArray.InternalizeL( appReadStream );  
-             
-             
-            RLcIpcAppInfoArray appArray;
-            CleanupClosePushL( appArray );
-               
-            // Read the second paramte to determine whether the list specified needs to be
-            // included or excluded
-            TBool   includeFlag = aMessage.Int1();
-            if ( includeFlag )
-                {
-                GetSpecifiedAppsL( idArray, appArray );
-                }
-            else
-                {
-                GetWithoutSpecifiedAppsL( idArray, appArray );
-                }
-            
-            if ( aMessage.Function() == ELcSpecifiedAppsBufferLength )
-                {
-                // Write the Length Value into a buffer
-                CBufFlat* lengthBuffer = CBufFlat::NewL( sizeof( TUint32 ));
-                CleanupStack::PushL( lengthBuffer );             
-                
-                RBufWriteStream lengthWrite( *lengthBuffer, 0 );
-                CleanupClosePushL( lengthWrite );                
-                lengthWrite.WriteInt32L( appArray.BufferLength());
-                CleanupStack::PopAndDestroy(); // lengthWrite
-                
-                // Write the Buffer back to the IPC message                
-                TPtr8    ptr( lengthBuffer->Ptr(0));
-                User::Leave( aMessage.Write( 2, ptr ));
-                
-                // Pop and destroy the Length buffer              
-                CleanupStack::PopAndDestroy( lengthBuffer );                    
-                }
-            else
-                {
-                // Create the buffer for packing the Application Information
-                // structures and pack the contents into this buffer
-                CBufFlat* buffer = CBufFlat::NewL( appArray.BufferLength() );
-                CleanupStack::PushL( buffer );
-                                
-                RBufWriteStream writeStream( *buffer, 0 );
-                CleanupClosePushL( writeStream );                
-                appArray.ExternalizeL( writeStream );
-                CleanupStack::PopAndDestroy(); // writeStream
-                
-                // Write the buffer back to the IPC message.
-                TPtr8    ptr( buffer->Ptr(0));
-                User::Leave( aMessage.Write( 2, ptr ));
-                
-                // Pop and destroy the app buffer                  
-                CleanupStack::PopAndDestroy( buffer ); 
-                }
-            
-            // We can also destroy the App id array buffer and Read streams
-            CleanupStack::PopAndDestroy( 4, idArrayBuf );
-            
-            break;
-            }
-        case ELcAppInfoLength:
-            {
-            DEBUG( "+ CLcServerEngine::ServiceRequestL, ELcAppInfoLength ") 
-               
-            // Read the Descriptor from the IPC arguments
-            TInt desLength = aMessage.GetDesLength( 0 );
-                                 
-            // Obtain the Application Identifier
-            HBufC* identifier = HBufC::NewLC( desLength );
-            TPtr des(identifier->Des());
-            aMessage.Read( 0, des );
-            
-            // Obtain the Location based Application for this identifer
-            CLcBasicAppInfo* appInfo = NULL;
-            User::LeaveIfError( iRegistry->GetApplicationInfo( *identifier, appInfo ));
-            
-            // Pack the Length field into the Second argument
-            CBufFlat* lengthBuffer = CBufFlat::NewL( sizeof( TUint32 ));
-            CleanupStack::PushL( lengthBuffer );                                       
-                                        
-            RBufWriteStream lengthWrite( *lengthBuffer, 0 );
-            CleanupClosePushL( lengthWrite );                
-            lengthWrite.WriteInt32L(  appInfo->BufferLength());
-            CleanupStack::PopAndDestroy(); // lengthWrite
-            
-            // Write the Buffer back to the IPC message                
-            TPtr8    ptr( lengthBuffer->Ptr(0));
-            User::LeaveIfError( aMessage.Write( 1, ptr ));
-            
-            // Pop and destroy the Length buffer             
-            CleanupStack::PopAndDestroy( 2, identifier );
-            
-            DEBUG( "- CLcServerEngine::ServiceRequestL, ELcAppInfoLength ") 
-                        
-            break;               
-            }
-        case ELcAppInfo:
-            {
-            DEBUG( "+ CLcServerEngine::ServiceRequestL, ELcAppInfo ") 
-            
-            // Read the Descriptor from the IPC arguments
-            TInt desLength = aMessage.GetDesLength( 0 );
-                
-            // Obtain the Application Identifier
-            HBufC* identifier = HBufC::NewLC( desLength );
-            TPtr des(identifier->Des());
-            aMessage.Read(0, des);
-                        
-            // Obtain the Location based Application for this identifer
-            CLcBasicAppInfo* appInfo = NULL;
-            User::LeaveIfError( iRegistry->GetApplicationInfo( *identifier, appInfo ));
-            
-            // Create the buffer for packing the Application Information
-            // structure and pack the contents into this buffer
-            CBufFlat* buffer = CBufFlat::NewL( appInfo->BufferLength());
-            CleanupStack::PushL( buffer );
-            
-            RBufWriteStream writeStream( *buffer, 0 );
-            CleanupClosePushL( writeStream );                
-            appInfo->ExternalizeL( writeStream );
-            CleanupStack::PopAndDestroy(); // writeStream
-            
-            // Write the buffer back to the IPC message.
-            TPtr8    ptr( buffer->Ptr(0));
-            User::LeaveIfError( aMessage.Write( 1, ptr ));
-            
-            // Pop and destroy the App info buffer                  
-            CleanupStack::PopAndDestroy( 2, identifier );
-            
-            DEBUG( "- CLcServerEngine::ServiceRequestL, ELcAppInfo ") 
-                                      
-            break;
-            }
-        default:
-            {
-            DEBUG( "CLcServerEngine::ServiceRequestL, KErrNotSupported ") 
-            User::Leave( KErrNotSupported );
-            break;
-            }
-        }       
-    }
-    
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::GetFilteredApps
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::GetFilteredAppsL( 
-        TLcLocationAppFilter&         aAppFilter,             
-        RLcIpcAppInfoArray&           aFilteredAppArray )
-    {
-    DEBUG( "+ CLcServerEngine::GetFilteredAppsL")  
-        
-    // Obtain the current list of Location based Applications from the
-    // Location Centre registry. Incase, the application satisfies the 
-    // filter conditions, then the application is appended to the list.
-    
-    RPointerArray<CLcAppInfo> appInfoArray;
-    User::LeaveIfError( iRegistry->GetAllRegisteredAppsList( appInfoArray ));
-    
-    TInt count = appInfoArray.Count();
-    
-    // Parse through the array list for each item
-    for ( TInt i = 0; i < count; i++ )
-        {
-        // Obtain the element at the position 'i'
-        CLcAppInfo* element = appInfoArray[i];
-        
-        if ( element->ApplicationType() == ELcNativeApplication &&
-        	 IsSameSID( element->ApplicationData()))
-        	{
-        	continue;
-        	}
-        	
-        // Check for the filtering conditions. Here we can check for the System
-        // filters and Application filters simultaneously. The code seems
-        // pretty lengthy owing to many accessor methods but retained it here
-        // instead of using too many local variables.
-        if ( Compare( aAppFilter.SystemCharacteristics(),
-                      element->SystemCharacteristics(),
-                      aAppFilter.SysCharFilterConfiguration()) &&
-             Compare( aAppFilter.ApplicationCharacteristics(),
-                      element->ApplicationCharacteristics(),
-                      aAppFilter.AppCharFilterConfiguration()))
-            {
-            // The filter characteristics have matched. So append the element
-            // to the Array
-            
-            // Ignoring the Append error. Incase there is an error then the
-            // element would not be appened.                
-            User::LeaveIfError( aFilteredAppArray.Append( element ));          
-            }
-        }
-    appInfoArray.Reset();
-    appInfoArray.Close();
-    
-    DEBUG1( "App Count : %d", aFilteredAppArray.Count())
-    DEBUG( "- CLcServerEngine::GetFilteredAppsL")    
-    }        
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::GetSpecifiedAppsL
-// ---------------------------------------------------------------------------
-//
-void CLcServerEngine::GetSpecifiedAppsL( 
-        RLcIpcAppIdArray&             aSpecifedApps,             
-        RLcIpcAppInfoArray&           aSpecifiedAppArray )
-    {
-    // Obtain the current list of Location based Applications from the
-    // Location Centre registry. Incase, the application satisfies the 
-    // filter conditions, then the application is appended to the list.
-    RPointerArray<CLcAppInfo> appInfoArray;
-	User::LeaveIfError( iRegistry->GetAllRegisteredAppsList( appInfoArray ));
-    TInt count = appInfoArray.Count();
-        
-    // Parse through the array list for each item
-    for ( TInt i = 0; i < count; i++ )
-        {
-        // Obtain the element at the position 'i'
-        CLcAppInfo* element = appInfoArray[i];
-        
-        if ( element->ApplicationType() == ELcNativeApplication &&
-        	 IsSameSID( element->ApplicationData()))
-        	{
-        	continue;
-        	}
-        	        
-        // Check for the filtering conditions
-        for ( TInt j = 0; j < aSpecifedApps.Count(); j++ )
-            {
-            // Obtain the current identifier
-            HBufC*  identifier = aSpecifedApps[j];
-            
-            // Check if the current App info's id is the same as this identifer
-            // If Yes, then append it and go to the next element.
-            if ( !identifier->Des().Compare( element->Id()))
-                {            
-                // Ignoring the Append error. Incase there is an error then the
-                // element would not be appened.                
-                User::LeaveIfError( aSpecifiedAppArray.Append( element ));
-                }
-            }
-        // Small optimization check to see if the number of elements that have
-        // been added are equal to the the number of elements in the App id
-        // array. If yes, we can stop the checking.
-        if ( aSpecifiedAppArray.Count() == aSpecifedApps.Count() )
-            {
-            break;
-            }
-        }
-    appInfoArray.Reset();
-    appInfoArray.Close();           
-    }        
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::GetWithoutSpecifiedAppsL
-// ---------------------------------------------------------------------------
-//       
-void CLcServerEngine::GetWithoutSpecifiedAppsL( 
-        RLcIpcAppIdArray&             aSpecifedApps,            
-        RLcIpcAppInfoArray&           aSpecifiedAppArray )
-    {
-    // Obtain the current list of Location based Applications from the
-    // Location Centre registry. Incase, the application satisfies the 
-    // filter conditions, then the application is appended to the list.
-    
-    RPointerArray<CLcAppInfo> appInfoArray;
-	User::LeaveIfError( iRegistry->GetAllRegisteredAppsList( appInfoArray ));
-    TInt count = appInfoArray.Count();
-    
-    // Parse through the array list for each item
-    for ( TInt i = 0; i < appInfoArray.Count(); i++ )
-        {
-        // Obtain the element at the position 'i'
-        CLcAppInfo* element = appInfoArray[i];
-   
-        if ( element->ApplicationType() == ELcNativeApplication &&
-        	 IsSameSID( element->ApplicationData()))
-        	{
-        	continue;
-        	}
-        	   
-        // Boolean flag to check whether an element exists or not.
-        TBool append = ETrue;
-                    
-        // Check for the filtering conditions
-        for ( TInt j = 0; j < aSpecifedApps.Count(); j++ )
-            {
-            // Obtain the current identifier
-            HBufC*  identifier = aSpecifedApps[j];
-            
-            // Check if the current App info's id is the same as this identifer
-            // If Yes, then append it and go to the next element.
-            if ( !identifier->Des().Compare( element->Id()))
-                {            
-                // Incase, the element being compared in the list is requested
-                // then set the flag and break the switch
-                append = EFalse;
-                break;
-                }
-            }
-           
-        if ( append )
-            {
-            // Ignoring the Append error. Incase there is an error then the
-            // element would not be appened.                
-            User::LeaveIfError( aSpecifiedAppArray.Append( element ));            
-            }
-        }
-    appInfoArray.Reset();
-    appInfoArray.Close();            
-    }                     
-
-// ---------------------------------------------------------------------------
-// void CLcServerEngine::Compare
-// ---------------------------------------------------------------------------
-// 
-TBool  CLcServerEngine::Compare( TUint32         aFilter,
-                                 TUint32         aFiltertoCompare,   
-                                 TInt            aFilterConfig )
-    {
-    // Here,
-    // aFilter          - Filter passed by the Client Application
-    // aFiltertoCompare - Filter of the Location based Application
-    
-    // If no filter configurations are set then there will be no need to
-    // proceed with checking. The Locaiton based Application must always be
-    // included. Hence, return True.
-    if ( !aFilter )
-        {
-        return ETrue;
-        }
-    
-    // Proceed for the Actual checking.
-    
-    // Set the default value to EFalse to enable pessimistic match.
-    TBool ret = EFalse;
-        
-    switch( aFilterConfig )
-        {
-        case TLcLocationAppFilter::EFilterStrict:
-            {
-            // Strict Filtering needs to be applied. So here we just have to
-            // compare the values and then return True only if there is an
-            // exact match
-            if ( aFilter == aFiltertoCompare )
-                {
-                ret = ETrue;
-                }
-            break;
-            }
-        case TLcLocationAppFilter::EFilterInclusive:
-            {
-            // The Location based Application must have all the characteristics
-            // passed by the Client application. It can have any additonal
-            // characteristic too.
-            if (( aFilter & aFiltertoCompare ) == aFilter )
-                {
-                ret = ETrue;
-                }
-            break;
-            }
-        case TLcLocationAppFilter::EFilterExclusive:
-            {
-            // The filtering should be such that there should be no match
-            // between the requested character set and the one specified for the
-            // Location based Application.
-            if ( !( aFilter & aFiltertoCompare ))
-                {
-                ret = ETrue;
-                }
-            break;
-            }
-        default:
-            {
-            break;
-            }      
-        }
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// TBool CLcServerEngine::IsSameSID
-// ---------------------------------------------------------------------------
-// 
-TBool CLcServerEngine::IsSameSID( const TDesC&		aAppSid )
-	{
-    // Since the request is for a Native S60 application, the Identifer
-    // contains an UID. Obtain it using Lexer
-    TLex lexer( aAppSid );
-    TUint32 uidValue;
-    
-    if ( lexer.BoundedVal( uidValue, EHex, KUidMaxValue ) || 
-    	 uidValue != iCurrentRequestorSid )
-    	{
-    	return EFalse;
-    	}
-	else
-		{
-		return ETrue;
-		}
-	}
-	
-// End of File