activityfw/storage/common/src/afentry.cpp
author hgs
Mon, 20 Sep 2010 10:22:22 +0300
changeset 119 50e220be30d1
parent 116 305818acdca4
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
99
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
#include "afentry.h"
hgs
parents:
diff changeset
    18
#include <s32mem.h>
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    21
/**
hgs
parents:
diff changeset
    22
 * Two-phase constructor. Create and initialize instance
hgs
parents:
diff changeset
    23
 * @return entry instance
hgs
parents:
diff changeset
    24
 */
hgs
parents:
diff changeset
    25
CAfEntry* CAfEntry::NewL()
hgs
parents:
diff changeset
    26
{
hgs
parents:
diff changeset
    27
    CAfEntry *self = CAfEntry::NewLC();
hgs
parents:
diff changeset
    28
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    29
    return self;
hgs
parents:
diff changeset
    30
}
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
/**
hgs
parents:
diff changeset
    34
 * Two-phase constructor. Create, initialize and push instance into cleanup stack
hgs
parents:
diff changeset
    35
 * @return entry instance
hgs
parents:
diff changeset
    36
 */
hgs
parents:
diff changeset
    37
CAfEntry* CAfEntry::NewLC()
hgs
parents:
diff changeset
    38
{
hgs
parents:
diff changeset
    39
    CAfEntry *self = new (ELeave)CAfEntry();
hgs
parents:
diff changeset
    40
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    41
    return self;
hgs
parents:
diff changeset
    42
}
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    45
/**
hgs
parents:
diff changeset
    46
 * Two-phase constructor. Create and initialize instance
hgs
parents:
diff changeset
    47
 * @param flags - entry flags
hgs
parents:
diff changeset
    48
 * @param applicationId - application unique identifier
hgs
parents:
diff changeset
    49
 * @param activityId - activity unique identifier
hgs
parents:
diff changeset
    50
 * @param imgSrc - thumbanail source
hgs
parents:
diff changeset
    51
 * @param privateData - privated application data
hgs
parents:
diff changeset
    52
 * @param publicData - public activity data
hgs
parents:
diff changeset
    53
 * @return entry instance
hgs
parents:
diff changeset
    54
 */
hgs
parents:
diff changeset
    55
CAfEntry* CAfEntry::NewL(TInt flags,
hgs
parents:
diff changeset
    56
                         TInt applicationId,
hgs
parents:
diff changeset
    57
                         const TDesC &activityId,
116
hgs
parents: 107
diff changeset
    58
                         const TDesC &customActivityName,
99
hgs
parents:
diff changeset
    59
                         const TDesC &imgSrc,
hgs
parents:
diff changeset
    60
                         const TDesC8 &privateData,
119
hgs
parents: 116
diff changeset
    61
                         const TDesC8 &publicData,
hgs
parents: 116
diff changeset
    62
                         const TTime &timestamp)
99
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    CAfEntry* self = CAfEntry::NewLC(flags, 
hgs
parents:
diff changeset
    65
                                     applicationId, 
hgs
parents:
diff changeset
    66
                                     activityId, 
116
hgs
parents: 107
diff changeset
    67
                                     customActivityName,
99
hgs
parents:
diff changeset
    68
                                     imgSrc, 
hgs
parents:
diff changeset
    69
                                     privateData, 
119
hgs
parents: 116
diff changeset
    70
                                     publicData,
hgs
parents: 116
diff changeset
    71
                                     timestamp);
99
hgs
parents:
diff changeset
    72
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    73
    return self;
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
 * Two-phase constructor. Create, initialize and push instance into cleanup stack
hgs
parents:
diff changeset
    79
 * @param flags - entry flags
hgs
parents:
diff changeset
    80
 * @param applicationId - application unique identifier
hgs
parents:
diff changeset
    81
 * @param activityId - activity unique identifier
hgs
parents:
diff changeset
    82
 * @param imgSrc - thumbanail source
hgs
parents:
diff changeset
    83
 * @param privateData - privated application data
hgs
parents:
diff changeset
    84
 * @param publicData - public activity data
hgs
parents:
diff changeset
    85
 * @return entry instance
hgs
parents:
diff changeset
    86
 */
hgs
parents:
diff changeset
    87
