23 #include "musavailabilitypluginmanager.h" |
23 #include "musavailabilitypluginmanager.h" |
24 #include "musmonitoravailabilityobserver.h" |
24 #include "musmonitoravailabilityobserver.h" |
25 #include "muslogger.h" |
25 #include "muslogger.h" |
26 #include "musmanagerservercoreobserver.h" |
26 #include "musmanagerservercoreobserver.h" |
27 #include "musmanager.h" |
27 #include "musmanager.h" |
|
28 #include "musmanagerservercommon.h" |
28 |
29 |
29 using namespace MultimediaSharing; |
30 using namespace MultimediaSharing; |
30 |
31 |
31 // CONSTANTS |
32 // CONSTANTS |
|
33 _LIT8( KMusEngineName, "MultimediaSharing" ); |
|
34 |
32 |
35 |
33 // ----------------------------------------------------------------------------- |
36 // ----------------------------------------------------------------------------- |
34 // CMusManagerServerCore::NewL |
37 // CMusManagerServerCore::NewL |
35 // ----------------------------------------------------------------------------- |
38 // ----------------------------------------------------------------------------- |
36 // |
39 // |
79 { |
82 { |
80 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::ConstructL" ); |
83 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::ConstructL" ); |
81 |
84 |
82 iApplicationManager = CMusApplicationManager::NewL(); |
85 iApplicationManager = CMusApplicationManager::NewL(); |
83 |
86 |
|
87 iApplicationManager->ResolvePluginNameL( iPluginName ); |
|
88 |
84 iPluginManager = CMusAvailabilityPluginManager::NewL( *this, *iApplicationManager ); |
89 iPluginManager = CMusAvailabilityPluginManager::NewL( *this, *iApplicationManager ); |
85 |
90 |
86 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::ConstructL" ); |
91 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::ConstructL" ); |
87 } |
92 } |
88 |
93 |
113 // |
118 // |
114 MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::AvailabilityQueryL() |
119 MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::AvailabilityQueryL() |
115 { |
120 { |
116 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityQueryL" ); |
121 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityQueryL" ); |
117 MultimediaSharing::TMusAvailabilityStatus status |
122 MultimediaSharing::TMusAvailabilityStatus status |
118 = iPluginManager->Availability(); |
123 = Availability(); |
119 |
124 |
120 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityQueryL" ); |
125 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityQueryL" ); |
121 return status; |
126 return status; |
122 } |
127 } |
123 // ----------------------------------------------------------------------------- |
128 // ----------------------------------------------------------------------------- |
125 // ----------------------------------------------------------------------------- |
130 // ----------------------------------------------------------------------------- |
126 // |
131 // |
127 void CMusManagerServerCore::CommandL( MultimediaSharing::TCommandType aCommandType ) |
132 void CMusManagerServerCore::CommandL( MultimediaSharing::TCommandType aCommandType ) |
128 { |
133 { |
129 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::CommandL" ); |
134 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::CommandL" ); |
130 if ( aCommandType == MultimediaSharing::ECommandManualActivation ) |
135 if ( aCommandType == MultimediaSharing::ECommandManualActivation && |
|
136 IsMusEnginePlugin() ) |
131 { |
137 { |
132 MUS_LOG( "mus: [MUSSRV] Manual Activation is started" ) |
138 MUS_LOG( "mus: [MUSSRV] Manual Activation is started" ) |
133 iPluginManager->ManualQueryL(); |
139 iPluginManager->ManualQueryL(); |
134 } |
140 } |
135 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::CommandL" ); |
141 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::CommandL" ); |
140 // ----------------------------------------------------------------------------- |
146 // ----------------------------------------------------------------------------- |
141 // |
147 // |
142 void CMusManagerServerCore::InvestigateAvailabilityL() |
148 void CMusManagerServerCore::InvestigateAvailabilityL() |
143 { |
149 { |
144 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvestigateAvailabilityL" ); |
150 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvestigateAvailabilityL" ); |
145 iPluginManager->InvestigateAvailabilityL(); |
151 if ( IsMusEnginePlugin() ) |
|
152 { |
|
153 iPluginManager->InvestigateAvailabilityL(); |
|
154 } |
146 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvestigateAvailabilityL" ); |
155 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvestigateAvailabilityL" ); |
147 } |
156 } |
148 |
157 |
149 // ----------------------------------------------------------------------------- |
158 // ----------------------------------------------------------------------------- |
150 // CMusManagerServerCore::InvitationReceived |
159 // CMusManagerServerCore::InvitationReceived |
155 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvitationReceivedL" ); |
164 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvitationReceivedL" ); |
156 |
165 |
157 TInt uid = aChannelId.iUid; |
166 TInt uid = aChannelId.iUid; |
158 |
167 |
159 if( uid == CMusManager::ESipInviteDesired && |
168 if( uid == CMusManager::ESipInviteDesired && |
160 iPluginManager->ApplicationAllowed() ) |
169 ApplicationAllowed() ) |
161 { |
170 { |
|
171 PrepareForReceivedInviteL(); |
|
172 |
162 // write session boundary values |
173 // write session boundary values |
163 iApplicationManager->WriteSessionPropertiesL( |
174 WriteSessionPropertiesL( |
164 MultimediaSharing::EMusReceive, |
175 MultimediaSharing::EMusReceive, |
165 iPluginManager->Availability(), |
176 Availability(), |
166 iPluginManager->SessionParametersL() ); |
177 iPluginManager->SessionParametersL() ); |
167 |
178 |
168 iApplicationManager->StartApplicationL(); |
179 iApplicationManager->StartApplicationL(); |
169 } |
180 } |
170 else if( uid == CMusManager::ESipInviteNotDesired ) |
181 else if( uid == CMusManager::ESipInviteDesired2WayVideo && |
171 { |
182 ApplicationAllowed() ) |
172 iPluginManager->InvitationReceivedL(); |
183 { |
173 } |
184 PrepareForReceivedInviteL(); |
174 else |
185 |
175 { |
186 // write session boundary values |
176 User::Leave( KErrNotReady ); |
187 WriteSessionPropertiesL( |
|
188 MultimediaSharing::EMusReceiveTwoWayVideo, |
|
189 Availability(), |
|
190 iPluginManager->SessionParametersL() ); |
|
191 |
|
192 iApplicationManager->StartApplicationL(); |
|
193 } |
|
194 else if ( IsMusEnginePlugin() ) |
|
195 { |
|
196 if( uid == CMusManager::ESipInviteNotDesired ) |
|
197 { |
|
198 iPluginManager->InvitationReceivedL(); |
|
199 } |
|
200 else |
|
201 { |
|
202 User::Leave( KErrNotReady ); |
|
203 } |
177 } |
204 } |
178 |
205 |
179 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvitationReceivedL" ); |
206 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvitationReceivedL" ); |
180 } |
207 } |
181 |
208 |
184 // ----------------------------------------------------------------------------- |
211 // ----------------------------------------------------------------------------- |
185 // |
212 // |
186 void CMusManagerServerCore::OptionsReceivedL( TUid /*aChannelId*/ ) |
213 void CMusManagerServerCore::OptionsReceivedL( TUid /*aChannelId*/ ) |
187 { |
214 { |
188 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::OptionsReceivedL" ); |
215 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::OptionsReceivedL" ); |
189 iPluginManager->OptionsReceivedL(); |
216 if ( IsMusEnginePlugin() ) |
|
217 { |
|
218 iPluginManager->OptionsReceivedL(); |
|
219 } |
190 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::OptionsReceivedL" ); |
220 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::OptionsReceivedL" ); |
191 } |
221 } |
192 |
222 |
193 // ----------------------------------------------------------------------------- |
223 // ----------------------------------------------------------------------------- |
194 // |
224 // |
196 // |
226 // |
197 void CMusManagerServerCore::StartMultimediaSharingL( MultimediaSharing::TMusUseCase aUseCase ) |
227 void CMusManagerServerCore::StartMultimediaSharingL( MultimediaSharing::TMusUseCase aUseCase ) |
198 { |
228 { |
199 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::StartMultimediaSharingL" ); |
229 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::StartMultimediaSharingL" ); |
200 if( !iApplicationManager->ApplicationRunning() && |
230 if( !iApplicationManager->ApplicationRunning() && |
201 iPluginManager->ApplicationAllowed() ) |
231 ApplicationAllowed() ) |
202 { |
232 { |
203 // write session boundary values |
233 // write session boundary values |
204 iApplicationManager->WriteSessionPropertiesL( |
234 WriteSessionPropertiesL( |
205 aUseCase, |
235 aUseCase, |
206 iPluginManager->Availability(), |
236 Availability(), |
207 iPluginManager->SessionParametersL() ); |
237 iPluginManager->SessionParametersL() ); |
208 |
238 |
209 // start actual application |
239 // start actual application |
210 iApplicationManager->StartApplicationL(); |
240 iApplicationManager->StartApplicationL(); |
211 } |
241 } |
212 else |
242 else |
232 // ----------------------------------------------------------------------------- |
262 // ----------------------------------------------------------------------------- |
233 // |
263 // |
234 void CMusManagerServerCore::EventNoSessions() |
264 void CMusManagerServerCore::EventNoSessions() |
235 { |
265 { |
236 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::EventNoSessions" ); |
266 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::EventNoSessions" ); |
237 TRAPD( error, iPluginManager->StopPluginL() ); |
267 if ( IsMusEnginePlugin() ) |
238 if( error ) |
268 { |
239 { |
269 TRAPD( error, iPluginManager->StopPluginL() ); |
240 // iObserver.StopServer(); |
270 if( error ) |
|
271 { |
|
272 // iObserver.StopServer(); |
|
273 } |
241 } |
274 } |
242 iObserver.StopServer(); |
275 iObserver.StopServer(); |
243 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::EventNoSessions" ); |
276 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::EventNoSessions" ); |
244 } |
277 } |
245 |
278 |
264 void CMusManagerServerCore::AvailabilityChangedL( |
297 void CMusManagerServerCore::AvailabilityChangedL( |
265 MultimediaSharing::TMusAvailabilityStatus aAvailability ) |
298 MultimediaSharing::TMusAvailabilityStatus aAvailability ) |
266 { |
299 { |
267 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityChangedL( %d )", |
300 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityChangedL( %d )", |
268 aAvailability ); |
301 aAvailability ); |
|
302 |
|
303 if ( !IsMusEnginePlugin() ) |
|
304 { |
|
305 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityChangedL - \ |
|
306 non-MuS plugin"); |
|
307 return; |
|
308 } |
269 // inform ui via application manager (via session api) |
309 // inform ui via application manager (via session api) |
270 |
310 |
271 iApplicationManager->WriteSessionPropertiesL( |
311 WriteSessionPropertiesL( |
272 aAvailability, |
312 aAvailability, |
273 iPluginManager->SessionParametersL() ); |
313 iPluginManager->SessionParametersL() ); |
274 |
314 |
275 if( iAvailabilityMonitors.Count() ) |
315 if( iAvailabilityMonitors.Count() ) |
276 { |
316 { |
277 // go through interested client sessions |
317 // go through interested client sessions |
278 for( TInt i=0; i<iAvailabilityMonitors.Count(); i++ ) |
318 for( TInt i=0; i<iAvailabilityMonitors.Count(); i++ ) |
335 // ----------------------------------------------------------------------------- |
375 // ----------------------------------------------------------------------------- |
336 // From MMusAvailabilityPluginManagerObserver. |
376 // From MMusAvailabilityPluginManagerObserver. |
337 // Starts live video sharing. |
377 // Starts live video sharing. |
338 // ----------------------------------------------------------------------------- |
378 // ----------------------------------------------------------------------------- |
339 // |
379 // |
340 void CMusManagerServerCore::StartLiveSharingL() |
380 void CMusManagerServerCore::StartSharingWithUseCaseL( |
341 { |
381 MultimediaSharing::TMusUseCase aUseCase ) |
342 StartMultimediaSharingL( MultimediaSharing::EMusLiveVideo ); |
382 { |
|
383 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::StartSharingWithUseCaseL:%d", |
|
384 aUseCase ); |
|
385 |
|
386 StartMultimediaSharingL( aUseCase ); |
|
387 |
|
388 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::StartSharingWithUseCaseL" ); |
343 } |
389 } |
344 |
390 |
345 // ----------------------------------------------------------------------------- |
391 // ----------------------------------------------------------------------------- |
346 // |
392 // |
347 // ----------------------------------------------------------------------------- |
393 // ----------------------------------------------------------------------------- |
355 iAvailabilityMonitors[i]->RequestComplete(); |
401 iAvailabilityMonitors[i]->RequestComplete(); |
356 iAvailabilityMonitors.Remove( i ); |
402 iAvailabilityMonitors.Remove( i ); |
357 } |
403 } |
358 } |
404 } |
359 |
405 |
|
406 // ----------------------------------------------------------------------------- |
|
407 // CMusManagerServerCore::IsMusEnginePlugin |
|
408 // ----------------------------------------------------------------------------- |
|
409 // |
|
410 TBool CMusManagerServerCore::IsMusEnginePlugin() |
|
411 { |
|
412 TBool isMus( EFalse ); |
|
413 if ( !iPluginName.Compare( KMusEngineName ) ) |
|
414 { |
|
415 isMus = ETrue; |
|
416 } |
|
417 return isMus; |
|
418 } |
|
419 |
|
420 // ----------------------------------------------------------------------------- |
|
421 // CMusManagerServerCore::Availability |
|
422 // ----------------------------------------------------------------------------- |
|
423 // |
|
424 MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::Availability() |
|
425 { |
|
426 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::Availability" ); |
|
427 if ( IsMusEnginePlugin() ) |
|
428 { |
|
429 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::Availability - MuS plugin" ); |
|
430 return iPluginManager->Availability(); |
|
431 } |
|
432 else |
|
433 { |
|
434 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::Availability - non-MuS plugin" ); |
|
435 return EMultimediaSharingAvailable; |
|
436 } |
|
437 } |
|
438 |
|
439 // ----------------------------------------------------------------------------- |
|
440 // CMusManagerServerCore::ApplicationAllowed |
|
441 // ----------------------------------------------------------------------------- |
|
442 // |
|
443 TBool CMusManagerServerCore::ApplicationAllowed() |
|
444 { |
|
445 if ( IsMusEnginePlugin() ) |
|
446 { |
|
447 return iPluginManager->ApplicationAllowed(); |
|
448 } |
|
449 else |
|
450 { |
|
451 return ETrue; |
|
452 } |
|
453 } |
|
454 |
|
455 // ----------------------------------------------------------------------------- |
|
456 // CMusManagerServerCore::PrepareForReceivedInviteL |
|
457 // ----------------------------------------------------------------------------- |
|
458 // |
|
459 void CMusManagerServerCore::PrepareForReceivedInviteL() |
|
460 { |
|
461 if ( IsMusEnginePlugin() ) |
|
462 { |
|
463 iPluginManager->PrepareForReceivedInviteL(); |
|
464 } |
|
465 } |
|
466 |
|
467 // ----------------------------------------------------------------------------- |
|
468 // CMusManagerServerCore::WriteSessionPropertiesL |
|
469 // ----------------------------------------------------------------------------- |
|
470 // |
|
471 void CMusManagerServerCore::WriteSessionPropertiesL( |
|
472 MultimediaSharing::TMusUseCase aUseCase, |
|
473 MultimediaSharing::TMusAvailabilityStatus aStatus, |
|
474 MDesCArray& aSessionParameters ) |
|
475 { |
|
476 if ( IsMusEnginePlugin() ) |
|
477 { |
|
478 iApplicationManager->WriteSessionPropertiesL( |
|
479 aUseCase, |
|
480 aStatus, |
|
481 aSessionParameters ); |
|
482 } |
|
483 } |
|
484 |
|
485 // ----------------------------------------------------------------------------- |
|
486 // CMusManagerServerCore::WriteSessionPropertiesL |
|
487 // ----------------------------------------------------------------------------- |
|
488 // |
|
489 void CMusManagerServerCore::WriteSessionPropertiesL( |
|
490 MultimediaSharing::TMusAvailabilityStatus aStatus, |
|
491 MDesCArray& aSessionParameters ) |
|
492 { |
|
493 if ( IsMusEnginePlugin() ) |
|
494 { |
|
495 iApplicationManager->WriteSessionPropertiesL( |
|
496 aStatus, |
|
497 aSessionParameters ); |
|
498 } |
|
499 } |
|
500 |
360 // End of File |
501 // End of File |