epoc32/include/uikon/eiknfysv.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
williamr@2
    17
williamr@2
    18
/**
williamr@2
    19
 @file 
williamr@2
    20
 @internalComponent 
williamr@2
    21
*/
williamr@2
    22
williamr@2
    23
#ifndef __EIKNFYSV_H__
williamr@2
    24
#define __EIKNFYSV_H__
williamr@2
    25
williamr@2
    26
#include <e32base.h>
williamr@2
    27
#include <w32std.h>
williamr@2
    28
#include <eiknotapi.h>
williamr@2
    29
#include <uikon/eiksvfty.h>
williamr@2
    30
williamr@2
    31
#include <ecom/ecom.h>
williamr@2
    32
williamr@2
    33
//
williamr@2
    34
// class CEikServNotifyServer
williamr@2
    35
//
williamr@2
    36
williamr@2
    37
class CEikSrvNotifierManager;
williamr@2
    38
class CEikServNotifyAlert;
williamr@2
    39
class MEikSrvNotifierBase2;
williamr@2
    40
class CChannelMonitor;
williamr@2
    41
class CActivityMonitor;
williamr@2
    42
class CEikNotifierQueue;
williamr@2
    43
class CEikServNotifySession;
williamr@2
    44
class TNotifierSecureInfo;
williamr@2
    45
williamr@2
    46
class MEikInfoMsgWin;
williamr@2
    47
williamr@2
    48
/**
williamr@2
    49
@internalComponent 
williamr@2
    50
*/
williamr@2
    51
NONSHARABLE_CLASS(TNotifierMessageInfo)
williamr@2
    52
	{
williamr@2
    53
public:
williamr@2
    54
	TNotifierMessageInfo(const RMessage2& aMessage, CEikServNotifySession& aEikServNotifySession);
williamr@2
    55
private:
williamr@2
    56
	TNotifierMessageInfo();
williamr@2
    57
public:
williamr@2
    58
	RMessage2 iMessage;
williamr@2
    59
	CEikServNotifySession& iEikServNotifySession;
williamr@2
    60
	};
williamr@2
    61
williamr@2
    62
/**
williamr@2
    63
@internalComponent 
williamr@2
    64
*/
williamr@2
    65
NONSHARABLE_CLASS(TNotifierSecureInfo)
williamr@2
    66
	{
williamr@2
    67
public:
williamr@2
    68
	TNotifierSecureInfo(const TUid aNotifierUid, const TSecureId aSecureId);
williamr@2
    69
public:
williamr@2
    70
	TUid iNotifierUid;
williamr@2
    71
	TSecureId iSecureId;
williamr@2
    72
	};
williamr@2
    73
williamr@2
    74
/** @internalComponent */
williamr@2
    75
typedef RArray<const TNotifierMessageInfo> RNotifierMessageInfoQueue;
williamr@2
    76
/** @internalComponent */
williamr@2
    77
typedef RArray<const TNotifierSecureInfo> RNotifierSecureInfoQueue;
williamr@2
    78
				
williamr@2
    79
/** 
williamr@2
    80
@internalComponent 
williamr@2
    81
*/
williamr@2
    82
NONSHARABLE_CLASS(CEikServNotifyServer) : public CPolicyServer
williamr@2
    83
	{
williamr@2
    84
public:
williamr@2
    85
	IMPORT_C static CEikServNotifyServer* NewL(MEikServNotifyAlert* aAlert);
williamr@2
    86
	IMPORT_C ~CEikServNotifyServer();
williamr@2
    87
	IMPORT_C void StartL();
williamr@2
    88
public:
williamr@2
    89
	IMPORT_C void DisplayNotifier(const TDesC& aTitle, const TDesC& aLabel, const TDesC& aBut1, const TDesC& aBut2, MEikNotifyAlertCompletionObserver* aObserver);
williamr@2
    90
	IMPORT_C void DisplayInfoPrint(const TDesC& aDes);
williamr@2
    91
	inline CEikSrvNotifierManager* Manager() const;
williamr@2
    92
	inline RNotifierMessageInfoQueue& AsyncMessageQueue() { return iAsyncMessageQueue; }
williamr@2
    93
	inline RNotifierSecureInfoQueue& AsyncSecureInfoQueue() { return iAsyncSecureInfoQueue; }
williamr@2
    94
public:
williamr@2
    95
	void SetIsExiting();
williamr@2
    96
	TBool IsExiting() const;
williamr@2
    97
private:
williamr@2
    98
	CEikServNotifyServer(TInt aPriority, MEikServNotifyAlert* aAlert);
williamr@2
    99
	void ConstructL();
williamr@2
   100
	TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing);
