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" |
|
29 |
28 |
30 using namespace MultimediaSharing; |
29 using namespace MultimediaSharing; |
31 |
30 |
32 // CONSTANTS |
31 // CONSTANTS |
33 _LIT8( KMusEngineName, "MultimediaSharing" ); |
|
34 |
|
35 |
32 |
36 // ----------------------------------------------------------------------------- |
33 // ----------------------------------------------------------------------------- |
37 // CMusManagerServerCore::NewL |
34 // CMusManagerServerCore::NewL |
38 // ----------------------------------------------------------------------------- |
35 // ----------------------------------------------------------------------------- |
39 // |
36 // |
82 { |
79 { |
83 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::ConstructL" ); |
80 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::ConstructL" ); |
84 |
81 |
85 iApplicationManager = CMusApplicationManager::NewL(); |
82 iApplicationManager = CMusApplicationManager::NewL(); |
86 |
83 |
87 iApplicationManager->ResolvePluginNameL( iPluginName ); |
|
88 |
|
89 iPluginManager = CMusAvailabilityPluginManager::NewL( *this, *iApplicationManager ); |
84 iPluginManager = CMusAvailabilityPluginManager::NewL( *this, *iApplicationManager ); |
90 |
85 |
91 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::ConstructL" ); |
86 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::ConstructL" ); |
92 } |
87 } |
93 |
88 |
118 // |
113 // |
119 MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::AvailabilityQueryL() |
114 MultimediaSharing::TMusAvailabilityStatus CMusManagerServerCore::AvailabilityQueryL() |
120 { |
115 { |
121 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityQueryL" ); |
116 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityQueryL" ); |
122 MultimediaSharing::TMusAvailabilityStatus status |
117 MultimediaSharing::TMusAvailabilityStatus status |
123 = Availability(); |
118 = iPluginManager->Availability(); |
124 |
119 |
125 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityQueryL" ); |
120 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityQueryL" ); |
126 return status; |
121 return status; |
127 } |
122 } |
128 // ----------------------------------------------------------------------------- |
123 // ----------------------------------------------------------------------------- |
130 // ----------------------------------------------------------------------------- |
125 // ----------------------------------------------------------------------------- |
131 // |
126 // |
132 void CMusManagerServerCore::CommandL( MultimediaSharing::TCommandType aCommandType ) |
127 void CMusManagerServerCore::CommandL( MultimediaSharing::TCommandType aCommandType ) |
133 { |
128 { |
134 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::CommandL" ); |
129 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::CommandL" ); |
135 if ( aCommandType == MultimediaSharing::ECommandManualActivation && |
130 if ( aCommandType == MultimediaSharing::ECommandManualActivation ) |
136 IsMusEnginePlugin() ) |
|
137 { |
131 { |
138 MUS_LOG( "mus: [MUSSRV] Manual Activation is started" ) |
132 MUS_LOG( "mus: [MUSSRV] Manual Activation is started" ) |
139 iPluginManager->ManualQueryL(); |
133 iPluginManager->ManualQueryL(); |
140 } |
134 } |
141 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::CommandL" ); |
135 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::CommandL" ); |
146 // ----------------------------------------------------------------------------- |
140 // ----------------------------------------------------------------------------- |
147 // |
141 // |
148 void CMusManagerServerCore::InvestigateAvailabilityL() |
142 void CMusManagerServerCore::InvestigateAvailabilityL() |
149 { |
143 { |
150 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvestigateAvailabilityL" ); |
144 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvestigateAvailabilityL" ); |
151 if ( IsMusEnginePlugin() ) |
145 iPluginManager->InvestigateAvailabilityL(); |
152 { |
|
153 iPluginManager->InvestigateAvailabilityL(); |
|
154 } |
|
155 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvestigateAvailabilityL" ); |
146 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvestigateAvailabilityL" ); |
156 } |
147 } |
157 |
148 |
158 // ----------------------------------------------------------------------------- |
149 // ----------------------------------------------------------------------------- |
159 // CMusManagerServerCore::InvitationReceived |
150 // CMusManagerServerCore::InvitationReceived |
164 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvitationReceivedL" ); |
155 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::InvitationReceivedL" ); |
165 |
156 |
166 TInt uid = aChannelId.iUid; |
157 TInt uid = aChannelId.iUid; |
167 |
158 |
168 if( uid == CMusManager::ESipInviteDesired && |
159 if( uid == CMusManager::ESipInviteDesired && |
169 ApplicationAllowed() ) |
160 iPluginManager->ApplicationAllowed() ) |
170 { |
161 { |
171 PrepareForReceivedInviteL(); |
|
172 |
|
173 // write session boundary values |
162 // write session boundary values |
174 WriteSessionPropertiesL( |
163 iApplicationManager->WriteSessionPropertiesL( |
175 MultimediaSharing::EMusReceive, |
164 MultimediaSharing::EMusReceive, |
176 Availability(), |
165 iPluginManager->Availability(), |
177 iPluginManager->SessionParametersL() ); |
166 iPluginManager->SessionParametersL() ); |
178 |
167 |
179 iApplicationManager->StartApplicationL(); |
168 iApplicationManager->StartApplicationL(); |
180 } |
169 } |
181 else if( uid == CMusManager::ESipInviteDesired2WayVideo && |
170 else if( uid == CMusManager::ESipInviteNotDesired ) |
182 ApplicationAllowed() ) |
171 { |
183 { |
172 iPluginManager->InvitationReceivedL(); |
184 PrepareForReceivedInviteL(); |
173 } |
185 |
174 else |
186 // write session boundary values |
175 { |
187 WriteSessionPropertiesL( |
176 User::Leave( KErrNotReady ); |
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 } |
|
204 } |
177 } |
205 |
178 |
206 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvitationReceivedL" ); |
179 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::InvitationReceivedL" ); |
207 } |
180 } |
208 |
181 |
211 // ----------------------------------------------------------------------------- |
184 // ----------------------------------------------------------------------------- |
212 // |
185 // |
213 void CMusManagerServerCore::OptionsReceivedL( TUid /*aChannelId*/ ) |
186 void CMusManagerServerCore::OptionsReceivedL( TUid /*aChannelId*/ ) |
214 { |
187 { |
215 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::OptionsReceivedL" ); |
188 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::OptionsReceivedL" ); |
216 if ( IsMusEnginePlugin() ) |
189 iPluginManager->OptionsReceivedL(); |
217 { |
|
218 iPluginManager->OptionsReceivedL(); |
|
219 } |
|
220 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::OptionsReceivedL" ); |
190 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::OptionsReceivedL" ); |
221 } |
191 } |
222 |
192 |
223 // ----------------------------------------------------------------------------- |
193 // ----------------------------------------------------------------------------- |
224 // |
194 // |
226 // |
196 // |
227 void CMusManagerServerCore::StartMultimediaSharingL( MultimediaSharing::TMusUseCase aUseCase ) |
197 void CMusManagerServerCore::StartMultimediaSharingL( MultimediaSharing::TMusUseCase aUseCase ) |
228 { |
198 { |
229 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::StartMultimediaSharingL" ); |
199 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::StartMultimediaSharingL" ); |
230 if( !iApplicationManager->ApplicationRunning() && |
200 if( !iApplicationManager->ApplicationRunning() && |
231 ApplicationAllowed() ) |
201 iPluginManager->ApplicationAllowed() ) |
232 { |
202 { |
233 // write session boundary values |
203 // write session boundary values |
234 WriteSessionPropertiesL( |
204 iApplicationManager->WriteSessionPropertiesL( |
235 aUseCase, |
205 aUseCase, |
236 Availability(), |
206 iPluginManager->Availability(), |
237 iPluginManager->SessionParametersL() ); |
207 iPluginManager->SessionParametersL() ); |
238 |
208 |
239 // start actual application |
209 // start actual application |
240 iApplicationManager->StartApplicationL(); |
210 iApplicationManager->StartApplicationL(); |
241 } |
211 } |
242 else |
212 else |
262 // ----------------------------------------------------------------------------- |
232 // ----------------------------------------------------------------------------- |
263 // |
233 // |
264 void CMusManagerServerCore::EventNoSessions() |
234 void CMusManagerServerCore::EventNoSessions() |
265 { |
235 { |
266 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::EventNoSessions" ); |
236 MUS_LOG( "mus: [MUSSRV] -> CMusManagerServerCore::EventNoSessions" ); |
267 if ( IsMusEnginePlugin() ) |
237 TRAPD( error, iPluginManager->StopPluginL() ); |
268 { |
238 if( error ) |
269 TRAPD( error, iPluginManager->StopPluginL() ); |
239 { |
270 if( error ) |
240 // iObserver.StopServer(); |
271 { |
|
272 // iObserver.StopServer(); |
|
273 } |
|
274 } |
241 } |
275 iObserver.StopServer(); |
242 iObserver.StopServer(); |
276 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::EventNoSessions" ); |
243 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::EventNoSessions" ); |
277 } |
244 } |
278 |
245 |
297 void CMusManagerServerCore::AvailabilityChangedL( |
264 void CMusManagerServerCore::AvailabilityChangedL( |
298 MultimediaSharing::TMusAvailabilityStatus aAvailability ) |
265 MultimediaSharing::TMusAvailabilityStatus aAvailability ) |
299 { |
266 { |
300 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityChangedL( %d )", |
267 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::AvailabilityChangedL( %d )", |
301 aAvailability ); |
268 aAvailability ); |
302 |
|
303 if ( !IsMusEnginePlugin() ) |
|
304 { |
|
305 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::AvailabilityChangedL - \ |
|
306 non-MuS plugin"); |
|
307 return; |
|
308 } |
|
309 // inform ui via application manager (via session api) |
269 // inform ui via application manager (via session api) |
310 |
270 |
311 WriteSessionPropertiesL( |
271 iApplicationManager->WriteSessionPropertiesL( |
312 aAvailability, |
272 aAvailability, |
313 iPluginManager->SessionParametersL() ); |
273 iPluginManager->SessionParametersL() ); |
314 |
274 |
315 if( iAvailabilityMonitors.Count() ) |
275 if( iAvailabilityMonitors.Count() ) |
316 { |
276 { |
317 // go through interested client sessions |
277 // go through interested client sessions |
318 for( TInt i=0; i<iAvailabilityMonitors.Count(); i++ ) |
278 for( TInt i=0; i<iAvailabilityMonitors.Count(); i++ ) |
375 // ----------------------------------------------------------------------------- |
335 // ----------------------------------------------------------------------------- |
376 // From MMusAvailabilityPluginManagerObserver. |
336 // From MMusAvailabilityPluginManagerObserver. |
377 // Starts live video sharing. |
337 // Starts live video sharing. |
378 // ----------------------------------------------------------------------------- |
338 // ----------------------------------------------------------------------------- |
379 // |
339 // |
380 void CMusManagerServerCore::StartSharingWithUseCaseL( |
340 void CMusManagerServerCore::StartLiveSharingL() |
381 MultimediaSharing::TMusUseCase aUseCase ) |
341 { |
382 { |
342 StartMultimediaSharingL( MultimediaSharing::EMusLiveVideo ); |
383 MUS_LOG1( "mus: [MUSSRV] -> CMusManagerServerCore::StartSharingWithUseCaseL:%d", |
|
384 aUseCase ); |
|
385 |
|
386 StartMultimediaSharingL( aUseCase ); |
|
387 |
|
388 MUS_LOG( "mus: [MUSSRV] <- CMusManagerServerCore::StartSharingWithUseCaseL" ); |
|
389 } |
343 } |
390 |
344 |
391 // ----------------------------------------------------------------------------- |
345 // ----------------------------------------------------------------------------- |
392 // |
346 // |
393 // ----------------------------------------------------------------------------- |
347 // ----------------------------------------------------------------------------- |
401 iAvailabilityMonitors[i]->RequestComplete(); |
355 iAvailabilityMonitors[i]->RequestComplete(); |
402 iAvailabilityMonitors.Remove( i ); |
356 iAvailabilityMonitors.Remove( i ); |
403 } |
357 } |
404 } |
358 } |
405 |
359 |
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 |
|
501 // End of File |
360 // End of File |