--- a/locationcentre/lcutils/src/lcipcparams.cpp Tue Feb 02 00:16:03 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,581 +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: Parameters for the IPC message handling between the
-* Location Centre API and Location Centre Server.
-*
-*/
-
-
-// SYSTEM INCLUDES
-#include <e32std.h>
-
-// USER INCLUDES
-#include "lcipcparams.h"
-
-// CONSTANT DEFINITIONS
-const TInt KSizeofTUint32 = sizeof( TUint32 );
-
-// ----- Member funtions for RLcIpcAppIdArray --------------------------------
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::ExternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppIdArray::ExternalizeL( RWriteStream& aWriteStream )
- {
- // The format for packing the buffer would be as follows
- // Count | Length1 | ID1 | Length2 | ID2 | ...
- // where
- // Count - The number of strings which would be packed
- // Length1 - The Length of the first Identifier string
- // ID1 - First Identifier
- // Length2 - The Length of the second Identifier string
- // ID2 - Second Identifier.
- // ...
-
- const TInt count = Count();
- // First pack the number of elements in the array. Even if there is no
- // elements pack a 0
-
- aWriteStream.WriteUint32L( Count());
-
- for ( TInt i = 0; i < count; i++ )
- {
- // Obtain the element at position i
- HBufC* element = ( *this )[i];
-
- // As per the grammar first pack the length and then pack the string
- TInt length = element->Des().Length();
- aWriteStream.WriteUint32L( length );
-
- // Now pack the identifier
- aWriteStream.WriteL( element->Des(), length );
- }
-
- aWriteStream.CommitL();
- }
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::InternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppIdArray::InternalizeL( RReadStream& aReadStream )
- {
- // Clean up all the elements in the array so that the previous internalized
- // structure would be removed.
- ResetAndDestroy();
-
- // The first element in the array is the Count variable which indicates
- // the number of elements in this array.
- const TUint32 count = aReadStream.ReadUint32L();
-
- // Even a string containing no elements is acceptable.
- for ( TInt i = 0; i < count; i++ )
- {
- // First read the length of the Identifer
- TUint32 length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
-
- // Now create a buffer to read the actual identifier name. The length
- // of the buffer would be defined by the length value. Use this buffer
- // read the identifier.
- HBufC* buffer = HBufC::NewLC( length );
- TPtr bufferPtr( buffer->Des());
-
- aReadStream.ReadL( bufferPtr, length );
-
- // Transfer the ownership of the buffer to this array.
- User::LeaveIfError( Append( buffer ));
- CleanupStack::Pop( buffer );
- }
- }
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::BufferLength
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RLcIpcAppIdArray::BufferLength()
- {
- TInt length = 0;
-
- // Pack the Length for including the length of Count buffer
- length += KSizeofTUint32;
-
- // Even a string containing no elements is acceptable.
- for ( TInt i = 0; i < Count(); i++ )
- {
- // First 4 bytes for the Length of the string
- length += KSizeofTUint32;
-
- // Now pack the length for the buffer
- length += ( *this )[i]->Des().Size();
- }
- return length;
- }
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::ResetAndDestroyIdArray
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppIdArray::ResetAndDestroyIdArray( TAny* aIdArray )
- {
- RLcIpcAppIdArray* array = reinterpret_cast< RLcIpcAppIdArray* >( aIdArray );
- if ( array )
- {
- array->ResetAndDestroy();
- }
-
- }
-
-
-// ----- Member funtions for RLcIpcAppIdArray --------------------------------
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppInfoArray::ExternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppInfoArray::ExternalizeL( RWriteStream& aWriteStream )
- {
- // The format for packing the buffer would be as follows
- // Count | IDLength | ID | NameLength | Name | Launch mode | Sys Characteristics |
- // Application Characteristics
- // where
- // Count - The number of structures which would be packed
- // IDLength - The Length of the Identifier string
- // ID - Application Identifier
- // NameLength - The Length of the name string
- // Name - Application Name.
- // IconFile Length - Length of the Icon file name.
- // Icon File - Full path of the icon file with file name
- // IconFile Type - The Icon file type
- // Frame No - The Frame no of the icon if the icon file is a MIF
- // file
- // Launch Mode - Launching mode of the application
- // Sys Char - System characteristics
- // App Char - Application characteristics
- // These elements are repeated for all Application information structures.
-
- const TInt count = Count();
- // First pack the number of elements in the array. Even if there is no
- // elements pack a 0
-
- aWriteStream.WriteUint32L( Count());
-
- for ( TInt i = 0; i < count; i++ )
- {
- // Obtain the element at position i
- CLcAppInfo* element = ( *this )[i];
-
- // Externalize the parent class first and then externalize the child
- element->ExternalizeL( aWriteStream );
- }
-
- aWriteStream.CommitL();
- }
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::InternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppInfoArray::InternalizeL( RReadStream& aReadStream )
- {
- // Clean up all the elements in the array so that the previous internalized
- // structure would be removed.
- ResetAndDestroy();
-
- // The first element in the array is the Count variable which indicates
- // the number of elements in this array.
- const TUint32 count = aReadStream.ReadUint32L();
-
- // Even a string containing no elements is acceptable.
- for ( TInt i = 0; i < count; i++ )
- {
-
- // Create a new CLcAppInfo element
- CLcAppInfo* element = CLcAppInfo::NewLC();
-
- // Internalize the Parent class first and then proceed to the child
- element->InternalizeL( aReadStream );
-
- // Transfer the ownership of the buffer to this array.
- User::LeaveIfError( Append( element ));
- CleanupStack::Pop( element );
-
- }
- }
-
-// ---------------------------------------------------------------------------
-// TInt RLcIpcAppInfoArray::BufferLength
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RLcIpcAppInfoArray::BufferLength()
- {
- TInt length = 0;
-
- // Pack the length for the Count field.
- length += KSizeofTUint32;
-
- // Pack the length required for the individual app structures
-
- TInt count = Count();
- for ( TInt i = 0; i < count; i++ )
- {
- // Obtain the element at position i
- CLcAppInfo* element = ( *this )[i];
-
- // Pack the length required for this element
- length += element->BufferLength();
- }
-
- return length;
- }
-
-// ---------------------------------------------------------------------------
-// void RLcIpcAppIdArray::ResetAndDestroyIdArray
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void RLcIpcAppInfoArray::ResetAndDestroyAppArray( TAny* aIdArray )
- {
- RLcIpcAppInfoArray* array = reinterpret_cast< RLcIpcAppInfoArray* >( aIdArray );
- if ( array )
- {
- array->ResetAndDestroy();
- }
- }
-
-// ----- Member funtions for CLcBasicAppInfo ---------------------------------
-
-// ---------------------------------------------------------------------------
-// void CLcBasicAppInfo::ExternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CLcBasicAppInfo::ExternalizeL( RWriteStream& aWriteStream )
- {
- // The format for packing the buffer would be as follows
- // Application Type | DataLength | Data | CmdLength | Cmd
- // where
- // Application Type - The type of the Application which is stored in the
- // structure.
- // DataLength - The Length of the Application data string
- // Data - Application Data
- // CmdLength - The Length of the command line arguments
- // Cmd - Command line arguments
-
- // First pack the Application type
-
- aWriteStream.WriteUint32L( iAppType );
-
- // Pack the Launching mode of the application
- aWriteStream.WriteUint32L( iLaunchMode );
-
- // Pack the length of the Application Data. If there is no application
- // data then pack zero.
- TUint length = 0;
- if ( iAppData )
- {
- length = iAppData->Length();
- }
- aWriteStream.WriteUint32L( length );
-
- // If there is a valid data field pack it onto the buffer.
- if ( length )
- {
- aWriteStream.WriteL( iAppData->Des(), length );
- }
-
- // Pack the command line arguments. If there is no command line
- // parameters then pack a length of 0
- length = 0;
- if ( iCmdLineParams )
- {
- length = iCmdLineParams->Length();
- }
- aWriteStream.WriteUint32L( length );
-
- // If there is a valid command line parameters field pack it onto the buffer.
- if ( length )
- {
- aWriteStream.WriteL( iCmdLineParams->Des(), length );
- }
-
- aWriteStream.CommitL();
- }
-
-// ---------------------------------------------------------------------------
-// void CLcBasicAppInfo::InternalizeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CLcBasicAppInfo::InternalizeL( RReadStream& aReadStream )
- {
- // Clear the application data
- delete iAppData;
- iAppData = NULL;
-
- // Clear the command line params
- delete iCmdLineParams;
- iCmdLineParams = NULL;
-
- // The first element in the array if the Application type variable.
- iAppType = aReadStream.ReadUint32L();
-
- // The second element is the Application Launch mode
- iLaunchMode = aReadStream.ReadUint32L();
-
- // Now get the length of the data field.
- TUint32 length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
- // Set the application data only if the length is a +ve value.
- if ( length )
- {
- iAppData = HBufC::NewL( length );
- TPtr appData( iAppData->Des());
- aReadStream.ReadL( appData, length );
- }
-
- // Now read the length of the command line parameters
- length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
- // Set the command line params only if the length is a +ve value.
- if ( length )
- {
- iCmdLineParams = HBufC::NewL( length );
- TPtr cmdParam( iCmdLineParams->Des());
- aReadStream.ReadL( cmdParam, length );
- }
- }
-
-// ---------------------------------------------------------------------------
-// TInt CLcBasicAppInfo::BufferLength
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CLcBasicAppInfo::BufferLength()
- {
- TInt length = 0;
-
- // Include length for Application type
- length += KSizeofTUint32;
-
- // Add the length for Launch mode
- length += KSizeofTUint32;
-
- // Add the length of the Application Data and the length for Application
- // data if it exists
- length += KSizeofTUint32;
-
- if ( iAppData )
- {
- length += iAppData->Des().MaxSize();
- }
-
- // Add the length of the Command line args and the length for Cmd line
- // args if it exists
- length += KSizeofTUint32;
-
- if ( iCmdLineParams )
- {
- length += iCmdLineParams->Des().MaxSize();
- }
- return length;
- }
-
-
-// ----- Member funtions for CLcBasicAppInfo ---------------------------------
-
-// ---------------------------------------------------------------------------
-// void CLcBasicAppInfo::ExternalizeL
-// ---------------------------------------------------------------------------
-//
-void CLcAppInfo::ExternalizeL( RWriteStream& aWriteStream )
- {
- CLcBasicAppInfo::ExternalizeL( aWriteStream );
-
- // As per the grammar first pack the length and then pack the string
- TInt length = Id().Length();
- aWriteStream.WriteUint32L( length );
-
- // Pack the Identifier. No need to check for the Length since
- // this is a mandatory field and the Application would not have been
- // accepted if it were not +ve
- aWriteStream.WriteL( Id(), length );
-
- // Pack the name. If there is no name then pack a length of 0 for the
- // name field.
- length = Name().Length();
- aWriteStream.WriteUint32L( length );
-
- // Pack the name field only if the length is +ve
- if ( length )
- {
- aWriteStream.WriteL( Name(), length );
- }
-
- // Pack the Icon file and Icon file type for the file
- length = IconFile().Length();
- aWriteStream.WriteUint32L( length );
-
- if ( length )
- {
- aWriteStream.WriteL( IconFile(), length );
- aWriteStream.WriteUint32L( iIconFileType);
-
- // If the Icon file type is a MIF, pack the Frame no
- if ( EMifFile == iIconFileType )
- {
- aWriteStream.WriteUint32L( iFrameNo );
- }
- }
-
- // Pack the System characteristics
- aWriteStream.WriteUint32L( iSystemCharacteristics );
-
- // Pack the application characteristics
- aWriteStream.WriteUint32L( iAppCharacteristics );
-
- aWriteStream.CommitL();
- }
-
-// ---------------------------------------------------------------------------
-// void CLcBasicAppInfo::InternalizeL
-// ---------------------------------------------------------------------------
-//
-void CLcAppInfo::InternalizeL( RReadStream& aReadStream )
- {
- CLcBasicAppInfo::InternalizeL( aReadStream );
-
- // First read the length of the Identifer
- TUint32 length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
-
- // No need to check for the length for this is a mandatory field.
- // Now create a buffer to read the actual identifier. The length
- // of the buffer would be defined by the length value. Use this buffer
- // read the identifier.
- iId = HBufC::NewL( length );
- TPtr bufferPtr( iId->Des());
- aReadStream.ReadL( bufferPtr, length );
-
- // Read the length of the name buffer
- length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
-
- if ( length )
- {
- iApplicationName = HBufC::NewL( length );
- bufferPtr.Set( iApplicationName->Des());
-
- // Read the name field
- aReadStream.ReadL( bufferPtr, length );
- }
-
- // Read the Icon file if its exists
- length = aReadStream.ReadUint32L();
- if ( length >= KMaxTInt/2 )
- {
- User::Leave( KErrArgument );
- }
-
- if ( length )
- {
- iIconFile = HBufC::NewL( length );
- bufferPtr.Set( iIconFile->Des());
-
- // Read the Icon file field
- aReadStream.ReadL( bufferPtr, length );
-
- // Set the Icon file type
- iIconFileType =
- static_cast< CLcAppInfo::TLcIconFileType >( aReadStream.ReadUint32L());
-
- // If the Icon file type is a MIF file then set the Frame no
- if ( EMifFile == iIconFileType )
- {
- iFrameNo = aReadStream.ReadUint32L();
- }
- }
-
- // Set the System characteristics
- iSystemCharacteristics = aReadStream.ReadUint32L();
-
- // Set the Application characteristics
- iAppCharacteristics = aReadStream.ReadUint32L();
- }
-
-// ---------------------------------------------------------------------------
-// TInt CLcAppInfo::BufferLength
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CLcAppInfo::BufferLength()
- {
- TInt length = 0;
-
- // First pack the length for the Basic App Info structure
- length += CLcBasicAppInfo::BufferLength();
-
- // Include length for Application Identifier
- length += KSizeofTUint32;
- length += iId->Des().MaxSize();
-
- // Pack the name field and the Length of the name field if it exists
- // Add the length of the Command line args and the length for Cmd line
- // args if it exists
- length += KSizeofTUint32;
-
- if ( iApplicationName )
- {
- length += iApplicationName->Des().MaxSize();
- }
-
- // Pack the Icon file field and the name of icon file if it exists
- // Read the Icon file if its exists
- length += KSizeofTUint32;
- if ( iIconFile )
- {
- // Pack the Icon file name length
- length += iIconFile->Des().MaxSize();
-
- // Pack the Icon file type
- length += KSizeofTUint32;
-
- // If the Icon file type is a MIF file then add length for the
- // frame number
- if ( EMifFile == iIconFileType )
- {
- length += KSizeofTUint32;
- }
- }
-
- // Add the length for System characteristics
- length += KSizeofTUint32;
-
- // Add the length for Application characteristics
- length += KSizeofTUint32;
-
- return length;
- }
-// End of File