|
1 /* |
|
2 * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * Server Mtm |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 |
|
21 #ifndef MMSSERVER_H |
|
22 #define MMSSERVER_H |
|
23 |
|
24 // INCLUDES |
|
25 #include <mtsr.h> |
|
26 #include <msvipc.h> |
|
27 #include <schedulebaseservermtm.h> |
|
28 #include "mmsconst.h" |
|
29 |
|
30 // CONSTANTS |
|
31 // approximate amount of disk space needed for scheduling |
|
32 // will be multiplied by the number of entries to be scheduled |
|
33 const TInt KMmsTaskSpace = 80; |
|
34 // c:\Private\1000484b\mmsvar |
|
35 _LIT( KMmsMessageVariationDirectory, "\x43:\\Private\\1000484B\\mmsvar\\" ); |
|
36 |
|
37 // MACROS |
|
38 // this definition allows logging of notifications |
|
39 // and received messages. |
|
40 //#define NOTIFICATION_LOGGING |
|
41 |
|
42 // DATA TYPES |
|
43 |
|
44 // FUNCTION PROTOTYPES |
|
45 |
|
46 // FORWARD DECLARATIONS |
|
47 class CMmsServerEntry; |
|
48 class CMmsSettings; |
|
49 class CMmsSendOperation; |
|
50 class CMmsReceiveMessage; |
|
51 class CMmsForwardOperation; |
|
52 class CMmsDeleteOperation; |
|
53 class CMmsMmboxList; |
|
54 class CMmsDecode; |
|
55 class CMmsHeaders; |
|
56 class CLogEvent; |
|
57 class CMmsLog; |
|
58 class RScheduler; |
|
59 class CMmsReadReport; |
|
60 |
|
61 // CLASS DECLARATION |
|
62 |
|
63 /** |
|
64 * Server Mtm for multimedia messaging subsystem. |
|
65 * This component will take care of message sending and receiving |
|
66 */ |
|
67 class CMmsServerMtm : public CScheduleBaseServerMtm |
|
68 { |
|
69 public: // Constructors and destructor |
|
70 // constructor is private. |
|
71 |
|
72 /** |
|
73 * Factory function. |
|
74 * The only function exported by this polymorphic interface dll.<br> |
|
75 * This function is called by message server when a client asks for |
|
76 * some service from this mtm type |
|
77 * @param aRegisteredMtmDll Reference to Mtm Dll registry class |
|
78 * @param aInitialEntry Service entry. Can be the first entry in |
|
79 * CMsvSelection array in the call from the client, or if |
|
80 * there is no service entry as the first item of the selection, |
|
81 * this will be the default service entry for this type of mtm. |
|
82 * If no default entry has been specified, and the first entry |
|
83 * in the selection is not a service entry, the creation of |
|
84 * server mtm will fail. |
|
85 * @return Pointer to CMmsServerClass. |
|
86 */ |
|
87 IMPORT_C static CMmsServerMtm* NewL( |
|
88 CRegisteredMtmDll& aRegisteredMtmDll, |
|
89 CMsvServerEntry* aInitialEntry ); |
|
90 |
|
91 /** |
|
92 * Destructor. |
|
93 */ |
|
94 ~CMmsServerMtm(); |
|
95 |
|
96 public: // New functions |
|
97 |
|
98 public: // Functions from base classes |
|
99 |
|
100 // Copy and move, these are actually designed for email. |
|
101 // They can be used for other purposes, if seem fit |
|
102 |
|
103 // Miscellaneous copy, move and other entry handling functions |
|
104 // are not supported in increment 1. |
|
105 |
|
106 /** |
|
107 * From CBaseServerMtm: Copy messages from remote service to |
|
108 * local folders |
|
109 * @param aSelection list of TMsvIds of messages. The first is the service |
|
110 * @param aDestination TMsvId of the destination folder (for example inbox) |
|
111 * @param aStatus the status of the active object that is using this |
|
112 * function as asynchronous service provider. This status will be |
|
113 * set as completed when the server mtm active object is done. |
|
114 */ |
|
115 void CopyToLocalL( |
|
116 const CMsvEntrySelection& aSelection, |
|
117 TMsvId aDestination, |
|
118 TRequestStatus& aStatus ); |
|
119 |
|
120 /** |
|
121 * From CBaseServerMtm: Copy messages from local folder to |
|
122 * remote service |
|
123 * @param aSelection list of TMsvIds of messages. The first is the service |
|
124 * @param aDestination TMsvId of the destination folder |
|
125 * @param aStatus the status of the active object that is using this |
|
126 * function as asynchronous service provider. This status will be |
|
127 * set as completed when the server mtm active object is done. |
|
128 */ |
|
129 void CopyFromLocalL( |
|
130 const CMsvEntrySelection& aSelection, |
|
131 TMsvId aDestination, |
|
132 TRequestStatus& aStatus ); |
|
133 |
|
134 /** |
|
135 * From CBaseServerMtm: Copy messages |
|
136 * @param aSelection list of TMsvIds of messages. The first is the service |
|
137 * @param aStatus the status of the active object that is using this |
|
138 * function as asynchronous service provider. This status will be |
|
139 * set as completed when the server mtm active object is done. |
|
140 */ |
|
141 void CopyWithinServiceL( |
|
142 const CMsvEntrySelection& aSelection, |
|
143 TMsvId aDestination, |
|
144 TRequestStatus& aStatus ); |
|
145 |
|
146 /** |
|
147 * From CBaseServerMtm: Move messages from remote service to |
|
148 * local folders |
|
149 * @param aSelection list of TMsvIds of messages. The first is the service |
|
150 * @param aDestination TMsvId of the destination folder (for example inbox) |
|
151 * @param aStatus the status of the active object that is using this |
|
152 * function as asynchronous service provider. This status will be |
|
153 * set as completed when the server mtm active object is done. |
|
154 */ |
|
155 void MoveToLocalL( |
|
156 const CMsvEntrySelection& aSelection, |
|
157 TMsvId aDestination, |
|
158 TRequestStatus& aStatus ); |
|
159 |
|
160 /** |
|
161 * From CBaseServerMtm: Move messages from local folder to |
|
162 * remote service |
|
163 * @param aSelection list of TMsvIds of messages. The first is the service |
|
164 * @param aDestination TMsvId of the destination folder |
|
165 * @param aStatus the status of the active object that is using this |
|
166 * function as asynchronous service provider. This status will be |
|
167 * set as completed when the server mtm active object is done. |
|
168 */ |
|
169 void MoveFromLocalL( |
|
170 const CMsvEntrySelection& aSelection, |
|
171 TMsvId aDestination, |
|
172 TRequestStatus& aStatus ); |
|
173 |
|
174 /** |
|
175 * From CBaseServerMtm: Move messages |
|
176 * @param aSelection list of TMsvIds of messages. The first is the service |
|
177 * @param aDestination TMsvId of the destination folder. |
|
178 * @param aStatus the status of the active object that is using this |
|
179 * function as asynchronous service provider. This status will be |
|
180 * set as completed when the server mtm active object is done. |
|
181 */ |
|
182 void MoveWithinServiceL( |
|
183 const CMsvEntrySelection& aSelection, |
|
184 TMsvId aDestination, |
|
185 TRequestStatus& aStatus ); |
|
186 |
|
187 // Create, change, delete |
|
188 |
|
189 /** |
|
190 * From CBaseServerMtm: delete specified entries. |
|
191 * @param aSelection entries to be deleted |
|
192 * @param aStatus the status of the active object that is using this |
|
193 * function as asynchronous service provider. This status will be |
|
194 * set as completed when the server mtm active object is done. |
|
195 */ |
|
196 void DeleteAllL( |
|
197 const CMsvEntrySelection& aSelection, |
|
198 TRequestStatus& aStatus ); |
|
199 |
|
200 /** |
|
201 * From CBaseServerMtm: Create a new entry. |
|
202 * @param aNewEntry Basic settings for the new entry. |
|
203 * @param aStatus the status of the active object that is using this |
|
204 * function as asynchronous service provider. This status will be |
|
205 * set as completed when the server mtm active object is done. |
|
206 */ |
|
207 void CreateL( TMsvEntry aNewEntry, TRequestStatus& aStatus ); |
|
208 |
|
209 /** |
|
210 * From CBaseServerMtm: Change an entry. |
|
211 * @param aNewEntry New settings for the entry. |
|
212 * @param aStatus the status of the active object that is using this |
|
213 * function as asynchronous service provider. This status will be |
|
214 * set as completed when the server mtm active object is done. |
|
215 */ |
|
216 void ChangeL( TMsvEntry aNewEntry, TRequestStatus& aStatus ); |
|
217 |
|
218 // command and progress |
|
219 |
|
220 /** |
|
221 * From CBaseServerMtm: Execute any MTM specific asynchronous command. |
|
222 * @param aSelection List of TMsvIds of messages. The first is the service |
|
223 * @param aCommand The command to be executed |
|
224 * @param aParameter Any special parameter the specified command needs |
|
225 * @param aStatus the status of the active object that is using this |
|
226 * function as asynchronous service provider. This status will be |
|
227 * set as completed when the server mtm active object is done. |
|
228 */ |
|
229 void StartCommandL( |
|
230 CMsvEntrySelection& aSelection, |
|
231 TInt aCommand, |
|
232 const TDesC8& aParameter, |
|
233 TRequestStatus& aStatus ); |
|
234 |
|
235 /** |
|
236 * From CBaseServerMtm: Before releasing the server mtm, the message |
|
237 * server can query, if the mtm is expecting another command soon, |
|
238 * so that unloading should be delayed. |
|
239 * @return ETrue if more commands are expected, EFalse otherwise |
|
240 */ |
|
241 TBool CommandExpected(); |
|
242 |
|
243 /** |
|
244 * From CBaseServerMtm: Accessor to progress of current operation. |
|
245 * @return progress value |
|
246 */ |
|
247 const TDesC8& Progress(); |
|
248 |
|
249 /** |
|
250 * From CScheduleBaseServerMtm: Load default resource file |
|
251 */ |
|
252 void LoadResourceFileL(); |
|
253 |
|
254 /** |
|
255 * From CScheduleBaseServerMtm: Put data into schedule package |
|
256 * @param aParameter |
|
257 * @param aPackage |
|
258 */ |
|
259 void PopulateSchedulePackage(const TDesC8& aParameter, const TBool aMove, TMsvSchedulePackage& aPackage) const; |
|
260 |
|
261 protected: // New functions |
|
262 |
|
263 protected: // Functions from base classes |
|
264 |
|
265 /** |
|
266 * From CActive: Cancel current operation. |
|
267 */ |
|
268 void DoCancel(); |
|
269 |
|
270 /** |
|
271 * From CBaseServerMtm: Do work. |
|
272 */ |
|
273 void DoRunL(); |
|
274 |
|
275 /** |
|
276 * From CBaseServerMtm: Complete current operation. |
|
277 * @param aError Error code to be returned as final status |
|
278 */ |
|
279 void DoComplete( TInt aError ); |
|
280 |
|
281 /** |
|
282 * From CScheduleBaseServerMtm: Restore scheduling settings |
|
283 */ |
|
284 void RestoreScheduleSettingsL(TBool aRestoreErrorsFromResource = EFalse, TInt aErrorsResourceId = 0 ); |
|
285 |
|
286 private: |
|
287 |
|
288 /** |
|
289 * By default Symbian OS constructor is private. |
|
290 */ |
|
291 CMmsServerMtm( |
|
292 CRegisteredMtmDll& aRegisteredMtmDll, |
|
293 CMsvServerEntry* aInitialEntry ); |
|
294 |
|
295 /** |
|
296 * construct function that may leave |
|
297 */ |
|
298 void ConstructL(); |
|
299 |
|
300 // By default, prohibit copy constructor |
|
301 CMmsServerMtm( const CMmsServerMtm& ); |
|
302 // Prohibit assigment operator |
|
303 CMmsServerMtm& operator= ( const CMmsServerMtm& ); |
|
304 |
|
305 /** |
|
306 * Loads settings (also schedule settings). |
|
307 * Sets service entry. |
|
308 * @return error code |
|
309 */ |
|
310 void LoadSettingsL( TInt aCommand ); |
|
311 |
|
312 /** |
|
313 * Send current selection to MMSC using current service. |
|
314 */ |
|
315 void SendToMmscL(); |
|
316 |
|
317 /** |
|
318 * Send current selection to MMSC using current service and |
|
319 * CMmsForwardMessage operation class. |
|
320 */ |
|
321 void SendForwardRequestsToMmscL(); |
|
322 |
|
323 /** |
|
324 * Fetch messages from MMSC using current service. |
|
325 */ |
|
326 void FetchFromMmscL(); |
|
327 |
|
328 /** |
|
329 * Check which entries have failed an operation |
|
330 * and rescedule the failed ones. |
|
331 */ |
|
332 void UpdateEntriesL(); |
|
333 |
|
334 /** |
|
335 * Reschedule entries for which forward has failed |
|
336 * @param aPackage schedule package needed in rescheduling |
|
337 */ |
|
338 void HandleFailedForwardsL( TMsvSchedulePackage& aPackage ); |
|
339 |
|
340 /** |
|
341 * Clean schedule for successfully sent entries |
|
342 */ |
|
343 void HandleSuccessfulSendsL(); |
|
344 |
|
345 /** |
|
346 * Reschedule entries for which sending has failed |
|
347 * @param aPackage schedule package needed in rescheduling |
|
348 */ |
|
349 void HandleFailedSendsL( TMsvSchedulePackage& aPackage ); |
|
350 |
|
351 /** |
|
352 * Cleanup after message generation. |
|
353 */ |
|
354 void CleanupAfterMessageGenerationL(); |
|
355 |
|
356 /** |
|
357 * Handle entries for which receiving has failed |
|
358 * @param aPackage schedule package needed in rescheduling |
|
359 * @param aFatalError an error that must be returned to caller |
|
360 * @return |
|
361 * - ETrue if fetching must be restarted immediately |
|
362 * - EFalse if normal scheduling or failing is wanted |
|
363 */ |
|
364 TBool HandleFailedReceivesL( TMsvSchedulePackage& aPackage, TInt& aFatalError ); |
|
365 |
|
366 /** |
|
367 * Clean up successfully fetched entries |
|
368 */ |
|
369 void HandleSuccessfulReceivesL(); |
|
370 |
|
371 /** |
|
372 * Clean up bad notification entries |
|
373 */ |
|
374 void HandleBadNotificationsL(); |
|
375 |
|
376 /** |
|
377 * Reschedule unhandled delivery reports |
|
378 * @param aPackage schedule package needed in rescheduling |
|
379 */ |
|
380 void UpdateDeliveryReportsL( TMsvSchedulePackage& aPackage ); |
|
381 |
|
382 /** |
|
383 * Handke read reports whose sending has failed |
|
384 */ |
|
385 void HandleFailedReadReports(); |
|
386 |
|
387 |
|
388 /** |
|
389 * Make dates for scheduled entries identical. |
|
390 * This is needed at least in debug version, because |
|
391 * ScheduleL does want to assert that the dates of all |
|
392 * the entries are identical. <br> |
|
393 * We don't care and would send anything, but Symbian OS doesn't |
|
394 * allow us to. |
|
395 * @param aSelection the entries to be handled |
|
396 * @param aInterval the delay between NOW and the actual operation. |
|
397 * Must be positive, and greater than KMmsDelayInSeconds, |
|
398 * otherwise KMmsDelayInSeconds will be used, because |
|
399 * the task scheduler will not handle tasks that are overdue |
|
400 * @param aClearError specifies if the old error from the entry |
|
401 * should be cleared. Clearing is needed to prevent |
|
402 * MsgErrorWatcher from reacting to the same error twice |
|
403 */ |
|
404 void MakeDatesIdenticalL( CMsvEntrySelection& aSelection, |
|
405 TTimeIntervalSeconds aInterval, TBool aClearError = EFalse ); |
|
406 |
|
407 /** |
|
408 * Decode the data content of a pushed message. |
|
409 * The content should be either a MMS notification or a |
|
410 * delivery report. |
|
411 * If the content is a MMS notification, the message must |
|
412 * be scheduled for fetching. |
|
413 */ |
|
414 void DecodePushedMessageL(); |
|
415 |
|
416 /** |
|
417 * Schedule fetching of message referred to by this notification. |
|
418 * The decoded message is stored in iMsvSelection. |
|
419 */ |
|
420 void HandleNotificationL(); |
|
421 |
|
422 /** |
|
423 * Schedule a delivery report for logging |
|
424 * The decoded message is stored in iMsvSelection. |
|
425 */ |
|
426 void HandleDeliveryReportL(); |
|
427 |
|
428 /** |
|
429 * Update the contents of message log from the delivery report. |
|
430 * delete the handled delivery report. |
|
431 */ |
|
432 void LogDeliveryReportL(); |
|
433 |
|
434 /** |
|
435 * Check if there are notifications that have identical URI. |
|
436 * If yes, this is a duplicate, and should be discarded |
|
437 * @param aParent folder where the notifications are stored |
|
438 * @param aNotification MMS headers for the new notification for |
|
439 * identity check. |
|
440 * @return ETrue if the notification is a duplicate and shoud be discarded |
|
441 * EFalse if a duplicate has not been found |
|
442 */ |
|
443 TBool PruneDuplicateNotificationsL( TMsvId aParent, CMmsHeaders& aNotification ); |
|
444 |
|
445 /** |
|
446 * Checks the fate of existing notifications. |
|
447 * Checks if the notifications have expired, and if |
|
448 * they have, they are deleted. |
|
449 * Also checks, if the notifications have failed the |
|
450 * maximum number of times. The failed notifications |
|
451 * are removed. |
|
452 * @param aSelection reference to a TMSVId list. At return it |
|
453 * contains any notifications that still need rescheduling. |
|
454 * If the list is empty, notifications from mmsFolder are added |
|
455 * and checked. |
|
456 */ |
|
457 void CheckNotificationsL( CMsvEntrySelection& aSelection ); |
|
458 |
|
459 /** |
|
460 * Fake function for testing purposes. |
|
461 * Creates notifications containing file paths. |
|
462 */ |
|
463 void CreateNotificationsL(); |
|
464 |
|
465 /** |
|
466 * Create notification into member buffer |
|
467 * Fake function for testing purposes. |
|
468 * @param aUrl address of the message (path & filename) |
|
469 * @param aSize size of the message (file) |
|
470 */ |
|
471 void CreateNotificationL( TDesC8& aUrl, TInt aSize ); |
|
472 |
|
473 /** |
|
474 * Do the actual garbage collection |
|
475 * This means: If there are entries in outbox, check if |
|
476 * they have been sent. If they have, move them to sent |
|
477 * folder or delete them. |
|
478 * If there are entries in outbox, that have not been sent, |
|
479 * schedule them for sending (unless already scheduled). |
|
480 * If there are pending delivery reports, log them. |
|
481 * If there are notifications, check if the correspoding |
|
482 * messages have been fetched already. If they have, delete |
|
483 * the notifications. |
|
484 * If the messages have not been fetched, schedule them for |
|
485 * fetching (unlessa already scheduled). |
|
486 */ |
|
487 void GarbageCollectionL(); |
|
488 |
|
489 /** |
|
490 * Delete schedule and reset retries for all entries in list |
|
491 * @param aSelection list of entries to be cleared. |
|
492 */ |
|
493 void CleanSchedulesL( CMsvEntrySelection& aSelection ); |
|
494 |
|
495 /** |
|
496 * Find the folder where MMS messages are to be stored |
|
497 */ |
|
498 TMsvId FindMMSFolderL(); |
|
499 |
|
500 /* |
|
501 * Check if disk space is below critical level for scheduling. |
|
502 * Checks both message drive and drive C:, as scheduling data goes |
|
503 * to C: drive regardless of message drive. |
|
504 * Params are as for function TMmsGenUtils::DiskSpaceBelowCriticalLevelL, |
|
505 * but this subroutine checks drive C: automatically in additio to |
|
506 * drive specified. |
|
507 * @param aFs File server session. |
|
508 * @param aBytesToWrite number of bytes the caller is about to add. |
|
509 * The value 0 checks if the current |
|
510 * space is already below the CL. |
|
511 * @param aDrive number of the drive to be checked. |
|
512 * @return ETrue if storage space would go below CL after adding |
|
513 * aBytesToWrite more data, EFalse otherwise. |
|
514 * Leaves on error with one of system-wide error code. |
|
515 * e.g. KErrNotReady if drive contains no media. |
|
516 */ |
|
517 TBool DiskSpaceBelowCriticalForSchedulingL( RFs* aFs, |
|
518 TInt aBytesToWrite, TInt aMessageDrive); |
|
519 |
|
520 /* |
|
521 * Helper function to schedule a selection (send or receive) |
|
522 * and put the selection into "failed" state if schdeduling fails. |
|
523 * iMsvSelection must contain some entries to be scheduled. |
|
524 * @return error code |
|
525 */ |
|
526 TInt ScheduleSelectionL(); |
|
527 |
|
528 /** |
|
529 * HandleDummyEntryL reads notification data from entry's store, |
|
530 * and then deletes the entry. |
|
531 */ |
|
532 void HandleDummyEntryL(); |
|
533 |
|
534 /** |
|
535 * HandleMMBoxFlagL sets the stored-in-mmbox flag in indexentry |
|
536 * primarily according to notification or secondarily (if notification |
|
537 * does not specify it) according to shared data. |
|
538 * @param aEntry reference to indexentry into which the change is done |
|
539 */ |
|
540 void HandleMMBoxFlagL( TMsvEntry& aEntry ); |
|
541 |
|
542 /** |
|
543 * Garbage collection of notification entries in Outbox. |
|
544 * Currently notifications can be only forward requests |
|
545 */ |
|
546 void GcOutBoxNotificationsL(); |
|
547 |
|
548 /** |
|
549 * Garbage collection of messages in outbox. |
|
550 */ |
|
551 void GcOutBoxMessagesL(); |
|
552 |
|
553 /** |
|
554 * Garbage collection of notifications in MMS private folder. |
|
555 */ |
|
556 void GcMmsFolderNotificationsL(); |
|
557 |
|
558 /** |
|
559 * Garbage collection of notifications in inbox. |
|
560 */ |
|
561 void GcInboxNotifications(); |
|
562 |
|
563 /** |
|
564 * Garbage collection of notification entries in mmbox folder. |
|
565 * Since 2.8 |
|
566 */ |
|
567 void GcMmboxFolderNotifications(); |
|
568 |
|
569 /** |
|
570 * Find duplicate notification |
|
571 * @param aParent entry id, under where the duplicate is searched |
|
572 * @param aHeaders the original mms headers, whose duplicate is searched |
|
573 * @param aDuplicate entry id of the found duplicate |
|
574 */ |
|
575 TInt FindDuplicateNotificationL( TMsvId aParent, |
|
576 CMmsHeaders& aHeaders, TMsvId& aDuplicate ); |
|
577 |
|
578 /** |
|
579 * Send a read report to the originator of the MMS message |
|
580 */ |
|
581 void SendReadReportL(); |
|
582 |
|
583 /** |
|
584 * Log command code for debugging purposes |
|
585 * @param aCommand The command code MMS Server MTM was entered with |
|
586 */ |
|
587 void LogCommandCode( TInt aCommand ); |
|
588 |
|
589 /** |
|
590 * Get id of the actual MMS service. |
|
591 * This is needed when MMS Server MTM is originally called using local service id |
|
592 */ |
|
593 void GetRealServiceId( CMsvEntrySelection& aSelection ); |
|
594 |
|
595 /** |
|
596 * Terminate caller or loop to retry in case settings cannot be loaded |
|
597 */ |
|
598 void HandleLoadServiceError( TInt aError ); |
|
599 |
|
600 /** |
|
601 * Log the parent of the first entry in the list (for debugging) |
|
602 */ |
|
603 void LogEntryParent(); |
|
604 |
|
605 /** |
|
606 * Make sure outbox entries are visible and that the service id |
|
607 * is restored in case of schedule deletion command |
|
608 */ |
|
609 void RestoreVisibilityAndService(); |
|
610 |
|
611 public: // Data |
|
612 |
|
613 protected: // Data |
|
614 |
|
615 private: // Data |
|
616 CMsvEntrySelection* iMsvSelection; // current selection |
|
617 TMsvId iServiceEntryId; // Current service id |
|
618 TMsvId iNotification; // Notification entry under construction |
|
619 TRequestStatus* iRequestStatus; // status of the calling program |
|
620 // This class may not leave in case of out of memory state |
|
621 // when sending or receiving a message |
|
622 TBool iOOMState; // out of memory error indicator. |
|
623 TBuf8<KMsvProgressBufferLength> iProgressBuffer; |
|
624 CMmsSettings* iMmsSettings; // settings corresponding to iServiceentryId |
|
625 CMmsHeaders* iMmsHeaders; // just needed to stay alive for a while |
|
626 TInt iCurrentMessage; |
|
627 |
|
628 // State machine classes for different operations |
|
629 CMmsSendOperation* iSendOperation; |
|
630 CMmsReceiveMessage* iReceiveMessage; |
|
631 CMmsForwardOperation* iForwardOperation; |
|
632 CMmsDeleteOperation* iDeleteOperation; |
|
633 CMmsMmboxList* iUpdateMmboxList; |
|
634 CMmsReadReport* iReadReport; |
|
635 |
|
636 CMmsDecode* iDecoder; // decoder for notifications and delivery reports |
|
637 TInt iCommand; // command for scheduled operations (send or receive) |
|
638 TInt iCurrentCommand; // The asynchronous function that was sent to us |
|
639 TBufC8<KMaxParameterLength> iParameter; |
|
640 TInt iError; // for collecting errors from different operations... |
|
641 CBufFlat* iEncodeBuffer; // for decoding notifications and delivery reports |
|
642 CLogClient *iLogClient; // For updating log |
|
643 CLogViewEvent *iLogViewEvent; // log view |
|
644 CLogEvent* iLogEvent; |
|
645 TLogString iLogString; |
|
646 CMmsLog* iMmsLog; |
|
647 CDesCArray* iRemoteParties; // Pure addresses to log |
|
648 TInt iMessageDrive; // messages are on C: drive by default, |
|
649 // may be moved to other drive |
|
650 CMmsServerEntry* iEntryWrapper; |
|
651 TParse iParse; // member to save stack space |
|
652 |
|
653 TBool iDeliveryStatus; //Delivered = ETrue , Rejected = EFalse |
|
654 |
|
655 public: // Friend classes |
|
656 protected: // Friend classes |
|
657 private: // Friend classes |
|
658 |
|
659 }; |
|
660 |
|
661 |
|
662 // panic function |
|
663 GLREF_C void gPanic( TMmsPanic aPanic ); |
|
664 |
|
665 #endif // MMSSERVER_H |
|
666 |
|
667 // End of File |