contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp
branchRCL_3
changeset 74 edd621764147
parent 64 b276298d5729
child 82 ace62b58f4b2
equal deleted inserted replaced
64:b276298d5729 74:edd621764147
    40 // -----------------------------------------------------------------------------
    40 // -----------------------------------------------------------------------------
    41 // CCPServerSession::NewL
    41 // CCPServerSession::NewL
    42 // Two-phased constructor.
    42 // Two-phased constructor.
    43 // -----------------------------------------------------------------------------
    43 // -----------------------------------------------------------------------------
    44 //
    44 //
    45 CCPServerSession* CCPServerSession::NewL( TPointersForSession& aPasser )
    45 CCPServerSession* CCPServerSession::NewL(TPointersForSession& aPasser)
    46     {
    46     {
    47     CCPServerSession* self = CCPServerSession::NewLC( aPasser );
    47     CCPServerSession* self = CCPServerSession::NewLC(aPasser);
    48     CleanupStack::Pop( self ) ;
    48     CleanupStack::Pop( self ) ;
    49     return self;
    49     return self;
    50     }
    50     }
    51 
    51 
    52 // -----------------------------------------------------------------------------
    52 // -----------------------------------------------------------------------------
    53 // CCPServerSession::NewLC
    53 // CCPServerSession::NewLC
    54 // Two-phased constructor.
    54 // Two-phased constructor.
    55 // -----------------------------------------------------------------------------
    55 // -----------------------------------------------------------------------------
    56 //
    56 //
    57 CCPServerSession* CCPServerSession::NewLC( TPointersForSession& aPasser )
    57 CCPServerSession* CCPServerSession::NewLC(TPointersForSession& aPasser)
    58     {
    58     {
    59     CCPServerSession* self = new ( ELeave ) CCPServerSession();
    59     CCPServerSession* self = new (ELeave) CCPServerSession();
    60     CleanupStack::PushL( self );
    60     CleanupStack::PushL( self );
    61     self->ConstructL( aPasser ) ;
    61     self->ConstructL( aPasser ) ;
    62     return self;
    62     return self;
    63     }
    63     }
    64 
    64 
   127         aMessage.Complete( KErrLocked );
   127         aMessage.Complete( KErrLocked );
   128         }
   128         }
   129     else
   129     else
   130         {
   130         {
   131         TInt err(KErrNone);
   131         TInt err(KErrNone);
   132         TBool panicedClient(EFalse);
   132         TBool completeRequest( ETrue ); 
   133         TRAP( err , DispatchMessageL( aMessage, panicedClient ) );
   133         //complete request by default
       
   134         //not applicable when client panicked or 
       
   135         //in case of ECpServerExecuteMultipleActions
       
   136         TRAP( err , DispatchMessageL( aMessage, completeRequest ) );
   134         if ( (!(aMessage.Function( ) == ECpServerRegisterObserver ) 
   137         if ( (!(aMessage.Function( ) == ECpServerRegisterObserver ) 
   135             || err == KErrInUse) && !panicedClient )
   138             || err == KErrInUse) && completeRequest )
   136             {
   139             {
   137             aMessage.Complete( err );
   140             if( !aMessage.IsNull() ) 
       
   141                 {
       
   142                 aMessage.Complete( err );
       
   143                 }
   138             }
   144             }
   139         }
   145         }
   140     }
   146     }
   141 
   147 
   142 // -----------------------------------------------------------------------------
   148 // -----------------------------------------------------------------------------
   143 // CCPServerSession::ServiceL
   149 // CCPServerSession::ServiceL
   144 // Handle client requests.
   150 // Handle client requests.
   145 // -----------------------------------------------------------------------------
   151 // -----------------------------------------------------------------------------
   146 //
   152 //
   147 void CCPServerSession::DispatchMessageL( const RMessage2& aMessage, TBool& aPanicedClient )
   153 void CCPServerSession::DispatchMessageL( const RMessage2& aMessage, 
       
   154                                          TBool& aCompleteRequest )
   148     {
   155     {
   149     CP_DEBUG( _L8("CCPServerSession::DispatchMessageL()" ) );
   156     CP_DEBUG( _L8("CCPServerSession::DispatchMessageL()" ) );
   150     switch ( aMessage.Function( ) )
   157     switch ( aMessage.Function( ) )
   151         {
   158         {
   152         case ECpServerAddData:
   159         case ECpServerAddData:
   182         case ECpServerExecuteAction:
   189         case ECpServerExecuteAction:
   183             ExecuteActionL( aMessage );
   190             ExecuteActionL( aMessage );
   184             break;
   191             break;
   185         case ECpServerExecuteMultipleActions:
   192         case ECpServerExecuteMultipleActions:
   186             ExecuteMultipleActionsL( aMessage );
   193             ExecuteMultipleActionsL( aMessage );
       
   194             aCompleteRequest = EFalse;
   187             break;
   195             break;
   188         default:
   196         default:
   189             iServer->PanicClient( aMessage, ECPServerBadRequest );
   197             iServer->PanicClient( aMessage, ECPServerBadRequest );
   190             aPanicedClient = ETrue;
   198             aCompleteRequest = EFalse;
   191             break;
   199             break;
   192         }
   200         }
   193     }
   201     }
   194 
   202 
   195 // -----------------------------------------------------------------------------
   203 // -----------------------------------------------------------------------------
   323     {
   331     {
   324     CP_DEBUG( _L8("CCPServerSession::ExecuteMultipleActionsL()" ) );
   332     CP_DEBUG( _L8("CCPServerSession::ExecuteMultipleActionsL()" ) );
   325     
   333     
   326     CLiwGenericParamList* genericList = UnpackForMultiExecuteLC(aMessage);
   334     CLiwGenericParamList* genericList = UnpackForMultiExecuteLC(aMessage);
   327     TUint options = static_cast<TUint> (aMessage.Int2()); // 2 == KOptionsPosition
   335     TUint options = static_cast<TUint> (aMessage.Int2()); // 2 == KOptionsPosition
   328 
   336     //complete message in order to unblock HS
       
   337     aMessage.Complete( KErrNone );
       
   338     
   329     const TLiwGenericParam* param = NULL;
   339     const TLiwGenericParam* param = NULL;
   330     TInt pos(0);
   340     TInt pos(0);
   331     param = genericList->FindFirst(pos, KFilters);
   341     param = genericList->FindFirst(pos, KFilters);
   332     const CLiwList* maps = param->Value().AsList();
   342     const CLiwList* maps = param->Value().AsList();
   333     CLiwDefaultList* cpMaps = CheckValidityLC(maps);
   343     CLiwDefaultList* cpMaps = CheckValidityLC(maps);
   334     
       
   335     //execute actions
   344     //execute actions
   336     for (TInt i = 0; i < cpMaps->Count(); i++)
   345     for (TInt i = 0; i < cpMaps->Count(); i++)
   337         {
   346         {
   338         TLiwVariant mapVariant;
   347         TLiwVariant mapVariant;
   339         mapVariant.PushL();
   348         mapVariant.PushL();
   385             }
   394             }
   386         isRegister = ETrue;
   395         isRegister = ETrue;
   387         if ( !iNotificationHandler )
   396         if ( !iNotificationHandler )
   388             {
   397             {
   389             iNotificationHandler = CCPNotificationHandler::NewL(
   398             iNotificationHandler = CCPNotificationHandler::NewL(
   390                                                iServer->GetNotifications());
   399                     iServer->GetNotifications(), iServer->GetDataMapCache());
   391             iDataManager->AddObserverL( iNotificationHandler );
   400             iDataManager->AddObserverL( iNotificationHandler );
   392             }
   401             }
   393         iNotificationHandler->SaveMessageL( aMessage );
   402         iNotificationHandler->SaveMessageL( aMessage );
   394         }
   403         }
   395     else
   404     else