activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp
changeset 61 8e5041d13c84
child 66 32469d7d46ff
equal deleted inserted replaced
60:f62f87b200ec 61:8e5041d13c84
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "hsactivitydbasyncrequest_p.h"
       
    19 #include "hsactivitydbclient_p.h"
       
    20 #include "hsserializer.h"
       
    21 // -----------------------------------------------------------------------------
       
    22 //
       
    23 // -----------------------------------------------------------------------------
       
    24 //
       
    25 HsActivityDbAsyncRequestPrivate* 
       
    26     HsActivityDbAsyncRequestPrivate::NewL(HsActivityDbAsyncRequestObserver& observer,
       
    27                                           HsActivityDbClientPrivate& session)
       
    28 {
       
    29     HsActivityDbAsyncRequestPrivate* self = 
       
    30         HsActivityDbAsyncRequestPrivate::NewLC(observer, session);
       
    31     CleanupStack::Pop(self);
       
    32     return self;
       
    33 }
       
    34 // -----------------------------------------------------------------------------
       
    35 //
       
    36 // -----------------------------------------------------------------------------
       
    37 //
       
    38 HsActivityDbAsyncRequestPrivate* 
       
    39     HsActivityDbAsyncRequestPrivate::NewLC(HsActivityDbAsyncRequestObserver& observer,
       
    40                                            HsActivityDbClientPrivate& session)
       
    41 {
       
    42     HsActivityDbAsyncRequestPrivate* self = 
       
    43         new (ELeave)HsActivityDbAsyncRequestPrivate(observer, session);
       
    44     CleanupStack::PushL(self);
       
    45     self->mDataBuf.CreateL(64);
       
    46     return self;
       
    47 }
       
    48 // -----------------------------------------------------------------------------
       
    49 //
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 HsActivityDbAsyncRequestPrivate::HsActivityDbAsyncRequestPrivate(HsActivityDbAsyncRequestObserver &observer,
       
    53                                                                  HsActivityDbClientPrivate &session)
       
    54 :
       
    55     CActive(EPriorityStandard),
       
    56     mObserver(observer),
       
    57     mSession(session),
       
    58     mRequestType(-1),
       
    59     mDataSize()
       
    60 {
       
    61     CActiveScheduler::Add(this);
       
    62 }
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 //
       
    66 // -----------------------------------------------------------------------------
       
    67 //
       
    68 HsActivityDbAsyncRequestPrivate::~HsActivityDbAsyncRequestPrivate()
       
    69 {
       
    70     mDataBuf.Close();
       
    71     Cancel();
       
    72 }
       
    73 
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 // -----------------------------------------------------------------------------
       
    77 //
       
    78 void HsActivityDbAsyncRequestPrivate::DoCancel()
       
    79 {
       
    80     if(IsActive()) {
       
    81     mSession.cancelWaitActivity();
       
    82     }
       
    83 }
       
    84 
       
    85 // -----------------------------------------------------------------------------
       
    86 //
       
    87 // -----------------------------------------------------------------------------
       
    88 //
       
    89 void HsActivityDbAsyncRequestPrivate::RunL()
       
    90 {
       
    91     RBuf8 buff;
       
    92     CleanupClosePushL(buff);
       
    93     QString data;
       
    94     int requestResult(iStatus.Int());
       
    95     if(KErrNone == requestResult) {
       
    96         if(0 < mDataSize()) {
       
    97             buff.CreateL(mDataSize());
       
    98         }
       
    99         mSession.getData(buff);
       
   100         data = QString::fromAscii(reinterpret_cast<const char*>(buff.Ptr()), 
       
   101                                   buff.Length());
       
   102         buff.Close();
       
   103     }
       
   104     mObserver.asyncRequestCompleated(requestResult, mRequestType, data);
       
   105     CleanupStack::PopAndDestroy(&buff);
       
   106 }
       
   107 
       
   108 // -----------------------------------------------------------------------------
       
   109 //
       
   110 // -----------------------------------------------------------------------------
       
   111 //
       
   112 void HsActivityDbAsyncRequestPrivate::waitActivity(const QVariantHash& condition)
       
   113 {
       
   114     mRequestType = WaitActivity;
       
   115     iStatus = KRequestPending;
       
   116     SetActive();
       
   117     mDataBuf << condition;
       
   118     mSession.sendDataAsync(mRequestType, TIpcArgs(&mDataBuf, &mDataSize), iStatus);
       
   119 }