williamr@2
   101
private: // from CServer2
williamr@2
   102
	CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const;
williamr@2
   103
private:
williamr@2
   104
	MEikServNotifyAlert* iAlert;
williamr@2
   105
	MEikInfoMsgWin* iInfoMsg;
williamr@2
   106
	RWindowGroup iInfoMsgGroupWin;
williamr@2
   107
	CEikSrvNotifierManager* iManager;
williamr@2
   108
	TBool iExiting;
williamr@2
   109
	RNotifierMessageInfoQueue iAsyncMessageQueue;
williamr@2
   110
	RNotifierSecureInfoQueue iAsyncSecureInfoQueue;
williamr@2
   111
	};
williamr@2
   112
williamr@2
   113
//
williamr@2
   114
// class CEikServNotifySession
williamr@2
   115
//
williamr@2
   116
williamr@2
   117
/**
williamr@2
   118
@internalComponent
williamr@2
   119
*/
williamr@2
   120
NONSHARABLE_CLASS(CEikServNotifySession) : public CSession2, public MEikNotifyAlertCompletionObserver
williamr@2
   121
	{
williamr@2
   122
public:
williamr@2
   123
	static CEikServNotifySession* NewL();
williamr@2
   124
	~CEikServNotifySession();
williamr@2
   125
public: // from CSession
williamr@2
   126
	void HandleAlertCompletion(const TInt aButtonVal);
williamr@2
   127
public: // from CSession2
williamr@2
   128
	void ServiceL(const RMessage2 &aMessage);
williamr@2
   129
private:
williamr@2
   130
	CEikServNotifySession();
williamr@2
   131
	void ConstructL();
williamr@2
   132
	void DisplayAlert(const RMessage2& aMessage);
williamr@2
   133
	void PrepareDisplayAlert();
williamr@2
   134
	void DisplayNextPendingAlert();
williamr@2
   135
	void DisplayInfoMsg(const RMessage2& aMessage);
williamr@2
   136
	void StartNotifierL(const RMessage2& aMessage);
williamr@2
   137
	void UpdateNotifierL(const RMessage2& aMessage);
williamr@2
   138
	void StartNotifierAndGetResponseL(const RMessage2& aMessage,TBool& aCleanupComplete);
williamr@2
   139
	CEikServNotifyServer& Server() const {return *static_cast<CEikServNotifyServer*>( const_cast<CServer2*>(CSession2::Server()) );}
williamr@2
   140
	static HBufC8* GetRemoteInputBufferLC(const RMessage2& aMessage, TInt aSlot);
williamr@2
   141
	void UpdateNotifierAndGetResponseL(const RMessage2& aMessage);
williamr@2
   142
	TInt NotifierCancel(const RMessage2 &aMessage);
williamr@2
   143
private:
williamr@2
   144
	const CEikServNotifyServer* iServer;
williamr@2
   145
	TInt iClientId;
williamr@2
   146
	TInt iLengthOfFirstLineOfMessage;
williamr@2
   147
	TInt iLengthOfSecondLineOfMessage;
williamr@2
   148
	TInt iLengthOfFirstButtonOfMessage;
williamr@2
   149
	TInt iLengthOfSecondButtonOfMessage;
williamr@2
   150
	TInt iLengthOfCombinedBuffer;
williamr@2
   151
	HBufC* iBuffer;
williamr@2
   152
private:
williamr@2
   153
	NONSHARABLE_CLASS(CEikSrvPendingAlert) : public CActive
williamr@2
   154
		{
williamr@2
   155
	public:
williamr@2
   156
		CEikSrvPendingAlert(CEikServNotifySession& aEikServNotifySession);
williamr@2
   157
		~CEikSrvPendingAlert();
williamr@2
   158
	public:
williamr@2
   159
		void TriggerNext();
williamr@2
   160
	private: // from CActive
williamr@2
   161
		void RunL();
williamr@2
   162
		void DoCancel();
williamr@2
   163
	private:
williamr@2
   164
		CEikServNotifySession& iEikServNotifySession;
williamr@2
   165
		};
williamr@2
   166
private:
williamr@2
   167
	CEikSrvPendingAlert* iEikSrvPendingAlert;
williamr@2
   168
public: 
williamr@2
   169
	friend class CEikSrvPendingAlert;
williamr@2
   170
	};
