mmsharing/mmshmanagersrv/src/musmanagerservercore.cpp
branchRCL_3
changeset 22 73a1feb507fb
parent 0 f0cf47e981f9
child 23 bc78a40cd63c
equal deleted inserted replaced
21:33a5d2bbf6fc 22:73a1feb507fb
    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