CAfEntry* CAfEntry::NewLC(TInt flags,
hgs
parents:
diff changeset
    88
                          TInt applicationId,
hgs
parents:
diff changeset
    89
                          const TDesC &activityId,
116
hgs
parents: 107
diff changeset
    90
                          const TDesC &customActivityName,
99
hgs
parents:
diff changeset
    91
                          const TDesC &imgSrc,
hgs
parents:
diff changeset
    92
                          const TDesC8 &privateData,
119
hgs
parents: 116
diff changeset
    93
                          const TDesC8 &publicData,
hgs
parents: 116
diff changeset
    94
                          const TTime &timestamp)
99
hgs
parents:
diff changeset
    95
{
hgs
parents:
diff changeset
    96
    CAfEntry *self = CAfEntry::NewLC();
hgs
parents:
diff changeset
    97
    self->ConstructL(flags, 
hgs
parents:
diff changeset
    98
                     applicationId, 
hgs
parents:
diff changeset
    99
                     activityId, 
116
hgs
parents: 107
diff changeset
   100
                     customActivityName,
99
hgs
parents:
diff changeset
   101
                     imgSrc, 
hgs
parents:
diff changeset
   102
                     privateData, 
119
hgs
parents: 116
diff changeset
   103
                     publicData,
hgs
parents: 116
diff changeset
   104
                     timestamp);
99
hgs
parents:
diff changeset
   105
    return self;
hgs
parents:
diff changeset
   106
}
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
CAfEntry* CAfEntry::NewLC(const RMessage2& msg, int offset)
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
    CAfEntry* self = CAfEntry::NewLC();
hgs
parents:
diff changeset
   112
    RBuf8 serializedEntry;
hgs
parents:
diff changeset
   113
    CleanupClosePushL(serializedEntry);
hgs
parents:
diff changeset
   114
    ReallocL(serializedEntry, msg.GetDesMaxLength(offset));
hgs
parents:
diff changeset
   115
    msg.ReadL(offset, serializedEntry);
hgs
parents:
diff changeset
   116
    RDesReadStream entryReader(serializedEntry);
hgs
parents:
diff changeset
   117
    CleanupClosePushL(entryReader);
hgs
parents:
diff changeset
   118
    entryReader >> (*self);
hgs
parents:
diff changeset
   119
    CleanupStack::PopAndDestroy(&entryReader);
hgs
parents:
diff changeset
   120
    CleanupStack::PopAndDestroy(&serializedEntry);
hgs
parents:
diff changeset
   121
    return self;
hgs
parents:
diff changeset
   122
}
hgs
parents:
diff changeset
   123
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   124
/**
hgs
parents:
diff changeset
   125
 * First phase constructor
hgs
parents:
diff changeset
   126
 */
hgs
parents:
diff changeset
   127
CAfEntry::CAfEntry()
hgs
parents:
diff changeset
   128
{
hgs
parents:
diff changeset
   129
}
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   132
/**
hgs
parents:
diff changeset
   133
 * Second phase constructor. Initialize instance
hgs
parents:
diff changeset
   134
 * @param flags - entry flags
hgs
parents:
diff changeset
   135
 * @param applicationId - application unique identifier
hgs
parents:
diff changeset
   136
 * @param activityId - activity unique identifier
hgs
parents:
diff changeset
   137
 * @param imgSrc - thumbanail source
hgs
parents:
diff changeset
   138
 * @param privateData - privated application data
hgs
parents:
diff changeset
   139
 * @param publicData - public activity data 
hgs
parents:
diff changeset
   140
 */
hgs
parents:
diff changeset
   141
void CAfEntry::ConstructL(TInt flags,
hgs
parents:
diff changeset
   142
                          TInt applicationId,
hgs
parents:
diff changeset
   143
                          const TDesC &activityId,
116
hgs
parents: 107
diff changeset
   144
                          const TDesC &customActivityName,
99
hgs
parents:
diff changeset
   145
                          const TDesC &imgSrc,
hgs
parents:
diff changeset
   146
                          const TDesC8 &privateData,
119
hgs
parents: 116
diff changeset
   147
                          const TDesC8 &publicData,
hgs
parents: 116
diff changeset
   148
                          const TTime &timestamp)
