|
1 /* |
|
2 * Copyright (c) 2005 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 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 #ifndef CMCEMANAGER_H |
|
22 #define CMCEMANAGER_H |
|
23 |
|
24 // INCLUDES |
|
25 #include <e32base.h> |
|
26 #include <e32std.h> |
|
27 #include <badesca.h> |
|
28 #include <mcedefs.h> |
|
29 |
|
30 // FORWARD DECLARATIONS |
|
31 class MMceInSessionObserver; |
|
32 class MMceInEventObserver; |
|
33 class MMceInReferObserver; |
|
34 class MMceSessionObserver; |
|
35 class MMceEventObserver; |
|
36 class MMceReferObserver; |
|
37 class MMceTransactionObserver; |
|
38 class MMceInTransactionObserver; |
|
39 class MMceStreamObserver; |
|
40 class MMceRtpObserver; |
|
41 class MMceDtmfObserver; |
|
42 class CMceSession; |
|
43 class CMceInSession; |
|
44 class CMceEvent; |
|
45 class CMceRefer; |
|
46 class CMceManagerReceiver; |
|
47 class CMceEventManagerReceiver; |
|
48 class RMce; |
|
49 class MMceItc; |
|
50 class TMceMediaId; |
|
51 class CMceAudioCodec; |
|
52 class CMceVideoCodec; |
|
53 class CMceItcSender; |
|
54 class TMceTransactionDataContainer; |
|
55 class CMceFileSource; |
|
56 class TMceIds; |
|
57 |
|
58 // CLASS DECLARATION |
|
59 |
|
60 /** |
|
61 * Class for connecting to MCE server. |
|
62 * |
|
63 * This class provides the connection to the MCE server and |
|
64 * provides functions for setting observers for asynchronous |
|
65 * events. |
|
66 * |
|
67 * The user should create only one instance of this class. |
|
68 * |
|
69 * @lib mceclient.lib |
|
70 */ |
|
71 class CMceManager : public CBase |
|
72 { |
|
73 |
|
74 public: // Constructors and destructor |
|
75 |
|
76 /** |
|
77 * Two-phased constructor. |
|
78 * @param aAppUid Identification of the application. |
|
79 * @param aContainer If set, detailed data provided in observers. |
|
80 * Ownership is not transferred, instance must not be deleted |
|
81 * in lifetime of CMceManager. |
|
82 */ |
|
83 IMPORT_C static CMceManager* NewL( |
|
84 const TUid& aAppUid, |
|
85 TMceTransactionDataContainer* aContainer = 0); |
|
86 |
|
87 /** |
|
88 * Destructor. |
|
89 */ |
|
90 IMPORT_C ~CMceManager(); |
|
91 |
|
92 public: // Functions |
|
93 |
|
94 /** |
|
95 * Set observer for incoming sessions. |
|
96 * @param aInSessionObserver Observer of the sessions. Ownership is |
|
97 * not transferred. May be NULL to remove observer. |
|
98 */ |
|
99 IMPORT_C void SetInSessionObserver( |
|
100 MMceInSessionObserver* aInSessionObserver ); |
|
101 |
|
102 /** |
|
103 * Set observer for incoming events. |
|
104 * @param aInEventObserver Observer of the events. Ownership is |
|
105 * not transferred. May be NULL to remove observer. |
|
106 */ |
|
107 IMPORT_C void SetInEventObserver( |
|
108 MMceInEventObserver* aInEventObserver ); |
|
109 |
|
110 /** |
|
111 * Set observer for incoming refers. |
|
112 * @param aInReferObserver Observer of the refers. Ownership is |
|
113 * not transferred. May be NULL to remove observer. |
|
114 */ |
|
115 IMPORT_C void SetInReferObserver( |
|
116 MMceInReferObserver* aInReferObserver ); |
|
117 |
|
118 /** |
|
119 * Set observer for sessions. |
|
120 * @param aSessionObserver Observer of the sessions. Ownership is |
|
121 * not transferred. May be NULL to remove observer. |
|
122 */ |
|
123 IMPORT_C void SetSessionObserver( |
|
124 MMceSessionObserver* aSessionObserver ); |
|
125 |
|
126 /** |
|
127 * Set observer for medias |
|
128 * @param aMediaObserver Observer of medias. Ownership is |
|
129 * not transferred. May be NULL to remove observer. |
|
130 */ |
|
131 IMPORT_C void SetMediaObserver( |
|
132 MMceStreamObserver* aMediaObserver ); |
|
133 |
|
134 /** |
|
135 * Set observer for rtp |
|
136 * @param aRtpObserver Observer of rtp. Ownership is |
|
137 * not transferred. May be NULL to remove observer. |
|
138 */ |
|
139 IMPORT_C void SetRtpObserver( |
|
140 MMceRtpObserver* aRtpObserver ); |
|
141 |
|
142 /** |
|
143 * Sets observer for incoming events. |
|
144 * @param aEventObserver Observer of the event. Ownership is |
|
145 * not transferred. May be NULL to remove observer. |
|
146 */ |
|
147 IMPORT_C void SetEventObserver( |
|
148 MMceEventObserver* aEventObserver ); |
|
149 |
|
150 /** |
|
151 * Sets observer for incoming REFER events. |
|
152 * @param aReferObserver Observer of the event. Ownership is |
|
153 * not transferred. May be NULL to remove observer. |
|
154 */ |
|
155 IMPORT_C void SetReferObserver( |
|
156 MMceReferObserver* aReferObserver ); |
|
157 |
|
158 /** |
|
159 * Sets observer for DTMF events. |
|
160 * @param aDtmfObserver, observer of the event. Ownership is |
|
161 * not transferred. May be NULL to remove observer. |
|
162 */ |
|
163 IMPORT_C void SetDtmfObserver( |
|
164 MMceDtmfObserver* aDtmfObserver ); |
|
165 |
|
166 /** |
|
167 * Sets observer for incoming SIP responses |
|
168 * to outgoing in-dialog requests. |
|
169 * @param aTransactionObserver, observer of the event. Ownership is |
|
170 * not transferred. May be NULL to remove observer. |
|
171 */ |
|
172 IMPORT_C void SetTransactionObserver( |
|
173 MMceTransactionObserver* aTransactionObserver ); |
|
174 /** |
|
175 * Sets observer for incoming SIP extension requests. |
|
176 * @param aTransactionObserver, observer of the event. Ownership is |
|
177 * not transferred. May be NULL to remove observer. |
|
178 */ |
|
179 IMPORT_C void SetInTransactionObserver( |
|
180 MMceInTransactionObserver* aInTransactionObserver ); |
|
181 |
|
182 /** |
|
183 * Gets currently ongoing sessions |
|
184 * @return RPointerArray array of sessions. |
|
185 */ |
|
186 IMPORT_C const RPointerArray< CMceSession >& Sessions() const; |
|
187 |
|
188 /** |
|
189 * Gets currently ongoing events |
|
190 * @return RPointerArray array of events. |
|
191 */ |
|
192 IMPORT_C const RPointerArray< CMceEvent >& Events() const; |
|
193 |
|
194 /** |
|
195 * Gets currently ongoing refers |
|
196 * @return RPointerArray array of refers. |
|
197 */ |
|
198 IMPORT_C const RPointerArray< CMceRefer >& Refers() const; |
|
199 |
|
200 /** |
|
201 * Returns supported audio codecs of the system. |
|
202 * @return supported audio codecs of the system. |
|
203 */ |
|
204 IMPORT_C const RPointerArray<const CMceAudioCodec>& SupportedAudioCodecs() const; |
|
205 |
|
206 /** |
|
207 * Returns supported video codecs of the system. |
|
208 * @return supported video codecs of the system. |
|
209 */ |
|
210 IMPORT_C const RPointerArray<const CMceVideoCodec>& SupportedVideoCodecs() const; |
|
211 |
|
212 /* |
|
213 * Set default headers for the method. The headers will always be added |
|
214 * to the given SIP methods unless overwritten with |
|
215 * headers given as parameter for the API method triggering the |
|
216 * sending of request/response. |
|
217 * @param aMethods The SIP methods the headers are added to. |
|
218 * @param aHeaders The default headers, ownership is transferred. |
|
219 */ |
|
220 IMPORT_C void SetDefaultHeadersL( CDesC8Array* aMethods, CDesC8Array* aHeaders ); |
|
221 |
|
222 /* |
|
223 * Get the default headers assigned for the given method. |
|
224 * If none is assigned, and empty array is returned. |
|
225 * @param aMethod The method for which the headers are queried. |
|
226 * @return the default headers, ownership is transfered. |
|
227 */ |
|
228 IMPORT_C CDesC8Array* DefaultHeadersL( const TDesC8& aMethod ) const; |
|
229 |
|
230 |
|
231 public: // Functions |
|
232 |
|
233 /** |
|
234 * Gets observer for incoming sessions |
|
235 * @return incoming session observer |
|
236 */ |
|
237 MMceInSessionObserver* InSessionObserver() const; |
|
238 |
|
239 /** |
|
240 * Gets observer for incoming events |
|
241 * @return incoming event observer |
|
242 */ |
|
243 MMceInEventObserver* InEventObserver() const; |
|
244 |
|
245 /** |
|
246 * Gets observer for incoming refers |
|
247 * @return incoming refer observer |
|
248 */ |
|
249 MMceInReferObserver* InReferObserver() const; |
|
250 |
|
251 /** |
|
252 * Gets session observer |
|
253 * @return session observer |
|
254 */ |
|
255 MMceSessionObserver* SessionObserver() const; |
|
256 |
|
257 /** |
|
258 * Gets media observer |
|
259 * @return media observer |
|
260 */ |
|
261 MMceStreamObserver* MediaObserver() const; |
|
262 |
|
263 /** |
|
264 * Gets rtp observer |
|
265 * @return rtp observer |
|
266 */ |
|
267 MMceRtpObserver* RtpObserver() const; |
|
268 |
|
269 /** |
|
270 * Gets event observer |
|
271 * @return event observer |
|
272 */ |
|
273 MMceEventObserver* EventObserver() const; |
|
274 |
|
275 /** |
|
276 * Gets refer observer |
|
277 * @return event observer |
|
278 */ |
|
279 MMceReferObserver* ReferObserver() const; |
|
280 |
|
281 /** |
|
282 * Gets transaction observer |
|
283 * @return event observer |
|
284 */ |
|
285 MMceTransactionObserver* TransactionObserver() const; |
|
286 |
|
287 |
|
288 /** |
|
289 * Gets transaction observer |
|
290 * @return event observer |
|
291 */ |
|
292 MMceInTransactionObserver* InTransactionObserver() const; |
|
293 |
|
294 |
|
295 |
|
296 /** |
|
297 * Gets dtmf observer |
|
298 * @return dtmf observer |
|
299 */ |
|
300 MMceDtmfObserver* DtmfObserver() const; |
|
301 |
|
302 /** |
|
303 * Returns server sessiom |
|
304 * @return server sessiom |
|
305 */ |
|
306 RMce& ServerSession() const; |
|
307 |
|
308 /** |
|
309 * Returns app uid |
|
310 * @return app uid |
|
311 */ |
|
312 TUid AppUid() const; |
|
313 |
|
314 /** |
|
315 * Returns next id |
|
316 * @return next id |
|
317 */ |
|
318 TMceMediaId NextMediaId(); |
|
319 |
|
320 /** |
|
321 * Finds a refer instance for an event. |
|
322 * @param aEvent The event |
|
323 * @return NULL, if none exists. |
|
324 */ |
|
325 CMceRefer* FindRefer( const CMceEvent& aEvent ); |
|
326 |
|
327 /** |
|
328 * Returs transaction container for detailed data. |
|
329 * @return NULL, if none exists. |
|
330 */ |
|
331 TMceTransactionDataContainer* TransactionContainer() const; |
|
332 |
|
333 /** |
|
334 * Starts transcoding of file |
|
335 * @param aFile The file |
|
336 * @return transcoding session id |
|
337 */ |
|
338 TUint32 TranscodeL( CMceFileSource& aFile ); |
|
339 |
|
340 /** |
|
341 * Cancels transcoding |
|
342 * @param aFile The file |
|
343 * @param aSessionId the tc session id |
|
344 */ |
|
345 void CancelTranscodeL( const CMceFileSource& aFile, TUint32 aSessionId ); |
|
346 |
|
347 /** |
|
348 * Called when trancoding is completed |
|
349 * @param aFile The file |
|
350 */ |
|
351 void TranscodeCompleted( const CMceFileSource& aFile ); |
|
352 |
|
353 /** |
|
354 * handles incoming event |
|
355 * @param aIds The ids |
|
356 */ |
|
357 void HandleIncomingEventL( TMceIds& aIds ); |
|
358 |
|
359 /** |
|
360 * Finds associated session |
|
361 * @param aDialogId, |
|
362 * @return Session or NULL if not found, ownership is not transferred |
|
363 */ |
|
364 CMceSession* FindAssociatedSession( TUint32 aDialogId ) const; |
|
365 |
|
366 private: |
|
367 |
|
368 /** |
|
369 * C++ default constructor. |
|
370 * @param aAppUid, uid of the application. |
|
371 * @param aContainer, if set, detailed data provided in observers. |
|
372 */ |
|
373 CMceManager( const TUid& aAppUid, |
|
374 TMceTransactionDataContainer* aContainer = 0); |
|
375 |
|
376 /** |
|
377 * By default Symbian 2nd phase constructor is private. |
|
378 */ |
|
379 void ConstructL(); |
|
380 |
|
381 /** |
|
382 * Receives supported audio codecs |
|
383 */ |
|
384 void ReceiveSupportedAudioCodecsL(); |
|
385 |
|
386 /** |
|
387 * Receives supported video codecs |
|
388 */ |
|
389 void ReceiveSupportedVideoCodecsL(); |
|
390 |
|
391 /** |
|
392 * Session registers itself to manager |
|
393 * @param aSession the session |
|
394 * @param aParams parameter list for dialog creation |
|
395 * @param aDialogId in/out dialog id |
|
396 * @param aConnectionState in/out connection state |
|
397 * @return session id |
|
398 */ |
|
399 TUint32 RegisterSessionL( CMceSession* aSession, |
|
400 CDesC8Array& aParams, |
|
401 TUint32& aDialogId, |
|
402 TBool& aConnectionState ); |
|
403 |
|
404 |
|
405 /** |
|
406 * New session registers itself and deregisters its old |
|
407 * (zombie) instance. |
|
408 * @param aNewSession the new session |
|
409 * @param aOldSession the old session |
|
410 */ |
|
411 void IncomingSessionUpdateL( CMceInSession& aNewSession, |
|
412 CMceSession& aOldSession ); |
|
413 |
|
414 |
|
415 /** |
|
416 * Session unregisters itself to manager |
|
417 * @param aSession the session |
|
418 */ |
|
419 void UnregisterSession( CMceSession* aSession ); |
|
420 |
|
421 /** |
|
422 * Removes session |
|
423 * @param aSession the session |
|
424 */ |
|
425 void RemoveSession( CMceSession* aSession ); |
|
426 |
|
427 /** |
|
428 * Event registers itself to event manager |
|
429 * @param aEvent the event |
|
430 * @param aParams parameter list for dialog creation |
|
431 * @param aDialogId in/out dialog id |
|
432 * @param aDialogType the dialog type |
|
433 * @return event id |
|
434 */ |
|
435 TUint32 RegisterEventL( CMceEvent* aEvent, |
|
436 CDesC8Array& aParams, |
|
437 TUint32& aDialogId, |
|
438 TUint32 aDialogType ); |
|
439 |
|
440 /** |
|
441 * Refer registers itself to event manager |
|
442 * @param aRefer the refer |
|
443 * @param aParams parameter list for dialog creation |
|
444 * @param aDialogId in/out dialog id |
|
445 * @return event id |
|
446 */ |
|
447 TUint32 RegisterReferL( CMceRefer* aRefer, |
|
448 CDesC8Array& aParams, |
|
449 TUint32& aDialogId ); |
|
450 |
|
451 /** |
|
452 * Event unregisters itself to event manager |
|
453 * @param aEvent the event |
|
454 */ |
|
455 void UnregisterEvent( CMceEvent* aEvent ); |
|
456 |
|
457 /** |
|
458 * Refer unregisters itself to event manager |
|
459 * @param aRefer the refer |
|
460 */ |
|
461 void UnregisterRefer( CMceRefer* aRefer ); |
|
462 |
|
463 /** |
|
464 * prepares for ITC |
|
465 * @param aRole role as sip session manager or event manager |
|
466 */ |
|
467 void PrepareForITC( TMceIds& aId, TUint aRole ) const; |
|
468 |
|
469 /** |
|
470 * Adds session |
|
471 * @param aSession the session |
|
472 */ |
|
473 void AddSessionL( CMceSession* aSession ); |
|
474 |
|
475 /** |
|
476 * Adds event |
|
477 * @param aEvent the event |
|
478 */ |
|
479 void AddEventL( CMceEvent* aEvent ); |
|
480 |
|
481 /** |
|
482 * Adds refer |
|
483 * @param aRefer the refer |
|
484 */ |
|
485 void AddReferL( CMceRefer* aRefer ); |
|
486 |
|
487 |
|
488 private: // Owned data |
|
489 |
|
490 /** |
|
491 * detailed callbacks wanted |
|
492 */ |
|
493 TBool iDetailedCallbacks; |
|
494 |
|
495 /** |
|
496 * Transaction data container. |
|
497 */ |
|
498 TMceTransactionDataContainer* iContainer; |
|
499 |
|
500 /** |
|
501 * sessions |
|
502 */ |
|
503 RPointerArray<CMceSession> iSessions; |
|
504 |
|
505 /** |
|
506 * events |
|
507 */ |
|
508 RPointerArray< CMceEvent > iEvents; |
|
509 |
|
510 /** |
|
511 * refers |
|
512 */ |
|
513 RPointerArray< CMceRefer > iRefers; |
|
514 |
|
515 /** |
|
516 * supported audio codecs |
|
517 */ |
|
518 RPointerArray<const CMceAudioCodec> iSupportedAudioCodecs; |
|
519 |
|
520 /** |
|
521 * supported video codecs |
|
522 */ |
|
523 RPointerArray<const CMceVideoCodec> iSupportedVideoCodecs; |
|
524 |
|
525 /** |
|
526 * manager receiver for sessions |
|
527 */ |
|
528 CMceManagerReceiver* iSessionReceiver; |
|
529 |
|
530 /** |
|
531 * manager receiver for events |
|
532 */ |
|
533 CMceEventManagerReceiver* iEventReceiver; |
|
534 |
|
535 /** |
|
536 * server client session |
|
537 */ |
|
538 RMce* iServerSession; |
|
539 |
|
540 /** |
|
541 * sender |
|
542 */ |
|
543 CMceItcSender* iSender; |
|
544 |
|
545 /** |
|
546 * next id |
|
547 */ |
|
548 TUint32 iNextId; |
|
549 |
|
550 /** |
|
551 * currently transcoding files |
|
552 */ |
|
553 RPointerArray<CMceFileSource> iTranscodingFiles; |
|
554 |
|
555 |
|
556 private: // NOT Owned data |
|
557 |
|
558 /** |
|
559 * application UID |
|
560 */ |
|
561 TUid iAppUid; |
|
562 |
|
563 /** |
|
564 * manager observer for incoming sessions |
|
565 */ |
|
566 MMceInSessionObserver* iInSessionObserver; |
|
567 |
|
568 /** |
|
569 * manager observer for incoming events |
|
570 */ |
|
571 MMceInEventObserver* iInEventObserver; |
|
572 |
|
573 /** |
|
574 * manager observer for incoming refers |
|
575 */ |
|
576 MMceInReferObserver* iInReferObserver; |
|
577 |
|
578 /** |
|
579 * session observer |
|
580 */ |
|
581 MMceSessionObserver* iSessionObserver; |
|
582 |
|
583 /** |
|
584 * media observer |
|
585 */ |
|
586 MMceStreamObserver* iMediaObserver; |
|
587 |
|
588 /** |
|
589 * rtp observer |
|
590 */ |
|
591 MMceRtpObserver* iRtpObserver; |
|
592 |
|
593 /** |
|
594 * Event observer. |
|
595 */ |
|
596 MMceEventObserver* iEventObserver; |
|
597 |
|
598 /** |
|
599 * Refer observer. |
|
600 */ |
|
601 MMceReferObserver* iReferObserver; |
|
602 |
|
603 |
|
604 /** |
|
605 * MCE Transaction observer |
|
606 */ |
|
607 MMceTransactionObserver* iMceTransactionObserver; |
|
608 |
|
609 |
|
610 /** |
|
611 * MCE In Transaction observer |
|
612 */ |
|
613 MMceInTransactionObserver* iMceInTransactionObserver; |
|
614 |
|
615 |
|
616 /** |
|
617 * Dtmf observer. |
|
618 */ |
|
619 MMceDtmfObserver* iDtmfObserver; |
|
620 |
|
621 private: // Reserved for future use |
|
622 |
|
623 TAny* iReserved; |
|
624 |
|
625 //for testing |
|
626 |
|
627 MCE_UNIT_TEST_DEFS |
|
628 |
|
629 friend class CMceEvent; |
|
630 friend class CMceRefer; |
|
631 friend class CMceSession; |
|
632 }; |
|
633 |
|
634 #endif |