messagingapp/msgappfw/client/src/ccsrequesthandler.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 37 518b245aa84c
child 47 5b14749788d7
equal deleted inserted replaced
23:238255e8b033 25:84d9eb65b26f
    33 //USER INCLUDES
    33 //USER INCLUDES
    34 #include "ccsdebug.h"
    34 #include "ccsdebug.h"
    35 #include "ccsconversationchangeobserver.h"
    35 #include "ccsconversationchangeobserver.h"
    36 
    36 
    37 const TInt  KSmallIpcBuffer = 256; //256 bytes
    37 const TInt  KSmallIpcBuffer = 256; //256 bytes
       
    38 const TInt KBigIpcBuffer = 2048; // 2K
    38 
    39 
    39 // ========================= MEMBER FUNCTIONS ==================================
    40 // ========================= MEMBER FUNCTIONS ==================================
    40 
    41 
    41 // -----------------------------------------------------------------------------
    42 // -----------------------------------------------------------------------------
    42 // CCSRequestHandler::NewL()
    43 // CCSRequestHandler::NewL()
   292 // -----------------------------------------------------------------------------
   293 // -----------------------------------------------------------------------------
   293 void CCSRequestHandler::HandleGetConversationListOverflow()
   294 void CCSRequestHandler::HandleGetConversationListOverflow()
   294     {
   295     {
   295     PRINT ( _L("Enter CCSRequestHandler::HandleGetConversationListOverflow") );
   296     PRINT ( _L("Enter CCSRequestHandler::HandleGetConversationListOverflow") );
   296 
   297 
       
   298 	if ( !iListResultsBuffer )
       
   299         {
       
   300 		return;
       
   301 		}
   297     TInt error = KErrNone;
   302     TInt error = KErrNone;
   298 
   303 
   299     // New buffer size is now stored in results buffer
   304     // New buffer size is now stored in results buffer
   300     RDesReadStream stream(iListResultsBuffer->Des());
   305     RDesReadStream stream(iListResultsBuffer->Des());
   301     TInt bufferSize = 0;
   306     TInt bufferSize = 0;
   312         }
   317         }
   313 
   318 
   314     stream.Close();
   319     stream.Close();
   315 
   320 
   316     // Delete and recreate the results buffer
   321     // Delete and recreate the results buffer
   317     if ( iListResultsBuffer )
   322     delete iListResultsBuffer;
   318         {
   323     iListResultsBuffer = NULL;
   319         delete iListResultsBuffer;
       
   320         iListResultsBuffer = NULL;
       
   321         }
       
   322 
   324 
   323     // Buffer created for the new size
   325     // Buffer created for the new size
   324     TRAP(error, 
   326     TRAP(error, 
   325             iListResultsBuffer = HBufC8::NewL(bufferSize);
   327             iListResultsBuffer = HBufC8::NewL(bufferSize);
   326             iSession.GetConversationListL(iListResultsBuffer->Des(),iStatus)
   328             iSession.GetConversationListL(iListResultsBuffer->Des(),iStatus)
   341 // -----------------------------------------------------------------------------
   343 // -----------------------------------------------------------------------------
   342 void CCSRequestHandler::HandleGetConversationOverflow()
   344 void CCSRequestHandler::HandleGetConversationOverflow()
   343     {
   345     {
   344     PRINT ( _L("Enter CCSRequestHandler::HandleGetConversationOverflow") );
   346     PRINT ( _L("Enter CCSRequestHandler::HandleGetConversationOverflow") );
   345 
   347 
       
   348 	   if ( !iConvResultsBuffer )
       
   349         {
       
   350 				return;
       
   351 				}
   346     TInt error = KErrNone;
   352     TInt error = KErrNone;
   347 
   353 
   348     // New buffer size is now stored in results buffer
   354     // New buffer size is now stored in results buffer
   349     RDesReadStream stream(iConvResultsBuffer->Des());
   355     RDesReadStream stream(iConvResultsBuffer->Des());
   350     TInt bufferSize = 0;
   356     TInt bufferSize = 0;
   362         }
   368         }
   363 
   369 
   364     stream.Close();
   370     stream.Close();
   365 
   371 
   366     // Delete and recreate the results buffer
   372     // Delete and recreate the results buffer
   367     if ( iConvResultsBuffer )
   373     delete iConvResultsBuffer;
   368         {
   374     iConvResultsBuffer = NULL;
   369         delete iConvResultsBuffer;
       
   370         iConvResultsBuffer = NULL;
       
   371         }
       
   372 
   375 
   373     // Buffer created for the new size
   376     // Buffer created for the new size
   374     TRAP(error, 
   377     TRAP(error, 
   375             iConvResultsBuffer = HBufC8::NewL(bufferSize);
   378             iConvResultsBuffer = HBufC8::NewL(bufferSize);
   376             iSession.SendNewBufferGetConversationL(iConvResultsBuffer->Des(),iStatus)
   379             iSession.SendNewBufferGetConversationL(iConvResultsBuffer->Des(),iStatus)
  1191     resultStream.Pop();
  1194     resultStream.Pop();
  1192     resultStream.Close();
  1195     resultStream.Close();
  1193     
  1196     
  1194     return conversationId;
  1197     return conversationId;
  1195     }
  1198     }
       
  1199 	
       
  1200 // -----------------------------------------------------------------------------
       
  1201 // CCSRequestHandler::GetConversationFromMessageIdL()
       
  1202 // -----------------------------------------------------------------------------
       
  1203 EXPORT_C CCsClientConversation* CCSRequestHandler::GetConversationFromMessageIdL(TInt aMessageId)        
       
  1204 {    
       
  1205     // Create a buffer to store the results.
       
  1206     if(iResultsBuffer)
       
  1207     {
       
  1208         delete iResultsBuffer;
       
  1209         iResultsBuffer = NULL;
       
  1210     }
       
  1211     iResultsBuffer = HBufC8::NewL(KBigIpcBuffer);
       
  1212 
       
  1213     // Send the request
       
  1214     iSession.GetConversationFromMessageIdL(aMessageId, iResultsBuffer->Des());
       
  1215 
       
  1216     // Parse the results
       
  1217     RDesReadStream resultStream(iResultsBuffer->Des());
       
  1218     resultStream.PushL();
       
  1219     CCsClientConversation* clientConversation = CCsClientConversation::NewL();
       
  1220     CleanupStack::PushL(clientConversation);
       
  1221     clientConversation->InternalizeL(resultStream);
       
  1222     CleanupStack::Pop(clientConversation);
       
  1223     
       
  1224     // Cleanup
       
  1225     delete iResultsBuffer;
       
  1226     iResultsBuffer = NULL;
       
  1227     resultStream.Pop();
       
  1228     resultStream.Close();
       
  1229 
       
  1230     return clientConversation;
       
  1231 }
       
  1232 
  1196 // -----------------------------------------------------------------------------
  1233 // -----------------------------------------------------------------------------
  1197 // CCSRequestHandler::GetMessagingHistoryL()
  1234 // CCSRequestHandler::GetMessagingHistoryL()
  1198 // -----------------------------------------------------------------------------
  1235 // -----------------------------------------------------------------------------
  1199 EXPORT_C void CCSRequestHandler::GetMessagingHistoryL(TInt aContactId)
  1236 EXPORT_C void CCSRequestHandler::GetMessagingHistoryL(TInt aContactId)
  1200     {
  1237     {
  1208     CCsConversationEntry *entry = CCsConversationEntry::NewL();
  1245     CCsConversationEntry *entry = CCsConversationEntry::NewL();
  1209     clientConversation->SetConversationEntryL(entry);
  1246     clientConversation->SetConversationEntryL(entry);
  1210     GetConversationsL(clientConversation);
  1247     GetConversationsL(clientConversation);
  1211     
  1248     
  1212     //delete 
  1249     //delete 
  1213     if ( clientConversation )
  1250     delete clientConversation;
  1214         delete clientConversation;
       
  1215     if( entry )
  1251     if( entry )
  1216         delete entry;  
  1252         delete entry;  
  1217         
  1253         
  1218     return;
  1254     return;
  1219     }
  1255     }