99
hgs
parents:
diff changeset
   149
{
hgs
parents:
diff changeset
   150
    mFlags = flags;
hgs
parents:
diff changeset
   151
    mAppId = applicationId;
hgs
parents:
diff changeset
   152
    CopyL(mActivityId, activityId);
116
hgs
parents: 107
diff changeset
   153
    CopyL(mCustomActivityName, customActivityName);
99
hgs
parents:
diff changeset
   154
    CopyL(mImgSrc, imgSrc);
hgs
parents:
diff changeset
   155
    CopyL(mPrivateData, privateData);
hgs
parents:
diff changeset
   156
    CopyL(mPublicData, publicData);
119
hgs
parents: 116
diff changeset
   157
    mTimestamp = timestamp;
99
hgs
parents:
diff changeset
   158
}
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   161
/**
hgs
parents:
diff changeset
   162
 * Destructor. Release allocated resources 
hgs
parents:
diff changeset
   163
 */
hgs
parents:
diff changeset
   164
CAfEntry::~CAfEntry()
hgs
parents:
diff changeset
   165
{
hgs
parents:
diff changeset
   166
    mActivityId.Close();
116
hgs
parents: 107
diff changeset
   167
    mCustomActivityName.Close();
99
hgs
parents:
diff changeset
   168
    mPrivateData.Close();
hgs
parents:
diff changeset
   169
    mPublicData.Close();
hgs
parents:
diff changeset
   170
    mImgSrc.Close();
hgs
parents:
diff changeset
   171
}
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   174
/**
hgs
parents:
diff changeset
   175
 * Provide size of serialized entry
hgs
parents:
diff changeset
   176
 * @return size of serialized entry instance
hgs
parents:
diff changeset
   177
 */
hgs
parents:
diff changeset
   178
TInt CAfEntry::Size() const
hgs
parents:
diff changeset
   179
{
116
hgs
parents: 107
diff changeset
   180
    return (sizeof(TInt) * 4) + //flags + appId + actId size info + customActivityName size info
99
hgs
parents:
diff changeset
   181
           mActivityId.Size() + //actId content size
116
hgs
parents: 107
diff changeset
   182
           mCustomActivityName.Size() + // customActivityName content size
119
hgs
parents: 116
diff changeset
   183
           TPckgBuf<TTime>().Size() + // timestamp size
99
hgs
parents:
diff changeset
   184
           DataSize(); //data size
hgs
parents:
diff changeset
   185
           
hgs
parents:
diff changeset
   186
}
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   189
/**
hgs
parents:
diff changeset
   190
 * Provide size of serialized entry
hgs
parents:
diff changeset
   191
 * @return size of serialized entry instance
hgs
parents:
diff changeset
   192
 */
hgs
parents:
diff changeset
   193
TInt CAfEntry::DataSize() const
hgs
parents:
diff changeset
   194
{
hgs
parents:
diff changeset
   195
    return (sizeof(TInt) * 3) + //privData size info + pubData size info + imgSrc size info
hgs
parents:
diff changeset
   196
            mImgSrc.Size() + //imgSize content size
hgs
parents:
diff changeset
   197
            mPrivateData.Size() + //privData content size
hgs
parents:
diff changeset
   198
            mPublicData.Size(); //pubData content size 
hgs
parents:
diff changeset
   199
}
hgs
parents:
diff changeset
   200
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   201
/**
hgs
parents:
diff changeset
   202
 * Serialize entry content into output stream.
hgs
parents:
diff changeset
   203
 * @param stream - output stream
hgs
parents:
diff changeset
   204
 */
hgs
parents:
diff changeset
   205
void CAfEntry::ExternalizeL(RWriteStream &stream) const
hgs
parents:
diff changeset
   206
{
hgs
parents:
diff changeset
   207
    stream.WriteInt32L(mFlags);
hgs
parents:
diff changeset
   208
    stream.WriteInt32L(mAppId);
hgs
parents:
diff changeset
   209
    ExternalizeL(stream, mActivityId);
116
hgs
parents: 107
diff changeset
   210
    ExternalizeL(stream, mCustomActivityName);
119
hgs
parents: 116
diff changeset
   211
    stream.WriteL(TPckgBuf<TTime>(mTimestamp));
99
hgs
parents:
diff changeset
   212
    ExternalizeDataOnlyL(stream);
hgs
parents:
diff changeset
   213
}
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   216
/**
hgs
parents:
diff changeset
   217
 * Deserialize entry content from input stream
hgs
parents:
diff changeset
   218
 * @param stream - input stream
hgs
parents:
diff changeset
   219
 */
