genericservices/taskscheduler/INC/SCHTASK.H
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/taskscheduler/INC/SCHTASK.H	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,149 @@
+// 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:
+// Representation of a task: 
+// Includes both user-defined data (iInfo+iData) and data set by system
+// construction from stream & accessors are exported for task executors
+// 
+//
+
+#if !defined(__SCHTASK_H__)
+#define __SCHTASK_H__
+
+#if !defined(__SCHINFO_H__)
+#include <schinfo.h>
+#endif 
+
+#include <s32file.h>
+
+
+
+/**
+
+When SYMBIAN_SECURE_TASK_SCHEDULER is defined, platform security
+support functionality is included in Task Scheduler.
+
+This means that:
+
+(i) Scheduled executables will be passed a shared file handle to
+the scheduled task file by the Task Scheduler.
+
+(ii) The CScheduledTask::SecurityInfo() API is availble to
+retrieve security information about the schedule creator.
+@publishedPartner
+@released
+*/
+//Only to be used internally and by Phone Manufacturers
+#ifndef SYMBIAN_SECURE_TASK_SCHEDULER
+#define SYMBIAN_SECURE_TASK_SCHEDULER
+#endif
+
+/**
+Class used by registered programs to access the scheduled task file store.
+
+When tasks are due, the Task Scheduler encapsulates task information within 
+CScheduledTask objects, and externalises them to a direct file store.
+
+This file store is located in the task scheduler's private data cage and thus
+cannot be accessed directly.  Instead the task scheduler passes a shared RFs and
+RFile handle to the registered program.
+
+The registered program can use the RFile::AdoptFromCreator API in conjunction
+with the APIs provided by this class to access the scheduled task file store as
+shown in the following example:
+
+@code
+	RFile file;
+	TInt error = file.AdoptFromCreator(TScheduledTaskFile::FsHandleIndex(),
+											TScheduledTaskFile::FileHandleIndex());
+@endcode
+@see CScheduledTask
+@see RFile::AdoptFromCreator
+@publishedAll
+@released
+*/
+class TScheduledTaskFile
+	{
+public:
+	IMPORT_C static TInt FsHandleIndex();
+	IMPORT_C static TInt FileHandleIndex();
+	};
+
+/** 
+The representation of a scheduled task that is passed to registered programs.
+
+When tasks are due, the Task Scheduler encapsulates task information within 
+CScheduledTask objects, and externalises them to a direct file store.
+
+The root stream of the direct file store contains a 32 bit value, followed 
+by the external representations of one or more CScheduledTask objects. The 
+32 bit value is interpreted as a TInt32 and contains the number of CScheduledTask 
+objects that follow in the stream.
+
+The registered program can create successive CScheduledTask objects from this 
+stream using the static NewLC() function.
+ 
+@see TScheduledTaskFile
+@see RStoreReadStream 
+@publishedAll
+@released
+*/
+class CScheduledTask : public CBase
+	{
+public:
+	IMPORT_C static CScheduledTask* NewLC(RReadStream& aStream);
+	~CScheduledTask();
+	IMPORT_C const TTaskInfo& Info() const;
+	IMPORT_C const HBufC& Data() const;
+	IMPORT_C const TTsTime& ValidUntil() const;
+	IMPORT_C TScheduleType ScheduleType() const;
+	IMPORT_C const TSecurityInfo& SecurityInfo() const;
+	
+	// These methods only used by task scheduler server
+	CScheduledTask(TTaskInfo& aInfo, 
+					HBufC* aData, 
+					TScheduleType aScheduleType,
+					const TSecurityInfo& aSecurityInfo);
+
+	TBool Due() const;
+	void SetDue(TBool aDue);
+	void OnDue(const TTsTime& aValidUntil);
+	void DecRepeat();
+	void Remove();
+	void ExternalizeL(RWriteStream& aStream) const;
+	//
+	TInt ScheduleId() const;
+	void SetScheduleId(TInt aScheduleId);	
+	//
+	TBool Persists() const;
+	void SetPersists();
+	//
+	static TInt Offset();
+	//
+private:
+	CScheduledTask();	
+	void InternalizeL(RReadStream& aStream);
+private:
+	TPriQueLink iPLink;
+	TTaskInfo iInfo;
+	HBufC* iData;
+	TTsTime iValidUntil;
+	TBool iDue;
+	TInt iScheduleId;
+	TScheduleType iScheduleType;
+	TSecurityInfo iSecurityInfo;
+	TBool iPersists;
+	};
+	
+
+#endif