williamr@2
   171
williamr@2
   172
williamr@2
   173
//
williamr@2
   174
// class CEikSrvNotifierWrapper
williamr@2
   175
//
williamr@2
   176
williamr@2
   177
williamr@2
   178
/**
williamr@2
   179
@internalComponent 
williamr@2
   180
*/
williamr@2
   181
NONSHARABLE_CLASS(CEikSrvNotifierWrapper) : public CBase
williamr@2
   182
	{
williamr@2
   183
public:
williamr@2
   184
	CEikSrvNotifierWrapper(MEikSrvNotifierBase2* aNotifier);
williamr@2
   185
	~CEikSrvNotifierWrapper();
williamr@2
   186
	void RegisterNotifierL();
williamr@2
   187
public:
williamr@2
   188
	MEikSrvNotifierBase2* iNotifier;
williamr@2
   189
	MEikSrvNotifierBase2::TNotifierInfo iInfo;
williamr@2
   190
	TUid iDestructorKey;
williamr@2
   191
	TUid iPlugInDllUid;
williamr@2
   192
	TBool iIsReadyForRemoval;
williamr@2
   193
	};
williamr@2
   194
williamr@2
   195
//
williamr@2
   196
// class CEikSrvNotifierRemover
williamr@2
   197
//
williamr@2
   198
williamr@2
   199
/**
williamr@2
   200
@internalComponent 
williamr@2
   201
*/
williamr@2
   202
NONSHARABLE_CLASS(CEikSrvNotifierRemover) : public CActive
williamr@2
   203
	{
williamr@2
   204
public:
williamr@2
   205
	static CEikSrvNotifierRemover* NewL();
williamr@2
   206
	void Start(CEikSrvNotifierManager* aManager, CArrayPtr<CEikSrvNotifierWrapper>* aObservedList);
williamr@2
   207
	~CEikSrvNotifierRemover();
williamr@2
   208
private:
williamr@2
   209
	CEikSrvNotifierRemover();
williamr@2
   210
private:
williamr@2
   211
	// from CActive
williamr@2
   212
	void RunL();
williamr@2
   213
	void DoCancel();
williamr@2
   214
public:
williamr@2
   215
	CEikSrvNotifierManager* iManager;
williamr@2
   216
	CArrayPtr<CEikSrvNotifierWrapper>* iObservedList;
williamr@2
   217
	};
williamr@2
   218
williamr@2
   219
williamr@2
   220
/**
williamr@2
   221
@internalComponent 
williamr@2
   222
*/
williamr@2
   223
NONSHARABLE_CLASS(CEikNotifierQueue) : public CBase
williamr@2
   224
	{
williamr@2
   225
public:
williamr@2
   226
	class CQueueItem;
williamr@2
   227
public:
williamr@2
   228
	static CEikNotifierQueue* NewL();
williamr@2
   229
	inline void QueueItemL(CEikNotifierQueue::CQueueItem* aItem);
williamr@2
   230
	CQueueItem* FetchItem(TUid aChannel);
williamr@2
   231
	TBool IsAlreadyQueued(TUid aNotifier,TUid aChannel) const;
williamr@2
   232
	void RemoveClient(TInt aClientId);
williamr@2
   233
	TInt GetHighestQueuePriority(TUid aChannel);
williamr@2
   234
	inline TInt Count() const;
williamr@2
   235
	const CQueueItem& At(TInt aIndex) const;
williamr@2
   236
	void RemoveNotifier(TUid aNotifierUid);
williamr@2
   237
public:
williamr@2
   238
	NONSHARABLE_CLASS(CQueueItem) : public CBase
williamr@2
   239
		{
williamr@2
   240
	public:
williamr@2
   241
		static CQueueItem* NewLC(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId, const TDesC8& aBuffer, const RMessage2& aMessage, TInt aReplySlot);
williamr@2
   242
		~CQueueItem();
williamr@2
   243
		inline const TDesC8& Buffer() const {return *iBuffer;}
williamr@2
   244
	private:
williamr@2
   245
		CQueueItem(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId, const RMessage2& aMessage, TInt aReplySlot);
williamr@2
   246
		void ConstructL(const TDesC8& aBuffer);
williamr@2
   247
	public:
williamr@2
   248
		const MEikSrvNotifierBase2::TNotifierInfo iInfo;
williamr@2
   249
		const TInt iClientId;
williamr@2
   250
		const RMessage2 iMessage;
williamr@2
   251
		TInt iReplySlot;
williamr@2
   252
	private:
williamr@2
   253
		HBufC8* iBuffer;
williamr@2
   254
		};
williamr@2
   255
private:
williamr@2
   256
	inline CEikNotifierQueue();
williamr@2
   257
private:
williamr@2
   258
	CArrayPtrFlat<CQueueItem> iQueue;
williamr@2
   259
	};