hgs
parents:
diff changeset
   220
void CAfEntry::InternalizeL(RReadStream &stream)
hgs
parents:
diff changeset
   221
{
hgs
parents:
diff changeset
   222
    mFlags = stream.ReadInt32L();
hgs
parents:
diff changeset
   223
    mAppId = stream.ReadInt32L();
hgs
parents:
diff changeset
   224
    InternalizeL(mActivityId, stream);
116
hgs
parents: 107
diff changeset
   225
    InternalizeL(mCustomActivityName, stream);
119
hgs
parents: 116
diff changeset
   226
    TPckgBuf<TTime> timestampBuf;
hgs
parents: 116
diff changeset
   227
    stream.ReadL(timestampBuf);
hgs
parents: 116
diff changeset
   228
    mTimestamp = timestampBuf();
99
hgs
parents:
diff changeset
   229
    InternalizeDataOnlyL(stream);
hgs
parents:
diff changeset
   230
}
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   233
/**
hgs
parents:
diff changeset
   234
 * Serialize entry content into output stream.
hgs
parents:
diff changeset
   235
 * @param stream - output stream
hgs
parents:
diff changeset
   236
 */
hgs
parents:
diff changeset
   237
void CAfEntry::ExternalizeDataOnlyL(RWriteStream &stream) const
hgs
parents:
diff changeset
   238
{
hgs
parents:
diff changeset
   239
    ExternalizeL(stream, mImgSrc);
hgs
parents:
diff changeset
   240
    ExternalizeL(stream, mPrivateData);
hgs
parents:
diff changeset
   241
    ExternalizeL(stream, mPublicData);
hgs
parents:
diff changeset
   242
}
hgs
parents:
diff changeset
   243
hgs
parents:
diff changeset
   244
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   245
/**
hgs
parents:
diff changeset
   246
 * Deserialize entry content from input stream
hgs
parents:
diff changeset
   247
 * @param stream - input stream
hgs
parents:
diff changeset
   248
 */
hgs
parents:
diff changeset
   249
void CAfEntry::InternalizeDataOnlyL(RReadStream &stream)
hgs
parents:
diff changeset
   250
{
hgs
parents:
diff changeset
   251
    
hgs
parents:
diff changeset
   252
    InternalizeL(mImgSrc, stream);
hgs
parents:
diff changeset
   253
    InternalizeL(mPrivateData, stream);
hgs
parents:
diff changeset
   254
    InternalizeL(mPublicData, stream);
hgs
parents:
diff changeset
   255
    
hgs
parents:
diff changeset
   256
}
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   259
/**
hgs
parents:
diff changeset
   260
 * Provide access to activity flags
hgs
parents:
diff changeset
   261
 * @return activity flags 
hgs
parents:
diff changeset
   262
 */
hgs
parents:
diff changeset
   263
TInt CAfEntry::Flags() const
hgs
parents:
diff changeset
   264
{
hgs
parents:
diff changeset
   265
    return mFlags;
hgs
parents:
diff changeset
   266
}
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   269
/**
hgs
parents:
diff changeset
   270
 * Provide access to activity identifier.
hgs
parents:
diff changeset
   271
 * @return activity identifier
hgs
parents:
diff changeset
   272
 */
hgs
parents:
diff changeset
   273
TInt CAfEntry::ApplicationId() const
hgs
parents:
diff changeset
   274
{
hgs
parents:
diff changeset
   275
    return mAppId;
hgs
parents:
diff changeset
   276
}
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   279
/**
hgs
parents:
diff changeset
   280
 * Provide access to activity identifier.
hgs
parents:
diff changeset
   281
 * @return activity identifier
hgs
parents:
diff changeset
   282
 */
hgs
parents:
diff changeset
   283
const TDesC& CAfEntry::ActivityId() const
hgs
parents:
diff changeset
   284
{
hgs
parents:
diff changeset
   285
    return mActivityId;
hgs
parents:
diff changeset
   286
}
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   289
/**
116
hgs
parents: 107
diff changeset
   290
 * Provide access to activity custom name.
hgs
parents: 107
diff changeset
   291
 * @return activity custom name
hgs
parents: 107
diff changeset
   292
 */
hgs
parents: 107
diff changeset
   293
