30 class CAsyncCleaner; |
30 class CAsyncCleaner; |
31 |
31 |
32 /** |
32 /** |
33 * Combined task handler arrival observer and task handler manager. |
33 * Combined task handler arrival observer and task handler manager. |
34 */ |
34 */ |
35 NONSHARABLE_CLASS(CTaskArrivalObserver) : public CAsyncOneShot, public MEventObserver, public MTaskHandlerManager |
35 NONSHARABLE_CLASS(CTaskArrivalObserver) : public CBase, |
|
36 public MEventObserver, |
|
37 public MTaskHandlerManager |
36 { |
38 { |
37 public: |
39 public: |
38 static CTaskArrivalObserver* NewL(); |
40 static CTaskArrivalObserver* NewL(); |
39 ~CTaskArrivalObserver(); |
41 ~CTaskArrivalObserver(); |
40 |
|
41 private: // From CAsyncOneShot |
|
42 void RunL(); |
|
43 |
42 |
44 public: |
43 public: |
45 void Start(); |
44 void Start(); |
46 void Cancel(); |
45 void Cancel(); |
47 void DeleteTaskHandler(CTaskHandler* aTaskHandler); |
46 void DeleteTaskHandler(CTaskHandler* aTaskHandler); |
57 private: // Construction |
56 private: // Construction |
58 CTaskArrivalObserver(); |
57 CTaskArrivalObserver(); |
59 void ConstructL(); |
58 void ConstructL(); |
60 |
59 |
61 private: // Implementation |
60 private: // Implementation |
62 void LaunchTaskHandlerL(const TTaskArrivedEventData& aEventSpec); |
61 void LaunchTaskHandlerL(const TTaskArrivedEventData& aEventSpec); |
63 CTaskHandler* CreateTaskHandlerL(const TTaskArrivedEventData& aEventSpec); |
|
64 TInt FindTaskHandler(CTaskHandler* aTaskHandler); |
|
65 TInt FindAsyncCleaner(CAsyncCleaner* aAsyncCleaner); |
|
66 void AsyncDeleteTaskHandler(CTaskHandler* aTaskHandler); |
|
67 |
62 |
68 private: |
63 private: |
69 REventMediator iEventMediator; |
64 REventMediator iEventMediator; |
70 CArrayPtrFlat<CTaskHandler>* iTaskHandlerList; |
65 CArrayPtrFlat<CTaskHandler>* iTaskHandlerList; |
71 CArrayPtrFlat<CAsyncCleaner>* iAsyncCleanerList; |
66 CArrayPtrFlat<CAsyncCleaner>* iAsyncCleanerList; |
72 CTaskHandler* iTaskHandlerToDelete; |
|
73 }; |
67 }; |
74 |
68 |
75 NONSHARABLE_CLASS(CAsyncCleaner) : public CAsyncOneShot |
69 NONSHARABLE_CLASS(CAsyncCleaner) : public CAsyncOneShot |
76 { |
70 { |
77 public: |
71 public: |
78 CAsyncCleaner(CTaskArrivalObserver* aTaskArrivalObserver, |
72 CAsyncCleaner(CTaskArrivalObserver* aTaskArrivalObserver, |
79 CTaskHandler* aTaskHandlerToDelete); |
73 CTaskHandler* aTaskHandlerToDelete); |
80 void Start(); |
74 void Start(); |
81 |
75 TBool IsMatchingCleaner(const CTaskHandler& aTaskHandler) const; |
82 private: // From CAsyncOneShot |
76 private: // From CAsyncOneShot |
83 void RunL(); |
77 void RunL(); |
84 |
78 |
85 private: |
79 private: |
86 CTaskArrivalObserver* iTaskArrivalObserver; |
80 CTaskArrivalObserver* iTaskArrivalObserver; |