telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/src/cmockphonebookstoremesshandler.cpp
// Copyright (c) 2007-2009 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:
//
#include <etelmm.h>
#include "cmockphonebookstoremesshandler.h"
#include <ctsy/pluginapi/mmmessagemanagercallback.h>
#include <ctsy/pluginapi/cmmdatapackage.h>
#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
#include <ctsy/tflogger.h>
#include "cmmmessagerouter.h"
#include "cmockltsyengine.h"
#include "tmockltsydata.h"
#include <ctsy/serviceapi/cmmgsmphonestorageutility.h>
/**
Factory function
*/
CMockPhoneBookStoreMessHandler* CMockPhoneBookStoreMessHandler::NewL(CMmMessageRouter* aMessageRouter)
{
CMockPhoneBookStoreMessHandler* self = new(ELeave)CMockPhoneBookStoreMessHandler(aMessageRouter);
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop();
return self;
}
/**
Constructor
*/
CMockPhoneBookStoreMessHandler::CMockPhoneBookStoreMessHandler(CMmMessageRouter* aMessageRouter)
:iMessageRouter(aMessageRouter)
{
}
/**
2nd phase contructor
*/
void CMockPhoneBookStoreMessHandler::ConstructL()
{
}
/**
Destructor
*/
CMockPhoneBookStoreMessHandler::~CMockPhoneBookStoreMessHandler()
{
for (TInt i(0); i < iEnRespArray.Count(); i++)
{
if ( iEnRespArray[i] )
{
iEnRespArray[i]->ResetAndDestroy();
}
}
iEnRespArray.ResetAndDestroy();
}
/**
Execute a request
*/
TInt CMockPhoneBookStoreMessHandler::ExtFuncL(TInt aIpc,const CMmDataPackage* aMmDataPackage)
{
switch(aIpc)
{
case EMmTsyENStoreReadIPC:
case EMmTsyONStoreReadIPC:
case EMmTsyENStoreGetInfoIPC:
case EMmTsyONStoreWriteSizeIPC:
case EMmTsyONStoreDeleteIPC:
case EMmTsyONStoreGetInfoIPC:
case EMmTsyENStoreReadAllPhase1IPC:
{
TInt index;
aMmDataPackage->UnPackData(index);
TMockLtsyData1< TInt > data(index);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyONStoreWriteEntryIPC:
{
RMobileONStore::TMobileONEntryV1 entry;
aMmDataPackage->UnPackData(entry);
TMockLtsyData1< RMobileONStore::TMobileONEntryV1 > data(entry);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyONStoreWriteIPC:
{
RMobileONStore::TMobileONEntryV1Pckg* ptr;
aMmDataPackage->UnPackData(ptr);
RMobileONStore::TMobileONEntryV1& entry = ( *ptr )();
TMockLtsyData1<RMobileONStore::TMobileONEntryV1> data(entry);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyONStoreDeleteAllIPC:
{
TMockLtsyData0 data;
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyONStoreReadEntryIPC:
case EMmTsyONStoreReadSizeIPC:
{
TInt index;
aMmDataPackage->UnPackData(index);
TMockLtsyData1<TInt> data(index);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc, data);
}
default:
break;
}
const CPhoneBookDataPackage* phoneBookPackage = static_cast<const CPhoneBookDataPackage*>(aMmDataPackage);
TName phoneBookName;
phoneBookPackage->GetPhoneBookName(phoneBookName);
switch (aIpc)
{
case EMmTsyPhoneBookStoreInitIPC:
{
TMockLtsyPhoneBookData0 data(phoneBookName);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyPhoneBookStoreReadIPC:
{
RMobilePhoneBookStore::TPBIndexAndNumEntries* indexAndEntriesPtr;
phoneBookPackage->UnPackData(indexAndEntriesPtr);
TMockLtsyPhoneBookData1< RMobilePhoneBookStore::TPBIndexAndNumEntries >
data(phoneBookName, *indexAndEntriesPtr);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyPhoneBookStoreCacheIPC:
{
TMockLtsyPhoneBookData0 data(phoneBookName);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyPhoneBookStoreWriteIPC:
{
CPhoneBookStoreEntry* entryPtr;
TInt index;
phoneBookPackage->UnPackData(index, entryPtr);
TMockLtsyPhoneBookData2< TInt, CPhoneBookStoreEntry* > data(phoneBookName, index, entryPtr);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
case EMmTsyPhoneBookStoreDeleteIPC:
{
TInt index;
phoneBookPackage->UnPackData(index);
TMockLtsyPhoneBookData1< TInt > data(phoneBookName, index);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
default:
{
TMockLtsyPhoneBookData0 data(phoneBookName);
return iMessageRouter->MockLtsyEngine()->ExecuteCommandL(aIpc,data);
}
}
}
/**
Complete a request
*/
void CMockPhoneBookStoreMessHandler::CompleteL(TInt aIpc, const TDesC8& aData, TInt aResult)
{
CPhoneBookDataPackage dataPackage;
CArrayPtrSeg<CPhoneBookStoreEntry>* pbEntryArray = NULL;
switch (aIpc)
{
case EMmTsyPhoneBookStoreInitIPC:
{
CStorageInfoData info;
TMockLtsyPhoneBookData1< CStorageInfoData > retStoreAndName(info);
retStoreAndName.DeserialiseL(aData);
dataPackage.SetPhoneBookName(retStoreAndName.PhoneBookName());
dataPackage.PackData(retStoreAndName.Data1Ptr());
}
break;
case EMmTsyPhoneBookStoreCacheIPC:
{
TMockLtsyPhoneBookData1Buf <CArrayPtrSeg<CPhoneBookStoreEntry>*> retStoreAndName;
CleanupClosePushL(retStoreAndName);
retStoreAndName.DeserialiseL(aData);
dataPackage.SetPhoneBookName(retStoreAndName.PhoneBookName());
pbEntryArray = retStoreAndName.Data1();
dataPackage.PackData( &pbEntryArray );
iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
CleanupStack::PopAndDestroy(1);
return;
}
case EMmTsyPhoneBookStoreReadIPC:
{
TMockLtsyPhoneBookData1Buf<CArrayPtrSeg<CPhoneBookStoreEntry>*> retStoreAndName;
CleanupClosePushL(retStoreAndName);
retStoreAndName.DeserialiseL(aData);
dataPackage.SetPhoneBookName(retStoreAndName.PhoneBookName());
pbEntryArray = retStoreAndName.Data1();
dataPackage.PackData( &pbEntryArray );
iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
CleanupStack::PopAndDestroy(1);
return;
}
case EMmTsyPhoneBookStoreWriteIPC:
case EMmTsyPhoneBookStoreDeleteIPC:
case EMmTsyPhoneBookStoreDeleteAllIPC:
{
TPBEntryInfo pbEntryInfo;
TMockLtsyPhoneBookData1<TPBEntryInfo> ret(pbEntryInfo);
ret.DeserialiseL(aData);
dataPackage.SetPhoneBookName(ret.PhoneBookName());
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyPhoneBookStoreGetInfoIPC :
{
TInt usedEntries;
TMockLtsyPhoneBookData1<TInt> ret(usedEntries);
ret.DeserialiseL(aData);
dataPackage.SetPhoneBookName(ret.PhoneBookName());
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyPhoneBookStoreFdnInfoIPC:
{
TPBFdnInfo fdnInfo;
TMockLtsyPhoneBookData1<TPBFdnInfo> ret(fdnInfo);
ret.DeserialiseL(aData);
dataPackage.SetPhoneBookName(ret.PhoneBookName());
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyENStoreReadIPC:
{
TENStoreResponse enStoreResp;
TMockLtsyData1<TENStoreResponse> ret(enStoreResp);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyENStoreGetInfoIPC:
{
TInt usedEntries;
TMockLtsyData1<TInt> ret(usedEntries);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyONStoreWriteSizeIPC:
{
TInt size;
TMockLtsyData1<TInt> ret(size);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyONStoreReadIPC:
{
TONStoreMsg onStoreMsg;
TMockLtsyData1<TONStoreMsg> ret(onStoreMsg);
ret.DeserialiseL(aData);
TONStoreMsg* onStoreMsgPtr = ret.Data1Ptr();
dataPackage.PackData(&onStoreMsgPtr);
}
break;
case EMmTsyONStoreWriteIPC:
{
TInt location;
TMockLtsyData1<TInt> ret(location);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyONStoreGetInfoIPC:
{
TServiceType serviceType;
TMockLtsyData1<TServiceType> ret(serviceType);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyENStoreReadAllPhase1IPC:
if ( KErrNone == aResult )
{
TMockLtsyData1Buf<CRespArray*> data;
data.DeserialiseL(aData);
if ( data.Data1() )
{
iEnRespArray.Append(data.Data1());
}
dataPackage.PackData(data.Data1Ptr());
}
break;
case EMmTsyONStoreDeleteIPC:
case EMmTsyONStoreDeleteAllIPC:
break;
case EMmTsyONStoreReadSizeIPC:
{
TInt size;
TMockLtsyData1<TInt> ret(size);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyONStoreReadEntryIPC:
{
TONStoreMsg msg;
TMockLtsyData1<TONStoreMsg> ret(msg);
ret.DeserialiseL(aData);
dataPackage.PackData(ret.Data1Ptr());
}
break;
case EMmTsyONStoreReadAllPhase1IPC:
case EMmTsyONStoreWriteEntryIPC:
{
// complete without data
}
break;
default:
{
TMockLtsyPhoneBookData0 ret;
ret.DeserialiseL(aData);
dataPackage.SetPhoneBookName(ret.PhoneBookName());
}
break;
}
iMessageRouter->MessageManagerCallback()->Complete(aIpc, &dataPackage, aResult);
}
// End of File