const TDesC& CAfEntry::CustomActivityName() const
hgs
parents: 107
diff changeset
   294
{
hgs
parents: 107
diff changeset
   295
    return mCustomActivityName;
hgs
parents: 107
diff changeset
   296
}
hgs
parents: 107
diff changeset
   297
hgs
parents: 107
diff changeset
   298
// -----------------------------------------------------------------------------
hgs
parents: 107
diff changeset
   299
/**
99
hgs
parents:
diff changeset
   300
 * Provide access to activity data.
hgs
parents:
diff changeset
   301
 * @param rights - type of requested data
hgs
parents:
diff changeset
   302
 * @return activity data
hgs
parents:
diff changeset
   303
 */
hgs
parents:
diff changeset
   304
const TDesC8& CAfEntry::Data(CAfEntry::AccessRights rights) const
hgs
parents:
diff changeset
   305
{
hgs
parents:
diff changeset
   306
    return Private == rights ? mPrivateData : mPublicData;
hgs
parents:
diff changeset
   307
}
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   310
/**
hgs
parents:
diff changeset
   311
 * Provide access to activity data.
hgs
parents:
diff changeset
   312
 * @param rights - type of requested data
hgs
parents:
diff changeset
   313
 * @return activity data
hgs
parents:
diff changeset
   314
 */
hgs
parents:
diff changeset
   315
void CAfEntry::SetDataL(const TDesC8& src, CAfEntry::AccessRights rights)
hgs
parents:
diff changeset
   316
{
hgs
parents:
diff changeset
   317
    CopyL(Private == rights ? mPrivateData : mPublicData, src);
hgs
parents:
diff changeset
   318
}
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   321
/**
119
hgs
parents: 116
diff changeset
   322
 * Provide access to activity timestamp
hgs
parents: 116
diff changeset
   323
 * @return activity timestamp 
hgs
parents: 116
diff changeset
   324
 */
hgs
parents: 116
diff changeset
   325
TTime CAfEntry::Timestamp() const
hgs
parents: 116
diff changeset
   326
{
hgs
parents: 116
diff changeset
   327
    return mTimestamp;
hgs
parents: 116
diff changeset
   328
}
hgs
parents: 116
diff changeset
   329
hgs
parents: 116
diff changeset
   330
// -----------------------------------------------------------------------------
hgs
parents: 116
diff changeset
   331
/**
99
hgs
parents:
diff changeset
   332
 * Provide access to activity thumbail path
hgs
parents:
diff changeset
   333
 * @return path to activity thumbnail 
hgs
parents:
diff changeset
   334
 */
hgs
parents:
diff changeset
   335
const TDesC& CAfEntry::ImageSrc() const
hgs
parents:
diff changeset
   336
{
hgs
parents:
diff changeset
   337
    return mImgSrc;
hgs
parents:
diff changeset
   338
}
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   341
/**
hgs
parents:
diff changeset
   342
 * Set new value of image source
hgs
parents:
diff changeset
   343
 */
hgs
parents:
diff changeset
   344
void CAfEntry::SetImageSrcL(const TDesC& src)
hgs
parents:
diff changeset
   345
{
hgs
parents:
diff changeset
   346
    CopyL(mImgSrc, src);
hgs
parents:
diff changeset
   347
}
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   350
/**
hgs
parents:
diff changeset
   351
 * Reallocate blob buffer to requested size
hgs
parents:
diff changeset
   352
 * @param dst - destination buffer
hgs
parents:
diff changeset
   353
 * @param length - requested length
hgs
parents:
diff changeset
   354
 */
hgs
parents:
diff changeset
   355
void CAfEntry::ReallocL(RBuf8 &dst,TInt length)
hgs
parents:
diff changeset
   356
{
hgs
parents:
diff changeset
   357
    if (0 < length) {
hgs
parents:
diff changeset
   358
        if (dst.MaxLength() < length) {
hgs
parents:
diff changeset
   359
            dst.ReAllocL(length);
hgs
parents:
diff changeset
   360
        }
hgs
parents:
diff changeset
   361
    } else {
hgs
parents:
diff changeset
   362
        dst.Close();
hgs
parents:
diff changeset
   363
    }
hgs
parents:
diff changeset
   364
}
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   367
/**
hgs
parents:
diff changeset
   368
 * Reallocate text buffer to requested size
hgs
parents:
diff changeset
   369
 * @param dst - destination buffer
hgs
parents:
diff changeset
   370
 * @param length - requested length
hgs
parents:
diff changeset
   371
 */
