diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/filebasedcertificateandkeystores/source/generic/client/CFSClient.cpp --- a/cryptoservices/filebasedcertificateandkeystores/source/generic/client/CFSClient.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/filebasedcertificateandkeystores/source/generic/client/CFSClient.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,129 +1,129 @@ -/* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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 "CFSClient.h" -#include "clientutils.h" -#include "clientsession.h" - -CFSClient::CFSClient(TInt aUID, - MCTToken& aToken, - RFileStoreClientSession& aClient) - : CActive(EPriorityNormal), - iToken(aToken), - iInterfaceUID(aUID), - iClient(aClient), - iRequestPtr(NULL, 0, 0) - { - } - -CFSClient::~CFSClient() - { - Cancel(); - delete iRequestDataBuf; - } - -CFSClient::TAsyncRequest::~TAsyncRequest() - { - __ASSERT_DEBUG(EIdle==iRequest, FSTokenPanic(ERequestOutstanding)); - } - -void CFSClient::TAsyncRequest::operator()(TFSTokenMessages aRequest, TRequestStatus* aStatus) - { - __ASSERT_DEBUG(EIdle==iRequest, FSTokenPanic(ERequestOutstanding)); - - iRequest = aRequest; - iClientStatus = aStatus; - *aStatus = KRequestPending; - } - -void CFSClient::TAsyncRequest::Complete(TInt aCompletionResult) - { - __ASSERT_DEBUG(EIdle!=iRequest, FSTokenPanic(ENoRequestOutstanding)); - User::RequestComplete(iClientStatus, aCompletionResult); - iRequest = EIdle; - } - -void CFSClient::TAsyncRequest::Cancel() - { - User::RequestComplete(iClientStatus, KErrCancel); - iRequest = EIdle; - } - -void CFSClient::FreeRequestBuffer() const - { - delete iRequestDataBuf; - iRequestDataBuf = NULL; - iRequestPtr.Set(NULL, 0, 0); - } - -TInt CFSClient::AllocRequestBuffer(TInt aReqdSize) const - { - ASSERT(aReqdSize > 0); - TInt result = KErrNoMemory; - - FreeRequestBuffer(); - iRequestDataBuf = HBufC8::NewMax(aReqdSize); - if (iRequestDataBuf) - { - iRequestPtr.Set(iRequestDataBuf->Des()); - iRequestPtr.FillZ(); - result = KErrNone; - } - - return result; - } - -/** - * Execute a synchronous request that returns a buffer of indetermintate length. - * - * If the initial buffer is too short, the server leaves with KErrOverflow and - * passes us the required length - the reuest is then re-sent. - */ -void CFSClient::SendSyncRequestAndHandleOverflowL(TFSTokenMessages aMessage, - TInt aInitialBufSize, - const TIpcArgs& aArgs) const - { - User::LeaveIfError(AllocRequestBuffer(aInitialBufSize)); - - TInt err = iClient.SendRequest(aMessage, aArgs); - if (err == KErrOverflow) - { - TInt sizeReqd = 0; - TPckg theSize(sizeReqd); - theSize.Copy(iRequestPtr); - User::LeaveIfError(AllocRequestBuffer(sizeReqd)); - err = iClient.SendRequest(aMessage, aArgs); - } - - User::LeaveIfError(err); - } - -// ********************************************************************************* -// CActive implementation -// ********************************************************************************* - -void CFSClient::DoCancel() - { - iCurrentRequest.Cancel(); - } - -TInt CFSClient::RunError(TInt aError) - { - iCurrentRequest.Complete(aError); - return KErrNone; // Handled - } +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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 "CFSClient.h" +#include "clientutils.h" +#include "clientsession.h" + +CFSClient::CFSClient(TInt aUID, + MCTToken& aToken, + RFileStoreClientSession& aClient) + : CActive(EPriorityNormal), + iToken(aToken), + iInterfaceUID(aUID), + iClient(aClient), + iRequestPtr(NULL, 0, 0) + { + } + +CFSClient::~CFSClient() + { + Cancel(); + delete iRequestDataBuf; + } + +CFSClient::TAsyncRequest::~TAsyncRequest() + { + __ASSERT_DEBUG(EIdle==iRequest, FSTokenPanic(ERequestOutstanding)); + } + +void CFSClient::TAsyncRequest::operator()(TFSTokenMessages aRequest, TRequestStatus* aStatus) + { + __ASSERT_DEBUG(EIdle==iRequest, FSTokenPanic(ERequestOutstanding)); + + iRequest = aRequest; + iClientStatus = aStatus; + *aStatus = KRequestPending; + } + +void CFSClient::TAsyncRequest::Complete(TInt aCompletionResult) + { + __ASSERT_DEBUG(EIdle!=iRequest, FSTokenPanic(ENoRequestOutstanding)); + User::RequestComplete(iClientStatus, aCompletionResult); + iRequest = EIdle; + } + +void CFSClient::TAsyncRequest::Cancel() + { + User::RequestComplete(iClientStatus, KErrCancel); + iRequest = EIdle; + } + +void CFSClient::FreeRequestBuffer() const + { + delete iRequestDataBuf; + iRequestDataBuf = NULL; + iRequestPtr.Set(NULL, 0, 0); + } + +TInt CFSClient::AllocRequestBuffer(TInt aReqdSize) const + { + ASSERT(aReqdSize > 0); + TInt result = KErrNoMemory; + + FreeRequestBuffer(); + iRequestDataBuf = HBufC8::NewMax(aReqdSize); + if (iRequestDataBuf) + { + iRequestPtr.Set(iRequestDataBuf->Des()); + iRequestPtr.FillZ(); + result = KErrNone; + } + + return result; + } + +/** + * Execute a synchronous request that returns a buffer of indetermintate length. + * + * If the initial buffer is too short, the server leaves with KErrOverflow and + * passes us the required length - the reuest is then re-sent. + */ +void CFSClient::SendSyncRequestAndHandleOverflowL(TFSTokenMessages aMessage, + TInt aInitialBufSize, + const TIpcArgs& aArgs) const + { + User::LeaveIfError(AllocRequestBuffer(aInitialBufSize)); + + TInt err = iClient.SendRequest(aMessage, aArgs); + if (err == KErrOverflow) + { + TInt sizeReqd = 0; + TPckg theSize(sizeReqd); + theSize.Copy(iRequestPtr); + User::LeaveIfError(AllocRequestBuffer(sizeReqd)); + err = iClient.SendRequest(aMessage, aArgs); + } + + User::LeaveIfError(err); + } + +// ********************************************************************************* +// CActive implementation +// ********************************************************************************* + +void CFSClient::DoCancel() + { + iCurrentRequest.Cancel(); + } + +TInt CFSClient::RunError(TInt aError) + { + iCurrentRequest.Complete(aError); + return KErrNone; // Handled + }