diff -r 000000000000 -r e4d67989cc36 genericservices/taskscheduler/SCHSVR/SCHCLI.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericservices/taskscheduler/SCHSVR/SCHCLI.H Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,112 @@ +// 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 "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: +// class CClientProxy +// -scheduler's representation of client +// -contains info scheduler needs to start real client in its own process +// -reference-counted: deleted when no tasks & no sessions reference it +// +// + +#ifndef __SCHCLI_H__ +#define __SCHCLI_H__ + +#include + +// Classes referenced +class RFs; +class CScheduledTask; +class RWriteStream; +class CFileStore; +class CSchLogManager; + + +/** +@internalComponent +*/ +NONSHARABLE_CLASS(CClientProxy) : public CBase + { +public: + static CClientProxy* NewL(RFs& aFsSession, + RReadStream& aStream, + CSchLogManager& aLogManager); + static CClientProxy* NewL(RFs& aFsSession, + const TDesC& aFileName, + TInt aPriority, + CSchLogManager& aLogManager); + ~CClientProxy(); + +private: + CClientProxy(RFs& aFsSession,CSchLogManager& aLogManager); + CClientProxy(RFs& aFsSession, TInt aPriority,CSchLogManager& aLogManager); + void ConstructL(const TDesC& aFileName); + +public: + TBool IsEqual(const TDesC& aFilename, TInt aPriority) const; + void ExecuteTasks(); + void AddTask(CScheduledTask& aTask); + void RemoveTask(CScheduledTask* aTask); + void RemoveDueTasks(); + void TransferTasks(CClientProxy& aTargetClient); + + // sharing stuff + inline void DecUsers(); + inline void IncUsers(); + inline TInt Users() const; + + // execution + inline void ReadyToExecute(); + inline TBool IsReadyToExecute() const; + + // list capability + inline static TInt Offset(); + inline void Remove();// remove youself from que + + inline const TDesC& ExecutorFileName() const { return *iFileName; } + TDblQueIter TaskIterator(); + TInt Priority() const; + +public: + void InternalizeL(RReadStream& aStream); + void ExternalizeL(RWriteStream& aStream) const; + +private: // internal functions + void DoExecuteTasksL(); + CArrayPtr* DueTasksL();// copy the due tasks into an array + + // called before running the task + TInt DoExecuteTasks(const CArrayPtr& aTasks, + const TDesC& aFileName); + + void DoExecuteTasksL(const CArrayPtr& aTasks, + const TDesC& aFileName, + const TDesC& aErrorMessage); + + void SaveTasksToFileL(const CArrayPtr& aTasks, + const TDesC& aFileName);// save 'em to a new file + void SaveTasksL(CFileStore& aStore, const CArrayPtr& aTasks); + CFileStore* CreateStoreL(const TDesC& aName, TUint aFileMode);// needed so we can call store->CreateLC() in a trap + +private: // member data + RFs& iFsSession; + TBool iReadyToExecute; + TInt iUsers;// for sharing + HBufC* iFileName;// name of supplied ExeDll thingie + // + TPriQueLink iPriLink;// owned by scheduler & kept in priority que + TPriQue iTasks; + CSchLogManager& iSchLogManager; + }; + +#include "SCHCLI.INL" +#endif