hgs
parents:
diff changeset
   372
void CAfEntry::ReallocL(RBuf &dst,TInt length)
hgs
parents:
diff changeset
   373
{
hgs
parents:
diff changeset
   374
    if (0 < length) {
hgs
parents:
diff changeset
   375
        if (dst.MaxLength() < length) {
hgs
parents:
diff changeset
   376
            dst.ReAllocL(length);
hgs
parents:
diff changeset
   377
        }
hgs
parents:
diff changeset
   378
    } else {
hgs
parents:
diff changeset
   379
        dst.Close();
hgs
parents:
diff changeset
   380
    }
hgs
parents:
diff changeset
   381
}
hgs
parents:
diff changeset
   382
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   383
/**
hgs
parents:
diff changeset
   384
 * Copy blob content from input stream
hgs
parents:
diff changeset
   385
 * @param dst - destination buffer
hgs
parents:
diff changeset
   386
 * @param src - source buffer
hgs
parents:
diff changeset
   387
 */
hgs
parents:
diff changeset
   388
void CAfEntry::CopyL(RBuf8 &dst,const TDesC8 &src)
hgs
parents:
diff changeset
   389
{
hgs
parents:
diff changeset
   390
    ReallocL(dst, src.Length());
hgs
parents:
diff changeset
   391
    if(0 < src.Length()) {
hgs
parents:
diff changeset
   392
        dst.Copy(src);
hgs
parents:
diff changeset
   393
    }
hgs
parents:
diff changeset
   394
}
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   397
/**
hgs
parents:
diff changeset
   398
 * Copy text content from input buffer
hgs
parents:
diff changeset
   399
 * @param dst - destination buffer
hgs
parents:
diff changeset
   400
 * @param src - source buffer
hgs
parents:
diff changeset
   401
 */
hgs
parents:
diff changeset
   402
void CAfEntry::CopyL(RBuf &dst,const TDesC &src)
hgs
parents:
diff changeset
   403
{
hgs
parents:
diff changeset
   404
    ReallocL(dst, src.Length());
hgs
parents:
diff changeset
   405
    if(0 < src.Length()) {
hgs
parents:
diff changeset
   406
        dst.Copy(src);
hgs
parents:
diff changeset
   407
    }
hgs
parents:
diff changeset
   408
}
hgs
parents:
diff changeset
   409
hgs
parents:
diff changeset
   410
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   411
/**
hgs
parents:
diff changeset
   412
 * Deserialize blob content from input stream
hgs
parents:
diff changeset
   413
 * @param dst - destination buffer
hgs
parents:
diff changeset
   414
 * @param src - input stream
hgs
parents:
diff changeset
   415
 */
hgs
parents:
diff changeset
   416
void CAfEntry::InternalizeL(RBuf8 &dst, RReadStream &src)
hgs
parents:
diff changeset
   417
{
hgs
parents:
diff changeset
   418
    const TInt length(src.ReadInt32L());
hgs
parents:
diff changeset
   419
    ReallocL(dst, length);
hgs
parents:
diff changeset
   420
    if (0 < length) {
hgs
parents:
diff changeset
   421
        src.ReadL(dst, length);
hgs
parents:
diff changeset
   422
    }
hgs
parents:
diff changeset
   423
}
hgs
parents:
diff changeset
   424
hgs
parents:
diff changeset
   425
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   426
/**
hgs
parents:
diff changeset
   427
 * Deserialize text content from input stream
hgs
parents:
diff changeset
   428
 * @param dst - destination buffer
hgs
parents:
diff changeset
   429
 * @param src - input stream
hgs
parents:
diff changeset
   430
 */
hgs
parents:
diff changeset
   431
void CAfEntry::InternalizeL(RBuf &dst, RReadStream &src)
hgs
parents:
diff changeset
   432
{
hgs
parents:
diff changeset
   433
    const TInt length(src.ReadInt32L());
hgs
parents:
diff changeset
   434
    ReallocL(dst, length);
hgs
parents:
diff changeset
   435
    if (0 < length) {
hgs
parents:
diff changeset
   436
        src.ReadL(dst, length);
hgs
parents:
diff changeset
   437
    }
hgs
parents:
diff changeset
   438
}
hgs
parents:
diff changeset
   439