williamr@2
   260
williamr@2
   261
class MNotifierStarter;
williamr@2
   262
class MNotifierUpdater;
williamr@2
   263
class CDiscoverNewImplementation;
williamr@2
   264
class CPluginTrack;
williamr@2
   265
williamr@2
   266
/**
williamr@2
   267
@internalComponent
williamr@2
   268
*/
williamr@2
   269
NONSHARABLE_CLASS(CEikSrvNotifierManager) : public CBase, public MEikSrvNotifierManager
williamr@2
   270
	{
williamr@2
   271
public:
williamr@2
   272
	static CEikSrvNotifierManager* NewL();
williamr@2
   273
	~CEikSrvNotifierManager();
williamr@2
   274
	void NotifierStartL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8* aResponse,TInt aClientId);
williamr@2
   275
	TInt NotifierUpdateL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8* aResponse,TInt aClientId);
williamr@2
   276
	TInt NotifierCancel(TUid aNotifierUid);
williamr@2
   277
	void NotifierStartAndGetResponseL(TUid aNotifierUid,const TDesC8& aBuffer,TInt aReplySlot,
williamr@2
   278
										const RMessage2& aMessage,TInt aClientId,TBool& aCleanupComplete);
williamr@2
   279
	void HandleClientExit(TInt aClientId);
williamr@2
   280
	void NotifierStartAndGetResponseL(TUid aNotifierUid,TUid aChannelUid,const TDesC8& aBuffer,TInt aReplySlot,
williamr@2
   281
										const RMessage2& aMessage,TInt aClientId,TBool& aCleanupComplete);
williamr@2
   282
	void HandleScreenDeviceChangedL();
williamr@2
   283
	void RegisterSingleNotifierFromTransientPlugInL(TUid aPlugInUid, TUid aNotifierUid);
williamr@2
   284
	void NotifierUpdateAndGetResponseL(TUid aNotifierUid,const TDesC8& aBuffer,TInt aReplySlot,
williamr@2
   285
										const RMessage2& aMessage,TInt aClientId);
williamr@2
   286
public:
williamr@2
   287
	void RegisterL();
williamr@2
   288
	void CheckForEcomPluginInstallUninstall();
williamr@2
   289
public: // from MEikSrvNotifierManager 
williamr@2
   290
	void StartNotifierL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
williamr@2
   291
	void CancelNotifier(TUid aNotifierUid);
