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