hgs
parents:
diff changeset
   440
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   441
/**
hgs
parents:
diff changeset
   442
 * Serialize blob content into output stream
hgs
parents:
diff changeset
   443
 * @param dst - destination stream
hgs
parents:
diff changeset
   444
 * @param src - input buffer
hgs
parents:
diff changeset
   445
 */
hgs
parents:
diff changeset
   446
void CAfEntry::ExternalizeL(RWriteStream &dst,const TDesC8 & src)
hgs
parents:
diff changeset
   447
{
hgs
parents:
diff changeset
   448
    dst.WriteInt32L(src.Length());
hgs
parents:
diff changeset
   449
    if (src.Length()) {
hgs
parents:
diff changeset
   450
        dst.WriteL(src, src.Length());
hgs
parents:
diff changeset
   451
    }
hgs
parents:
diff changeset
   452
}
hgs
parents:
diff changeset
   453
hgs
parents:
diff changeset
   454
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   455
/**
hgs
parents:
diff changeset
   456
 * Serialize text content into output stream
hgs
parents:
diff changeset
   457
 * @param dst - destination stream
hgs
parents:
diff changeset
   458
 * @param src - input buffer
hgs
parents:
diff changeset
   459
 */
hgs
parents:
diff changeset
   460
void CAfEntry::ExternalizeL(RWriteStream &dst,const TDesC& src)
hgs
parents:
diff changeset
   461
{
hgs
parents:
diff changeset
   462
    dst.WriteInt32L(src.Length());
hgs
parents:
diff changeset
   463
    if (src.Length()) {
hgs
parents:
diff changeset
   464
        dst.WriteL(src, src.Length());
hgs
parents:
diff changeset
   465
    }
hgs
parents:
diff changeset
   466
}
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   469
RPointerArray<CAfEntry>& operator <<(RPointerArray<CAfEntry>& dst, const TDesC8 &src)
hgs
parents:
diff changeset
   470
{
hgs
parents:
diff changeset
   471
    dst.ResetAndDestroy();
hgs
parents:
diff changeset
   472
    RDesReadStream srcStream(src);
hgs
parents:
diff changeset
   473
    CleanupClosePushL(srcStream);
hgs
parents:
diff changeset
   474
    int numOfItems(srcStream.ReadInt32L());
hgs
parents:
diff changeset
   475
    for (int i(0); i < numOfItems; ++i) {
hgs
parents:
diff changeset
   476
        CAfEntry *entry = CAfEntry::NewLC();
hgs
parents:
diff changeset
   477
        srcStream >> (*entry);
hgs
parents:
diff changeset
   478
        dst.AppendL(entry);
hgs
parents:
diff changeset
   479
        CleanupStack::Pop(entry);
hgs
parents:
diff changeset
   480
    }
hgs
parents:
diff changeset
   481
    CleanupStack::PopAndDestroy(&srcStream);
hgs
parents:
diff changeset
   482
    return dst;
hgs
parents:
diff changeset
   483
}
hgs
parents:
diff changeset
   484
hgs
parents:
diff changeset
   485
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   486
RBuf8& operator <<(RBuf8 &dst, const RPointerArray<CAfEntry>& src)
hgs
parents:
diff changeset
   487
{
hgs
parents:
diff changeset
   488
    int iter(0), 
hgs
parents:
diff changeset
   489
        requiredSize(sizeof(int));
hgs
parents:
diff changeset
   490
    for(iter =0; iter< src.Count(); ++iter) {
hgs
parents:
diff changeset
   491
        requiredSize += src[iter]->Size();
hgs
parents:
diff changeset
   492
    }
hgs
parents:
diff changeset
   493
    CAfEntry::ReallocL(dst, requiredSize);
hgs
parents:
diff changeset
   494
    RDesWriteStream dstStream(dst);
hgs
parents:
diff changeset
   495
    CleanupClosePushL(dstStream);
hgs
parents:
diff changeset
   496
    dstStream.WriteInt32L(src.Count());
hgs
parents:
diff changeset
   497
    for (iter =0; iter < src.Count(); ++iter) {
hgs
parents:
diff changeset
   498
        dstStream << *(src[iter]);
hgs
parents:
diff changeset
   499
    }
hgs
parents:
diff changeset
   500
    CleanupStack::PopAndDestroy(&dstStream);
hgs
parents:
diff changeset
   501
    return dst;
hgs
parents:
diff changeset
   502
}