imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp
changeset 1 235a7fc86938
parent 0 2014ca87e772
child 5 82749d516180
child 14 2edacbf5d3f9
--- a/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp	Tue Jan 26 15:18:05 2010 +0200
+++ b/imagehandlingutilities/thumbnailmanager/thumbnailclient/src/thumbnailrequestactive.cpp	Tue Feb 02 00:23:15 2010 +0200
@@ -106,6 +106,7 @@
     iCallbackThumbnail = new( ELeave )CThumbnailDataImpl();
 
     iTimer = CPeriodic::NewL(CActive::EPriorityIdle);
+    iStartError = KErrNone;
     
 #ifdef _DEBUG
     iStartExecTime.UniversalTime();
@@ -203,7 +204,7 @@
 //
 void CThumbnailRequestActive::RunL()
     {
-    TN_DEBUG1( "CThumbnaiRequestActive::RunL()" );
+    TN_DEBUG2( "CThumbnaiRequestActive::RunL() - request ID: %d", iParams.iRequestId );
     
     if ( iParams.iControlFlags == EThumbnailPreviewThumbnail )
         {
@@ -405,7 +406,15 @@
         if( iError == KErrServerTerminated)
             {
             iSession.Close();
-            iSession.Connect();
+            TInt connErr = iSession.Connect();
+            if (connErr != KErrNone)
+                {
+                TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - session reconnect err %d", connErr );
+                }
+            else
+                {
+                TN_DEBUG1( "CThumbnailRequestActive::HandleError() - session reconnected");
+                }
             }
         iCallbackThumbnail->Set( NULL, iClientData );
         
@@ -415,7 +424,7 @@
             iError = KErrNotFound;
             }
         
-        TN_DEBUG2( "CThumbnaiRequestActive::RunL() - iObserver.ThumbnailReady %d", iParams.iRequestId );
+        TN_DEBUG2( "CThumbnaiRequestActive::HandleError() - iObserver.ThumbnailReady %d", iParams.iRequestId );
         iObserver.ThumbnailReady( iError, *iCallbackThumbnail, iParams.iRequestId );
         
         iError = KErrNone;
@@ -710,6 +719,22 @@
     }
 
 // ---------------------------------------------------------------------------
+// CThumbnailRequestActive::StartError()
+// Error handling function.
+// ---------------------------------------------------------------------------
+//
+void CThumbnailRequestActive::StartError( const TInt aErr )
+    {
+    TN_DEBUG1( "CThumbnailRequestActive::StartError");
+    
+    iStartError = aErr;
+    iRequestActive = ETrue;
+    
+    iTimer->Start( KClientRequestStartErrorTimeout, KClientRequestStartErrorTimeout, 
+                   TCallBack(TimerCallBack, this));
+    }
+
+// ---------------------------------------------------------------------------
 // CThumbnailRequestActive::TimerCallBack()
 // ---------------------------------------------------------------------------
 //
@@ -720,7 +745,17 @@
     CThumbnailRequestActive* self = static_cast<CThumbnailRequestActive*>( aAny );
     
     self->Cancel();
-    self->iError = KErrTimedOut;
+    self->iTimer->Cancel();
+    
+    if (self->iStartError != KErrNone)
+        {
+        self->iError = self->iStartError;
+        }
+    else
+        {
+        self->iError = KErrTimedOut;
+        }
+    
     self->HandleError();
     
     return KErrNone;