sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __LOGSERVOPERATIONBASE_H__ sl@0: #define __LOGSERVOPERATIONBASE_H__ sl@0: sl@0: #include sl@0: #include "LogServDefs.h" sl@0: #include "LogCliServShared.h" sl@0: #include "logpackage.h" sl@0: sl@0: // Classes referenced sl@0: class MLogServTaskInterface; sl@0: class MLogServOperationManager; sl@0: sl@0: /** sl@0: Base class for LogEng server operations. sl@0: Maintains a copy of the original RMessage2 object. sl@0: sl@0: @see MLogServOperationManager sl@0: @see MLogServTaskInterface sl@0: sl@0: @internalComponent sl@0: */ sl@0: class CLogServOperationBase : public CBase sl@0: { sl@0: public: sl@0: enum TCompletionStatus sl@0: { sl@0: EOperationComplete = 0, sl@0: EOperationCompleteWaitForClient sl@0: }; sl@0: sl@0: protected: sl@0: CLogServOperationBase(MLogServTaskInterface& aTaskInterface, sl@0: MLogServOperationManager& aOperationManager, sl@0: const RMessage2& aMessage, sl@0: CLogPackage& aPackage, sl@0: const TLogClientServerData& aClientServerData, sl@0: TLogServSessionId aSessionId); sl@0: sl@0: public: sl@0: ~CLogServOperationBase(); sl@0: sl@0: public: // FROM CLogServOperationBase sl@0: virtual void StartL(TRequestStatus& aStatus)=0; sl@0: virtual void WriteL(const RMessage2& aMessage); sl@0: virtual TCompletionStatus CompleteProcessingL(TInt aFinalCompletionCode); sl@0: sl@0: public: sl@0: void Complete(TInt aCompletionCode); sl@0: inline const TLogClientServerData& ClientServerData() const; sl@0: inline void Cancel(); sl@0: inline TBool HaveMessagePointer() const; sl@0: inline void ClearMessagePointer(); sl@0: inline TLogOperationId Id() const; sl@0: inline CLogPackage& Package(); sl@0: inline MLogServTaskInterface& TaskInterface() const; sl@0: inline MLogServOperationManager& OperationManager() const; sl@0: inline TLogOperationType Type() const; sl@0: inline TLogServSessionId SessionId(); sl@0: static TUint QueueOffset(); sl@0: inline void SetMessageCompletion(const TBool aMessageCompletion); sl@0: sl@0: protected: sl@0: inline RMessage2& Message(); sl@0: sl@0: private: sl@0: MLogServTaskInterface& iTaskInterface; sl@0: MLogServOperationManager& iOperationManager; sl@0: CLogPackage& iPackage; sl@0: RMessage2 iMessage; sl@0: TLogClientServerData iClientServerData; sl@0: TLogServSessionId iSessionId; sl@0: TSglQueLink iServerLink; sl@0: TBool iMessageCompletion; sl@0: }; sl@0: sl@0: sl@0: #include "LogServOperationBase.inl" sl@0: sl@0: #endif