williamr@2
|
1 |
// Copyright (c) 2001-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 |
#ifndef __OBEXSENDOP_H__
|
williamr@2
|
18 |
#define __OBEXSENDOP_H__
|
williamr@2
|
19 |
|
williamr@2
|
20 |
|
williamr@2
|
21 |
|
williamr@2
|
22 |
//#define __OBEX_SEND_OP_FILE_DEBUG_MODE__
|
williamr@2
|
23 |
|
williamr@2
|
24 |
#include <msvapi.h>
|
williamr@2
|
25 |
#include <badesca.h> // CDesCArray
|
williamr@2
|
26 |
#include <obex.h>
|
williamr@2
|
27 |
#include <obexclientmtm.h> //TObexMtmProgress
|
williamr@2
|
28 |
|
williamr@2
|
29 |
|
williamr@2
|
30 |
class CObexHeaderList;
|
williamr@2
|
31 |
|
williamr@2
|
32 |
|
williamr@2
|
33 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
34 |
// Panic Code
|
williamr@2
|
35 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
36 |
|
williamr@2
|
37 |
///Obex Send Operation Panics
|
williamr@2
|
38 |
enum TObexSendOperationPanic
|
williamr@2
|
39 |
{
|
williamr@2
|
40 |
EObexSendOperationAlreadyActive, ///< The current Obex send operation is already active
|
williamr@2
|
41 |
EObexSendOperationUnknownJob, ///<
|
williamr@2
|
42 |
EObexSendOperationUnknownSendState, ///< The current value of the Obex send state of the send operation is not found in TObexMtmProgress::TSendState
|
williamr@2
|
43 |
EObexSendOperationUnexpectedTimeout ///< Panic if send has timeout unexpectedly
|
williamr@2
|
44 |
};
|
williamr@2
|
45 |
|
williamr@2
|
46 |
GLDEF_C void Panic(TObexSendOperationPanic aPanic);
|
williamr@2
|
47 |
|
williamr@2
|
48 |
|
williamr@2
|
49 |
|
williamr@2
|
50 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
51 |
// CObexServerSendOperation
|
williamr@2
|
52 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
53 |
class CObexSendOpTimeout;
|
williamr@2
|
54 |
class CObexPasswordGetter;
|
williamr@2
|
55 |
|
williamr@2
|
56 |
class CObexServerSendOperation : public CActive, public MObexAuthChallengeHandler
|
williamr@2
|
57 |
/**
|
williamr@2
|
58 |
class CObexServerSendOperation
|
williamr@2
|
59 |
|
williamr@2
|
60 |
Obex Server Send Operation:
|
williamr@2
|
61 |
|
williamr@2
|
62 |
Base class for Send operations using Obex protocol.
|
williamr@2
|
63 |
|
williamr@2
|
64 |
Implements a state machine with the following states:
|
williamr@2
|
65 |
Initialise-->Connect-->ConnectAttemptComplete-->SendObject-->(SendNextObject-->)SendComplete-->MovedToSent-->Disconnected
|
williamr@2
|
66 |
|
williamr@2
|
67 |
The pure virtual function InitialiseObexClientL() must be overridden in the base class to initialise the
|
williamr@2
|
68 |
iObexClient member to use the desired Obex transport mechanism (e.g. infrared, Bluetooth).
|
williamr@2
|
69 |
|
williamr@2
|
70 |
In order to allow asynchronous transport initialisations (for example BT's SDP Query)
|
williamr@2
|
71 |
implementations of this function must set iAsyncInit and provide a mechanism to
|
williamr@2
|
72 |
complete a request. See the bluetooth server mtm code for implementation details.
|
williamr@2
|
73 |
|
williamr@2
|
74 |
@internalTechnology
|
williamr@2
|
75 |
@released
|
williamr@2
|
76 |
*/
|
williamr@2
|
77 |
{
|
williamr@2
|
78 |
public:
|
williamr@2
|
79 |
|
williamr@2
|
80 |
/**
|
williamr@2
|
81 |
* Destructor. Cancel()s, deletes owned objects and Close()s the connection to the FileServer.
|
williamr@2
|
82 |
*/
|
williamr@2
|
83 |
|
williamr@2
|
84 |
virtual IMPORT_C ~CObexServerSendOperation();
|
williamr@2
|
85 |
|
williamr@2
|
86 |
/// Must be implemented in the derived class to initialise the iObexClient member to use the desired Obex transport mechanism
|
williamr@2
|
87 |
virtual void InitialiseObexClientL() =0;
|
williamr@2
|
88 |
|
williamr@2
|
89 |
/**
|
williamr@2
|
90 |
* This is not required to do anything in the base implementation.
|
williamr@2
|
91 |
*/
|
williamr@2
|
92 |
|
williamr@2
|
93 |
IMPORT_C virtual void SecondPhaseObexClientInitL(); // may be overridden to do anything required in a second phase. default implementation is blank.
|
williamr@2
|
94 |
|
williamr@2
|
95 |
/**
|
williamr@2
|
96 |
* Operations to perform before attempting a connection.
|
williamr@2
|
97 |
* As multiple connection attempts can be made, it is necessary for this
|
williamr@2
|
98 |
* routine to ensure it can handle being called multiple times.
|
williamr@2
|
99 |
* May be overridden. Default implementation is blank.
|
williamr@2
|
100 |
*/
|
williamr@2
|
101 |
IMPORT_C virtual void PreConnectOperations();
|
williamr@2
|
102 |
|
williamr@2
|
103 |
/**
|
williamr@2
|
104 |
* Operations to perform after attempting a connection.
|
williamr@2
|
105 |
* As multiple connection attempts can be made, it is necessary for this
|
williamr@2
|
106 |
* routine to ensure it can handle being called multiple times.
|
williamr@2
|
107 |
* May be overridden. Default implementation is blank.
|
williamr@2
|
108 |
*/
|
williamr@2
|
109 |
IMPORT_C virtual void PostConnectOperations();
|
williamr@2
|
110 |
|
williamr@2
|
111 |
/**
|
williamr@2
|
112 |
* Operations to perform before attempting to send a set of objects.
|
williamr@2
|
113 |
* May be overridden. Default implementation is blank.
|
williamr@2
|
114 |
*/
|
williamr@2
|
115 |
IMPORT_C virtual void PreSendOperations();
|
williamr@2
|
116 |
|
williamr@2
|
117 |
/**
|
williamr@2
|
118 |
* Operations to perform after attempting to send a set of objects.
|
williamr@2
|
119 |
* May be overridden. Default implementation is blank.
|
williamr@2
|
120 |
*/
|
williamr@2
|
121 |
IMPORT_C virtual void PostSendOperations();
|
williamr@2
|
122 |
|
williamr@2
|
123 |
|
williamr@2
|
124 |
protected: // for use by derived classes
|
williamr@2
|
125 |
/**
|
williamr@2
|
126 |
* Constructor.
|
williamr@2
|
127 |
*
|
williamr@2
|
128 |
* @param aMsgTypeUid UID of message type
|
williamr@2
|
129 |
* @param aSendObj Reference to the object to send.
|
williamr@2
|
130 |
* @param aConnectTimeoutMicroSeconds Timeout period for Connect operation in microseconds.
|
williamr@2
|
131 |
* @param aPutTimeoutMicroseconds Timeout period for Put operation in microseconds.
|
williamr@2
|
132 |
* @param aObserverRequestStatus TRequestStatus of owning active object.
|
williamr@2
|
133 |
*/
|
williamr@2
|
134 |
|
williamr@2
|
135 |
IMPORT_C CObexServerSendOperation(TUid aMsgTypeUid, CMsvServerEntry& aSendObj, TInt aConnectTimeoutMicroSeconds, TInt aPutTimeoutMicroSeconds, TRequestStatus& aObserverRequestStatus);
|
williamr@2
|
136 |
|
williamr@2
|
137 |
/**
|
williamr@2
|
138 |
* Second phase constructor. Sets up connection to the FileServer, initialises attachments or filename list then
|
williamr@2
|
139 |
* starts sending process by initialising.
|
williamr@2
|
140 |
*
|
williamr@2
|
141 |
* @param aConnectPassword Pointer to the password to be used for authentication.
|
williamr@2
|
142 |
* @leave Leaves if insufficient memory.
|
williamr@2
|
143 |
* @leave Leaves if cannot connect to FileServer.
|
williamr@2
|
144 |
*/
|
williamr@2
|
145 |
|
williamr@2
|
146 |
IMPORT_C void ConstructL(const TDesC* aConnectPassword);
|
williamr@2
|
147 |
|
williamr@2
|
148 |
/**
|
williamr@2
|
149 |
* Cancels the current operation, deletes the client and Cancel()s the timeout timer. Only completes the observer
|
williamr@2
|
150 |
* (by a call to CompleteObserver) if an external entity (i.e. the owner) has called Cancel().
|
williamr@2
|
151 |
* Otherwise the observer is not completed.
|
williamr@2
|
152 |
*/
|
williamr@2
|
153 |
|
williamr@2
|
154 |
IMPORT_C virtual void DoCancel();
|
williamr@2
|
155 |
|
williamr@2
|
156 |
/* Constructor, Alternative version
|
williamr@2
|
157 |
*
|
williamr@2
|
158 |
* @param aMsgTypeUid UID of message type
|
williamr@2
|
159 |
* @param aSendObj Reference to the object to send.
|
williamr@2
|
160 |
* @param aConnectTimeoutMicroSeconds Timeout period for Connect operation in microseconds.
|
williamr@2
|
161 |
* @param aPutTimeoutMicroseconds Timeout period for Put operation in microseconds.
|
williamr@2
|
162 |
* @param aObserverRequestStatus TRequestStatus of owning active object.
|
williamr@2
|
163 |
* @param aLastSendAttempt TBool flag to check for the second send attempt and also control header sending. EFalse sends full headers, ETrue only sends name and size.
|
williamr@2
|
164 |
*/
|
williamr@2
|
165 |
|
williamr@2
|
166 |
IMPORT_C CObexServerSendOperation(TUid aMsgTypeUid, CMsvServerEntry& aSendObj, TInt aConnectTimeoutMicroSeconds,
|
williamr@2
|
167 |
TInt aPutTimeoutMicroSeconds, TRequestStatus& aObserverRequestStatus,
|
williamr@2
|
168 |
TBool aLastSendAttempt);
|
williamr@2
|
169 |
|
williamr@2
|
170 |
/**
|
williamr@2
|
171 |
* Tells the derived class that the base class is about to complete the observer.
|
williamr@2
|
172 |
* This is the first thing called when CompleteObserver is called.
|
williamr@2
|
173 |
* Since the behaviour of CompleteObserver is to clean up the message that it was trying to send,
|
williamr@2
|
174 |
* this calls gives the derived class an opportunity to either stop this deletion or recover any information
|
williamr@2
|
175 |
* synchronously from the message.
|
williamr@2
|
176 |
* If the derived class has no need to use this functionality, the default implementation allows deletion.
|
williamr@2
|
177 |
* @param aErrorCode The last error code encountered
|
williamr@2
|
178 |
* @return TBool True delete the message
|
williamr@2
|
179 |
* @return TBool False DO NOT delete the message
|
williamr@2
|
180 |
*/
|
williamr@2
|
181 |
IMPORT_C virtual TBool CompletingObserver(TInt aErrorCode);
|
williamr@2
|
182 |
|
williamr@2
|
183 |
public: // called by CObexSendOpTimeout
|
williamr@2
|
184 |
|
williamr@2
|
185 |
/**
|
williamr@2
|
186 |
* Called when the current operation times out. Causes the current operation to be cancelled, then reactivates with
|
williamr@2
|
187 |
* the appropriate error code (KErrIrObexClientNoDevicesFound or KErrIrObexClientPutPeerAborted).
|
williamr@2
|
188 |
*/
|
williamr@2
|
189 |
|
williamr@2
|
190 |
void TimeOut();
|
williamr@2
|
191 |
|
williamr@2
|
192 |
public:
|
williamr@2
|
193 |
|
williamr@2
|
194 |
/**
|
williamr@2
|
195 |
* Returns current progress information.
|
williamr@2
|
196 |
*
|
williamr@2
|
197 |
* @return A reference to a TPckgC<TObexMtmProgress> package pointer descriptor containing progress information on this send operation.
|
williamr@2
|
198 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
199 |
*/
|
williamr@2
|
200 |
IMPORT_C const TDesC8& ProgressL();
|
williamr@2
|
201 |
|
williamr@2
|
202 |
TBool iAsyncInit;
|
williamr@2
|
203 |
|
williamr@2
|
204 |
private: // From MObexAuthChallengeHandler
|
williamr@2
|
205 |
|
williamr@2
|
206 |
/**
|
williamr@2
|
207 |
* Called by the Obex Client when authentication is requested to pass the password back. If the password is invalid, this
|
williamr@2
|
208 |
* call should succeed but the send operation as a whole will inevitably fail.
|
williamr@2
|
209 |
*
|
williamr@2
|
210 |
* @param aRelm ignored, but could be used to indicate which password to use.
|
williamr@2
|
211 |
* @leave KErrXXX system wide error codes. Shouldn't leave just because the password is invalid.
|
williamr@2
|
212 |
*/
|
williamr@2
|
213 |
|
williamr@2
|
214 |
IMPORT_C virtual void GetUserPasswordL(const TDesC& aUserID);
|
williamr@2
|
215 |
|
williamr@2
|
216 |
private: // From CActive
|
williamr@2
|
217 |
|
williamr@2
|
218 |
|
williamr@2
|
219 |
/**
|
williamr@2
|
220 |
* Calls RealRunL(), and traps errors
|
williamr@2
|
221 |
*
|
williamr@2
|
222 |
* @leave Leaves with errors from RealRunL()
|
williamr@2
|
223 |
*/
|
williamr@2
|
224 |
|
williamr@2
|
225 |
IMPORT_C virtual void RunL();
|
williamr@2
|
226 |
|
williamr@2
|
227 |
private:
|
williamr@2
|
228 |
|
williamr@2
|
229 |
/**
|
williamr@2
|
230 |
* Destructor. Cancel()s, deletes owned objects and Close()s the connection to the FileServer.
|
williamr@2
|
231 |
*/
|
williamr@2
|
232 |
|
williamr@2
|
233 |
void BuildSpecificDestructor();
|
williamr@2
|
234 |
|
williamr@2
|
235 |
/**
|
williamr@2
|
236 |
* Normal second phase constructor.
|
williamr@2
|
237 |
*/
|
williamr@2
|
238 |
|
williamr@2
|
239 |
void BuildSpecificConstructL();
|
williamr@2
|
240 |
|
williamr@2
|
241 |
/**
|
williamr@2
|
242 |
* Cancels the current operation, then reactivates with the given error code.
|
williamr@2
|
243 |
*
|
williamr@2
|
244 |
* @param aError Error code to be passed to CompleteSelf.
|
williamr@2
|
245 |
*/
|
williamr@2
|
246 |
|
williamr@2
|
247 |
void ActivateRunLWithError(TInt aError);
|
williamr@2
|
248 |
|
williamr@2
|
249 |
/**
|
williamr@2
|
250 |
* Cancel any pending obex operation without completing the observer.
|
williamr@2
|
251 |
*/
|
williamr@2
|
252 |
|
williamr@2
|
253 |
void ExplicitCancel(); // Must call this instead of just Cancel(), otherwise the owner of this op will be completed.
|
williamr@2
|
254 |
|
williamr@2
|
255 |
/**
|
williamr@2
|
256 |
* Complete the observer, reporting any error via the progress. THIS METHOD MUST BE CALLED ONCE ONLY.
|
williamr@2
|
257 |
*
|
williamr@2
|
258 |
*/
|
williamr@2
|
259 |
|
williamr@2
|
260 |
void CompleteObserverL();
|
williamr@2
|
261 |
|
williamr@2
|
262 |
/**
|
williamr@2
|
263 |
* This causes this active object's request to complete which means
|
williamr@2
|
264 |
* RunL() will be called again if we are active (immediately if there
|
williamr@2
|
265 |
* are no higher priority active objects in the active scheduler).
|
williamr@2
|
266 |
*
|
williamr@2
|
267 |
* @param aError Error to be passed forward to the next step of the state machine
|
williamr@2
|
268 |
*/
|
williamr@2
|
269 |
|
williamr@2
|
270 |
void CompleteSelf(TInt aError);
|
williamr@2
|
271 |
|
williamr@2
|
272 |
/**
|
williamr@2
|
273 |
* Implementation of the send operation state machine. Progresses as:
|
williamr@2
|
274 |
* Initialise-->Connect-->ConnectAttemptComplete-->SendObject-->(SendNextObject-->)SendComplete-->Disconnected
|
williamr@2
|
275 |
* The SendNextObject state is repeated for each attachment in excess of one.
|
williamr@2
|
276 |
* Also handles UserCancelled and SendError states by CompleteObserver()ing with appropriate error codes.
|
williamr@2
|
277 |
* Leaves will be passed back to RunL and handled there.
|
williamr@2
|
278 |
*
|
williamr@2
|
279 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
280 |
*/
|
williamr@2
|
281 |
|
williamr@2
|
282 |
void RealRunL();
|
williamr@2
|
283 |
|
williamr@2
|
284 |
/**
|
williamr@2
|
285 |
* Delete the outbox entry as operation has 'completed'.
|
williamr@2
|
286 |
* Will be invisible&InPreparation anyway (MS delete will delete it the next
|
williamr@2
|
287 |
* time it starts).
|
williamr@2
|
288 |
*/
|
williamr@2
|
289 |
|
williamr@2
|
290 |
TInt SynchronousEntryDelete();
|
williamr@2
|
291 |
|
williamr@2
|
292 |
/**
|
williamr@2
|
293 |
* Load an attachment into the obex sending buffer, and create a new Obex object of name TMsvEntry::iDetails.
|
williamr@2
|
294 |
*
|
williamr@2
|
295 |
* @param aParent Reference to CMsvServerEntry to be sent.
|
williamr@2
|
296 |
* @param aWhichAttachment Zero-based index of attachment to send.
|
williamr@2
|
297 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
298 |
*/
|
williamr@2
|
299 |
|
williamr@2
|
300 |
void InitialiseAttachmentL(CMsvServerEntry& aParent, TInt aWhichAttachment);
|
williamr@2
|
301 |
|
williamr@2
|
302 |
void LoadFileIntoObjectL(const TDesC& aFileName, const TDesC& aObexName, const TDesC8& aMimeType);
|
williamr@2
|
303 |
|
williamr@2
|
304 |
|
williamr@2
|
305 |
/**
|
williamr@2
|
306 |
* Checks the last object was sent correctly, and tries to action appropriate error feedback if not. Only to be called
|
williamr@2
|
307 |
* from ESendObject/ESendNextObject or ESendComplete states.
|
williamr@2
|
308 |
*
|
williamr@2
|
309 |
* @param aStatus Status of last object
|
williamr@2
|
310 |
* @return ETrue if message was OK--EFalse if message failed and this function has taken the necessary action
|
williamr@2
|
311 |
*/
|
williamr@2
|
312 |
|
williamr@2
|
313 |
TBool CheckStatusOfLastObject(TInt aStatus, TObexMtmProgress::TSendState aSendState);
|
williamr@2
|
314 |
|
williamr@2
|
315 |
/**
|
williamr@2
|
316 |
* Loads the next object to be sent, whether an attachment or a file in the file list.
|
williamr@2
|
317 |
*
|
williamr@2
|
318 |
* @return KErrXXX standard error code
|
williamr@2
|
319 |
* @return KErrNotFound if there were neither attachments nor files in the file list
|
williamr@2
|
320 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
321 |
*/
|
williamr@2
|
322 |
|
williamr@2
|
323 |
TInt PrepareCurrentObjectAndSetStateL();
|
williamr@2
|
324 |
|
williamr@2
|
325 |
/**
|
williamr@2
|
326 |
* Moves the newly sent message to the global sent items folder, and sets active ready for its completion.
|
williamr@2
|
327 |
*
|
williamr@2
|
328 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
329 |
*/
|
williamr@2
|
330 |
|
williamr@2
|
331 |
void MoveToSentAndSetActiveL();
|
williamr@2
|
332 |
|
williamr@2
|
333 |
/**
|
williamr@2
|
334 |
* Restores after the message has been moved to the inbox, and marks the message as visible.
|
williamr@2
|
335 |
*/
|
williamr@2
|
336 |
|
williamr@2
|
337 |
void CleanupAfterMovedToSent();
|
williamr@2
|
338 |
|
williamr@2
|
339 |
/**
|
williamr@2
|
340 |
* Returns a reference to the file session (RFs) of the message
|
williamr@2
|
341 |
*
|
williamr@2
|
342 |
* @return A reference to the file session of the the message
|
williamr@2
|
343 |
*/
|
williamr@2
|
344 |
|
williamr@2
|
345 |
RFs& FileSession();
|
williamr@2
|
346 |
|
williamr@2
|
347 |
|
williamr@2
|
348 |
#ifdef __OBEX_SEND_OP_FILE_DEBUG_MODE__
|
williamr@2
|
349 |
/**
|
williamr@2
|
350 |
* Output the obex object to a file in the service folder
|
williamr@2
|
351 |
*
|
williamr@2
|
352 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
353 |
*/
|
williamr@2
|
354 |
|
williamr@2
|
355 |
TInt PutObexObjectToServiceFileL();
|
williamr@2
|
356 |
#endif //__OBEX_SEND_OP_FILE_DEBUG_MODE__
|
williamr@2
|
357 |
|
williamr@2
|
358 |
protected:
|
williamr@2
|
359 |
CObexClient* iObexClient; ///<The Obex client memeber
|
williamr@2
|
360 |
TBool iLastSendAttempt; // check for second send attempt and also to control header sending
|
williamr@2
|
361 |
|
williamr@2
|
362 |
private:
|
williamr@2
|
363 |
//From member initialisation list
|
williamr@2
|
364 |
TRequestStatus& iObserverRequestStatus; ///<TRequestStatus for notifying observer (eventually ClientMTM) of completion
|
williamr@2
|
365 |
CMsvServerEntry& iMsvSendParent; ///<The message being sent (i.e. the parent of any attachments being sent)
|
williamr@2
|
366 |
const TInt iConnectTimeout; ///<Connection attempt timeout in microseconds
|
williamr@2
|
367 |
const TInt iPutTimeout; ///<Put attempt timeout in microseconds
|
williamr@2
|
368 |
TBool iCancelWithoutCompleting; ///<Flag to allow cancellation without completing observer
|
williamr@2
|
369 |
TPckgBuf<TObexMtmProgress> iProgressPckg; ///<Progress package buffer
|
williamr@2
|
370 |
const TUid iMtm; ///<UID of this MTM
|
williamr@2
|
371 |
|
williamr@2
|
372 |
|
williamr@2
|
373 |
TInt iNextAttachment; ///<Index of next attachment to be sent
|
williamr@2
|
374 |
CObexFileObject* iObexObject; ///<Obex object currently being sent
|
williamr@2
|
375 |
TFileName iSendFile; ///<Filename of the object to be sent--necessary since CObexFileObject does not export its copy
|
williamr@2
|
376 |
CObexSendOpTimeout* iTimeoutTimer; ///<Timeout timer used for various operations
|
williamr@2
|
377 |
HBufC* iConnectPassword; ///<Authentication password
|
williamr@2
|
378 |
TObexMtmProgress::TSendState iSendState; ///<State machine state
|
williamr@2
|
379 |
TInt iAttachmentEntryCount; ///<Number of attachments to send (==0 if iFileNameEntryCount!=0)
|
williamr@2
|
380 |
|
williamr@2
|
381 |
|
williamr@2
|
382 |
CMsvOperation* iMoveOperation; ///<Operation to govern the movement of the sccessfully sent message to the sent folder
|
williamr@2
|
383 |
CMsvEntrySelection* iMoveEntrySelection; ///<Entry selection containing the entry to rename
|
williamr@2
|
384 |
|
williamr@2
|
385 |
TFileName iServicePath; ///<Path of service folder
|
williamr@2
|
386 |
};
|
williamr@2
|
387 |
|
williamr@2
|
388 |
|
williamr@2
|
389 |
|
williamr@2
|
390 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
391 |
// CObexSendOpTimeout
|
williamr@2
|
392 |
///////////////////////////////////////////////////////////////////////////////////
|
williamr@2
|
393 |
|
williamr@2
|
394 |
class CObexSendOpTimeout : public CTimer
|
williamr@2
|
395 |
/**
|
williamr@2
|
396 |
class CObexSendOpTimeout
|
williamr@2
|
397 |
|
williamr@2
|
398 |
Obex Send Operation Timeout active object:
|
williamr@2
|
399 |
|
williamr@2
|
400 |
Straightforward active object used for timeout operations by CObexServerSendOperation.
|
williamr@2
|
401 |
|
williamr@2
|
402 |
@internalComponent
|
williamr@2
|
403 |
@released
|
williamr@2
|
404 |
*/
|
williamr@2
|
405 |
{
|
williamr@2
|
406 |
public:
|
williamr@2
|
407 |
|
williamr@2
|
408 |
/**
|
williamr@2
|
409 |
*Canonical NewL function, which also sets the owner operation.
|
williamr@2
|
410 |
*
|
williamr@2
|
411 |
*@param aSendOperation Obex send operation which will be "timed out" when the timer expires
|
williamr@2
|
412 |
*/
|
williamr@2
|
413 |
|
williamr@2
|
414 |
static CObexSendOpTimeout* NewL(CObexServerSendOperation* aSendOperation);
|
williamr@2
|
415 |
private:
|
williamr@2
|
416 |
|
williamr@2
|
417 |
/**
|
williamr@2
|
418 |
* Constructor. Calls CTimer's constructor with priority EPriorityStandard
|
williamr@2
|
419 |
*/
|
williamr@2
|
420 |
|
williamr@2
|
421 |
CObexSendOpTimeout();
|
williamr@2
|
422 |
|
williamr@2
|
423 |
/**
|
williamr@2
|
424 |
* Second phase constructor. Calls CTimer::ConstructL(), and adds itself to the active scheduler
|
williamr@2
|
425 |
*
|
williamr@2
|
426 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
427 |
*/
|
williamr@2
|
428 |
|
williamr@2
|
429 |
void ConstructL();
|
williamr@2
|
430 |
|
williamr@2
|
431 |
/**
|
williamr@2
|
432 |
* Calls the TimeOut method of the associated CObexServerSendOperation when the timer expires
|
williamr@2
|
433 |
*
|
williamr@2
|
434 |
* @leave KErrXXX system wide error codes
|
williamr@2
|
435 |
*/
|
williamr@2
|
436 |
|
williamr@2
|
437 |
void RunL();
|
williamr@2
|
438 |
private:
|
williamr@2
|
439 |
CObexServerSendOperation* iSendOperation; ///<The Obex server send operation
|
williamr@2
|
440 |
};
|
williamr@2
|
441 |
|
williamr@2
|
442 |
|
williamr@2
|
443 |
#endif // __OBEXSENDOP_H__
|