williamr@2
   292
	void UpdateNotifierL(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
williamr@2
   293
private:
williamr@2
   294
	void DoAddPlugInL(const TDesC& aPath,const TDesC& aFileName,const TUidType& aUidType);
williamr@2
   295
	void TryAddNotifiersFromNotifierArrayL(CArrayPtr<CEikSrvNotifierWrapper>* aNotifierArray, TInt& aRollBackChannels);
williamr@2
   296
	CEikSrvNotifierManager();
williamr@2
   297
	void ConstructL();
williamr@2
   298
	void StartNextFromQueue(TUid aChannel);
williamr@2
   299
	void DoStartQueuedItemLD(CEikNotifierQueue::CQueueItem* aItem);
williamr@2
   300
	TBool NotifierHandlesScreenMode(MEikSrvNotifierBase2* aNotifier);
williamr@2
   301
	CArrayPtr<CEikSrvNotifierWrapper>* TryLoadPlugInL(TUid aPlugInUid);
williamr@2
   302
	TBool TryLoadPlugInFromSpecifiedDriveL(RFs& aFs, TUid aPlugInUid, TInt aDriveIndex, CArrayPtr<CEikSrvNotifierWrapper>*& aNotifierArray);
williamr@2
   303
	CArrayPtr<CEikSrvNotifierWrapper>* LoadPlugInAndPopulateNotifierArrayL(const TDesC& aPath, const TDesC& aFileName, const TUidType& aUidType);
williamr@2
   304
	TInt QueueNotifierForPossibleRemoval(TUid aNotifierUid);
williamr@2
   305
	CArrayPtr<CEikSrvNotifierWrapper>* CreateNotifierArrayFromPlugInArrayL(CArrayPtr<MEikSrvNotifierBase2>* aPlugInArray, const TUidType& aUidType);
williamr@2
   306
	void UpdateHighestPriorityNotifiersOnThisChannelOfTheirPausingOrResuming(TUid aChannelUid, TUid aHighestPriorityNotifierOnThisChannelUid, const TDesC8& aBuffer);
williamr@2
   307
	void TryFindAndRegisterNotifierFromPlugInDllL(TUid aNotifierUid);
williamr@2
   308
	void LookForNotifierInObservedListL(TUid aNotifierUid, TUid aChannelUid, RArray<TInt>& aNotifierPositions);
williamr@2
   309
	void DoNotifierStartL(MNotifierStarter& aNotifierStarter, TBool& aCleanupComplete, TUid aNotifierUid, TUid aChannelUid, const TDesC8& aBuffer, TDes8* aResponse, TInt aClientId);
williamr@2
   310
	TInt DoNotifierUpdateL(MNotifierUpdater& aNotifierStarter, TUid aNotifierUid, const TDesC8& aBuffer, TDes8* aResponse, TInt aClientId);
williamr@2
   311
private:
williamr@2
   312
	void DoAddPlugInL(TUid aUid);
williamr@2
   313
	CArrayPtr<CEikSrvNotifierWrapper>* LoadPlugInAndPopulateNotifierArrayL(TUid aUid);
williamr@2
   314
	void UnloadEComPlugInImplementation(TInt aIndex);
williamr@2
   315
	TBool IsImplementationRemoved(TUid aImplementationUid, RImplInfoPtrArray& aPlugInArray);
williamr@2
   316
	TBool IsImplementationAdded(TUid aImplementationUid);
williamr@2
   317
private:
williamr@2
   318
	CArrayPtr<CEikSrvNotifierWrapper>* iObservedList;
williamr@2
   319
	CChannelMonitor* iChannelMonitor;
williamr@2
   320
	CActivityMonitor* iActivityMonitor;
williamr@2
   321
	CEikNotifierQueue* iQueue;
williamr@2
   322
	CEikSrvNotifierRemover* iNotifierRemover;
williamr@2
   323
	CDiscoverNewImplementation* iDiscoverNewImplementation;
williamr@2
   324
	RPointerArray <CPluginTrack> iPluginUidList;
williamr@2
   325
	};
williamr@2
   326
williamr@2
   327
williamr@2
   328
/**
williamr@2
   329
@internalComponent 
williamr@2
   330
*/
williamr@2
   331
NONSHARABLE_CLASS(CChannelMonitor) : public CBase
williamr@2
   332
	{
williamr@2
   333
public:
williamr@2
   334
	static CChannelMonitor* NewL();
williamr@2
   335
	inline void AddNewChannelL(TUid aChannel);
williamr@2
   336
	void DeleteChannel(TInt aIndex);
williamr@2
   337
	TInt NumberOfChannels() const;
williamr@2
   338
	TBool AlreadyHasChannel(TUid aChannel) const;
williamr@2
   339
	TInt ActivityLevel(TUid aChannel) const;
williamr@2
   340
	void UpdateChannel(TUid aChannel, TInt aLevel);
williamr@2
   341
private:
williamr@2
   342
	CChannelMonitor();
williamr@2
   343
private:
williamr@2
   344
	/**
williamr@2
   345
	@internalComponent
williamr@2
   346
	*/
williamr@2
   347
	NONSHARABLE_CLASS(TChannelActivity)
williamr@2
   348
		{
williamr@2
   349
	public:
williamr@2
   350
		inline TChannelActivity(TUid aChannel, TInt aHighestPriorityRunning);
williamr@2
   351
	public:
williamr@2
   352
		TUid iChannel;
williamr@2
   353
		TInt iHighestPriorityRunning;
williamr@2
   354
		};	
williamr@2
   355
private:
williamr@2
   356
	CArrayFixFlat<TChannelActivity> iMonitor;
williamr@2
   357
	};
williamr@2
   358
williamr@2
   359
williamr@2
   360
/**
williamr@2
   361
@internalComponent 
williamr@2
   362
*/
williamr@2
   363
NONSHARABLE_CLASS(CActivityMonitor) : public CBase
williamr@2
   364
	{
williamr@2
   365
public:
williamr@2
   366
	static CActivityMonitor* NewL();
williamr@2
   367
	~CActivityMonitor();
williamr@2
   368
	void AddL(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId);
williamr@2
   369
	void Remove(TUid aNotifierUid, TInt aClientId);
williamr@2
   370
	void RemoveNotifier(TUid aNotifierUid, TUid aChannel);
williamr@2
   371
	void RemoveClient(TInt aClientId);
williamr@2
   372
	TBool IsNotifierActive(TUid aNotifierUid,TUid aChannel) const;
williamr@2
   373
	TBool IsChannelActive(TUid aChannel, TUid& aNotifier,MEikSrvNotifierBase2::TNotifierPriority& aHighestPriority) const;
williamr@2
   374
	TBool IsClientPresent(TUid aNotifierUid, TUid aChannel, TInt aClientId) const;
williamr@2
   375
	TBool NotifierForClient(TUid& aNotifier, TInt aClientId) const;
williamr@2
   376
private:
williamr@2
   377
	CActivityMonitor();
williamr@2
   378
	TInt Find(TUid aNotifierUid) const;
williamr@2
   379
	TInt Find(TUid aNotifierUid, TUid aChannel) const;
williamr@2
   380
private:
williamr@2
   381
	/**
williamr@2
   382
	@internalComponent 
williamr@2
   383
	*/
williamr@2
   384
	NONSHARABLE_CLASS(CNotifierActivity) : public CBase
williamr@2
   385
		{
williamr@2
   386
	public:
williamr@2
   387
		static CNotifierActivity* NewLC(const MEikSrvNotifierBase2::TNotifierInfo& aInfo, TInt aClientId);
williamr@2
   388
		~CNotifierActivity();
williamr@2
   389
		TInt Find(TInt aClientId) const;
williamr@2
   390
	private:
williamr@2
   391
		CNotifierActivity(const MEikSrvNotifierBase2::TNotifierInfo& aInfo);
williamr@2
   392
		void ConstructL(TInt aClientId);
williamr@2
   393
	public:
williamr@2
   394
		const MEikSrvNotifierBase2::TNotifierInfo iInfo;
williamr@2
   395
		CArrayFixFlat<TInt> iClientArray;
williamr@2
   396
		};	
williamr@2
   397
private:
williamr@2
   398
	CArrayPtrFlat<CNotifierActivity> iMonitor;
williamr@2
   399
	};
williamr@2
   400
	
williamr@2
   401
williamr@2
   402
inline CChannelMonitor::TChannelActivity::TChannelActivity(TUid aChannel, TInt aHighestPriorityRunning)
williamr@2
   403
	:iChannel(aChannel), iHighestPriorityRunning(aHighestPriorityRunning)
williamr@2
   404
	{}
williamr@2
   405
williamr@2
   406
inline void CChannelMonitor::AddNewChannelL(TUid aChannel)
williamr@2
   407
	{iMonitor.AppendL(TChannelActivity(aChannel,0));}
williamr@2
   408
williamr@2
   409
inline CEikSrvNotifierManager* CEikServNotifyServer::Manager() const
williamr@2
   410
	{return iManager;}
williamr@2
   411
williamr@2
   412
inline void CEikNotifierQueue::QueueItemL(CEikNotifierQueue::CQueueItem* aItem)
williamr@2
   413
	{iQueue.AppendL(aItem);}
williamr@2
   414
	
williamr@2
   415
inline TInt CEikNotifierQueue::Count() const
williamr@2
   416
	{return iQueue.Count();}
williamr@2
   417
	
williamr@2
   418
inline CEikNotifierQueue::CEikNotifierQueue()
williamr@2
   419
	:iQueue(3)
williamr@2
   420
	{}
williamr@2
   421
williamr@2
   422
williamr@2
   423
#endif	// __EIKNFYSV_H__