omadmadapters/nsmldmalwaysonadapter/inc/nsmldmalwaysonadapter.h
author hgs
Tue, 13 Jul 2010 03:48:30 +0530
changeset 45 0f9fc722d255
parent 44 deviceupdatesui/omadmadapters/nsmldmalwaysonadapter/inc/nsmldmalwaysonadapter.h@137912d1a556
permissions -rw-r--r--
201021_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 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:  DM adapter for handling always-on settings.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef NSMLDMALWAYSONADAPTER_H
hgs
parents:
diff changeset
    20
#define NSMLDMALWAYSONADAPTER_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <smldmadapter.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "nsmldmalwaysonsettingstore.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
class CSmlDmAOCommandElement;
hgs
parents:
diff changeset
    27
class CNSmlDmAOSettingStore;
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// The DDF version must be changed if any changes in DDF structure 
hgs
parents:
diff changeset
    30
// ( built in DDFStructureL() function )
hgs
parents:
diff changeset
    31
_LIT8( KNSmlDmAOAdapterDDFVersion, "1.0" ); 
hgs
parents:
diff changeset
    32
_LIT8( KNSmlDmAOAdapterTextPlain, "text/plain" );
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// Names of the nodes
hgs
parents:
diff changeset
    35
// When updating KNSmlDmAOAdapterAOURI also update 
hgs
parents:
diff changeset
    36
// KNSmlDmAOAdapterURIMaxLength! */
hgs
parents:
diff changeset
    37
_LIT8(KNSmlDmAOAdapterAOURI, "./VENDORCONFIG");
hgs
parents:
diff changeset
    38
_LIT8(KNSmlDmAOAdapterAO, "VENDORCONFIG");
hgs
parents:
diff changeset
    39
_LIT8(KNSmlDmAOAdapterName, "NAME");
hgs
parents:
diff changeset
    40
_LIT8(KNSmlDmAOAdapterAwonPdpc, "AWON-PDPC");
hgs
parents:
diff changeset
    41
_LIT8(KNSmlDmAOAdapterTRetry, "T-RETRY");
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// Descriptions of the nodes
hgs
parents:
diff changeset
    45
_LIT8( KNSmlDmAOAdapterAODescription, 
hgs
parents:
diff changeset
    46
       "Always-on provides management of connections");
hgs
parents:
diff changeset
    47
_LIT8( KNSmlDmAOAdapterNameDescription, 
hgs
parents:
diff changeset
    48
       "Name of the VENDORCONFIG");
hgs
parents:
diff changeset
    49
_LIT8( KNSmlDmAOAdapterAwonPdpcDescription, 
hgs
parents:
diff changeset
    50
       "Always-on setting in home and visited network");
hgs
parents:
diff changeset
    51
_LIT8( KNSmlDmAOAdapterTRetryDescription, 
hgs
parents:
diff changeset
    52
       "T-Retry timer interval");
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// Leaf nodes of VENDORCONFIG node
hgs
parents:
diff changeset
    55
_LIT8( KNSmlDmAOAllLeafNodes, 
hgs
parents:
diff changeset
    56
       "NAME/AWON-PDPC/T-RETRY");
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
// URI segment separator
hgs
parents:
diff changeset
    59
// When updating this literal also update 
hgs
parents:
diff changeset
    60
// KNSmlDmAOAdapterAPURIMaxLength and KNSmlDmAOAdapterURIMaxLength!
hgs
parents:
diff changeset
    61
_LIT8( KNSmlDmAOSeparator, "/" );
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
// URI segment separator
hgs
parents:
diff changeset
    64
// When updating KNSmlDmAOAdapterAOURI also update 
hgs
parents:
diff changeset
    65
// KNSmlDmAOAdapterAPURIMaxLength and KNSmlDmAOAdapterURIMaxLength!
hgs
parents:
diff changeset
    66
_LIT8( KNSmlDmAOUriListSeparator, "," );
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
// Prefix in URIs (removed for LUID mapping)
hgs
parents:
diff changeset
    69
_LIT8( KNSmlDmAOAdapterURIPrefix, "./" );
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
// Name prefix for unnamed VENDORCONFIG nodes
hgs
parents:
diff changeset
    72
_LIT8( KNSmlDmAONamePrefix, "VENDORCONFIG" );
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
const TInt KNSmlDmAOGranularity = 4;
hgs
parents:
diff changeset
    75
const TInt KNSmlDmAOInvalidRef = -1;
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
// Maximum length of VENDORCONFIG URI including a separator 
hgs
parents:
diff changeset
    78
// character in URI List. Node is not calculated here.  
hgs
parents:
diff changeset
    79
// KNSmlDmAOAdapterAOURI + KNSmlDmAOSeparator + KNSmlDmAOUriListSeparator
hgs
parents:
diff changeset
    80
const TInt KNSmlDmAOAdapterURIMaxLength =  16;
hgs
parents:
diff changeset
    81
        
hgs
parents:
diff changeset
    82
/**
hgs
parents:
diff changeset
    83
 *  Always-on device management adapter
hgs
parents:
diff changeset
    84
 *
hgs
parents:
diff changeset
    85
 *  Always-on device management adapter manages settings
hgs
parents:
diff changeset
    86
 *  related to VENDORCONFIG.
hgs
parents:
diff changeset
    87
 *
hgs
parents:
diff changeset
    88
 *  @lib nsmldmalwaysonadapter
hgs
parents:
diff changeset
    89
 *  @since S60 v3.2
hgs
parents:
diff changeset
    90
 */
hgs
parents:
diff changeset
    91
class CNSmlDmAOAdapter : public CSmlDmAdapter
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
    
hgs
parents:
diff changeset
    94
public:
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
/** Possible command types */
hgs
parents:
diff changeset
    97
enum TCommandType
hgs
parents:
diff changeset
    98
    {
hgs
parents:
diff changeset
    99
    EAddCmd,
hgs
parents:
diff changeset
   100
    EGetCmd,
hgs
parents:
diff changeset
   101
    EGetSizeCmd,
hgs
parents:
diff changeset
   102
    EDeleteCmd
hgs
parents:
diff changeset
   103
    };
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    static CNSmlDmAOAdapter* NewL( MSmlDmCallback* aDmCallback );
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
    virtual ~CNSmlDmAOAdapter();
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
// from base class CSmlDmAdapter
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    /**
hgs
parents:
diff changeset
   114
     *  The function returns current version of the DDF. 
hgs
parents:
diff changeset
   115
     *
hgs
parents:
diff changeset
   116
     *  @since S60 v3.2
hgs
parents:
diff changeset
   117
     *  @param aVersion DDF version of the
hgs
parents:
diff changeset
   118
     *  adapter. (filled by the adapter) 
hgs
parents:
diff changeset
   119
     */
hgs
parents:
diff changeset
   120
    void DDFVersionL( CBufBase& aDDFVersion );
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    /**
hgs
parents:
diff changeset
   123
     *  The function for filling the DDF structure of the adapter
hgs
parents:
diff changeset
   124
     *
hgs
parents:
diff changeset
   125
     *  @since S60 v3.2
hgs
parents:
diff changeset
   126
     *  @param aDDFObject   Reference to root object.
hgs
parents:
diff changeset
   127
    */
hgs
parents:
diff changeset
   128
    void DDFStructureL( MSmlDmDDFObject& aDDF );
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    /**
hgs
parents:
diff changeset
   131
     * The function creates new leaf objects, or replaces data in existing 
hgs
parents:
diff changeset
   132
     * leaf objects. The information about the success of the command is
hgs
parents:
diff changeset
   133
     * returned by calling SetStatusL function of MSmlDmCallback callback
hgs
parents:
diff changeset
   134
     * interface. 
hgs
parents:
diff changeset
   135
     *     
hgs
parents:
diff changeset
   136
     * @since S60 v3.2
hgs
parents:
diff changeset
   137
     * @param aURI         URI of the object
hgs
parents:
diff changeset
   138
     * @param aLUID        LUID of the object 
hgs
parents:
diff changeset
   139
     * @param aObject      Data of the object.
hgs
parents:
diff changeset
   140
     * @param aType        MIME type of the object
hgs
parents:
diff changeset
   141
     * @param aStatusRef   Reference to correct command, i.e. this reference
hgs
parents:
diff changeset
   142
     *                     must be used when calling the SetStatusL of this 
hgs
parents:
diff changeset
   143
     *                     command
hgs
parents:
diff changeset
   144
    */
hgs
parents:
diff changeset
   145
    void UpdateLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   146
							const TDesC8& aObject, const TDesC8& aType,
hgs
parents:
diff changeset
   147
							TInt aStatusRef );
hgs
parents:
diff changeset
   148
    /**
hgs
parents:
diff changeset
   149
     * The function deletes an object and its child objects. 
hgs
parents:
diff changeset
   150
     *
hgs
parents:
diff changeset
   151
     * @since S60 v3.2
hgs
parents:
diff changeset
   152
     * @param aURI         URI of the object
hgs
parents:
diff changeset
   153
     * @param aLUID        LUID of the object (if the adapter have earlier 
hgs
parents:
diff changeset
   154
     *                     returned LUID to the DM Module).
hgs
parents:
diff changeset
   155
     * @param aStatusRef   Reference to correct command, i.e. this reference 
hgs
parents:
diff changeset
   156
     *                     must be used when calling the SetStatusL of this 
hgs
parents:
diff changeset
   157
     *                     command.
hgs
parents:
diff changeset
   158
    */
hgs
parents:
diff changeset
   159
    void DeleteObjectL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   160
						TInt aStatusRef );
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
    /**
hgs
parents:
diff changeset
   163
     * The function fetches data of a leaf object. The SetStatusL is used
hgs
parents:
diff changeset
   164
     * as described in UpdateLeafObjectL(). The data is returned by using the
hgs
parents:
diff changeset
   165
     * SetResultsL function of MSmlCallback callback interface.
hgs
parents:
diff changeset
   166
	 *
hgs
parents:
diff changeset
   167
     * @since S60 v3.2
hgs
parents:
diff changeset
   168
     * @param aURI             URI of the object
hgs
parents:
diff changeset
   169
     * @param aLUID            LUID of the object (if the adapter have 
hgs
parents:
diff changeset
   170
     *                         earlier returned LUID to the DM Module).   
hgs
parents:
diff changeset
   171
     * @param aType            MIME type of the object
hgs
parents:
diff changeset
   172
     * @param aResultsRef      Reference to correct results, i.e. this 
hgs
parents:
diff changeset
   173
     *                         reference must be used when returning the 
hgs
parents:
diff changeset
   174
     *                         result by calling the SetResultsL.
hgs
parents:
diff changeset
   175
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   176
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   177
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   178
    */
hgs
parents:
diff changeset
   179
    void FetchLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   180
						   const TDesC8& aType, TInt aResultsRef,
hgs
parents:
diff changeset
   181
						   TInt aStatusRef );
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    /**
hgs
parents:
diff changeset
   184
     * The function fetches the size of the data of a leaf object. The size 
hgs
parents:
diff changeset
   185
     * is in bytes, and must reflect the number of bytes that will be 
hgs
parents:
diff changeset
   186
     * transferred when the framework calls FetchLeafObjectL. 
hgs
parents:
diff changeset
   187
	 *
hgs
parents:
diff changeset
   188
     * @since S60 v3.2
hgs
parents:
diff changeset
   189
     * @param aURI             URI of the object
hgs
parents:
diff changeset
   190
     * @param aLUID            LUID of the object (if the adapter have 
hgs
parents:
diff changeset
   191
     *                         earlier returned LUID to the DM Module).   
hgs
parents:
diff changeset
   192
     * @param aType            MIME type of the object
hgs
parents:
diff changeset
   193
     * @param aResultsRef      Reference to correct results, i.e. this 
hgs
parents:
diff changeset
   194
     *                         reference must be used when returning the 
hgs
parents:
diff changeset
   195
     *                         result by calling the SetResultsL.
hgs
parents:
diff changeset
   196
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   197
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   198
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   199
    */
hgs
parents:
diff changeset
   200
    void FetchLeafObjectSizeL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   201
							   const TDesC8& aType, TInt aResultsRef,
hgs
parents:
diff changeset
   202
							   TInt aStatusRef );
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
    /**
hgs
parents:
diff changeset
   205
     * The function fetches URI list. An adapter returns the list of URI 
hgs
parents:
diff changeset
   206
     * segments under the given URI be separated by slash ("/"). The URI 
hgs
parents:
diff changeset
   207
     * segment names for new objects must be given by the adapter.
hgs
parents:
diff changeset
   208
     * The list is returned by calling the SetResultsL function of 
hgs
parents:
diff changeset
   209
     * MSmlCallback callback interface. 
hgs
parents:
diff changeset
   210
	 *
hgs
parents:
diff changeset
   211
     * @since S60 v3.2
hgs
parents:
diff changeset
   212
     * @param aParentURI               URI of the parent object
hgs
parents:
diff changeset
   213
     * @param aParentLUID              LUID of the parent object (if the
hgs
parents:
diff changeset
   214
     *                                 adapter have earlier returned LUID to
hgs
parents:
diff changeset
   215
     *                                 the DM Module).   
hgs
parents:
diff changeset
   216
     * @param aPreviousURISegmentList  URI list with mapping LUID 
hgs
parents:
diff changeset
   217
     *                                 information, which is known by DM
hgs
parents:
diff changeset
   218
     *                                 engine.  
hgs
parents:
diff changeset
   219
     * @param aResultsRef              Reference to correct results, i.e. 
hgs
parents:
diff changeset
   220
     *                                 this reference must be used when 
hgs
parents:
diff changeset
   221
     *                                 returning the result by calling the 
hgs
parents:
diff changeset
   222
     *                                 SetResultsL.
hgs
parents:
diff changeset
   223
     * @param aStatusRef               Reference to correct command, i.e. 
hgs
parents:
diff changeset
   224
     *                                 this reference must be used when 
hgs
parents:
diff changeset
   225
     *                                 calling the SetStatusL of this 
hgs
parents:
diff changeset
   226
     *                                 command.
hgs
parents:
diff changeset
   227
    */
hgs
parents:
diff changeset
   228
    void ChildURIListL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   229
					    const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
hgs
parents:
diff changeset
   230
					    TInt aResultsRef, TInt aStatusRef );
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
    /**
hgs
parents:
diff changeset
   233
     * The function adds node object. 
hgs
parents:
diff changeset
   234
     *
hgs
parents:
diff changeset
   235
     * @since S60 v3.2
hgs
parents:
diff changeset
   236
     * @param aURI             URI of the object
hgs
parents:
diff changeset
   237
     * @param aParentLUID      LUID of the parent object (if the adapter have
hgs
parents:
diff changeset
   238
     *                         earlier returned LUID to the DM Module).   
hgs
parents:
diff changeset
   239
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   240
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   241
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   242
    */
hgs
parents:
diff changeset
   243
    void AddNodeObjectL( const TDesC8& aURI, const TDesC8& aParentLUID,
hgs
parents:
diff changeset
   244
						 TInt aStatusRef );
hgs
parents:
diff changeset
   245
    /**
hgs
parents:
diff changeset
   246
     * The adapter does not support streaming and no implementation is 
hgs
parents:
diff changeset
   247
     * provided for this function.
hgs
parents:
diff changeset
   248
     *
hgs
parents:
diff changeset
   249
     * @since S60 v3.2
hgs
parents:
diff changeset
   250
     * @param aURI         URI of the object
hgs
parents:
diff changeset
   251
     * @param aLUID        LUID of the object
hgs
parents:
diff changeset
   252
     * @param aStream      Data of the object. 
hgs
parents:
diff changeset
   253
     * @param aType        MIME type of the object
hgs
parents:
diff changeset
   254
     * @param aStatusRef   Reference to correct command, i.e. this reference
hgs
parents:
diff changeset
   255
     *                     must be used when calling the SetStatusL of this
hgs
parents:
diff changeset
   256
     *                     command.
hgs
parents:
diff changeset
   257
    */
hgs
parents:
diff changeset
   258
    void UpdateLeafObjectL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   259
							RWriteStream*& aStream, const TDesC8& aType,
hgs
parents:
diff changeset
   260
		 					TInt aStatusRef );
hgs
parents:
diff changeset
   261
    /**
hgs
parents:
diff changeset
   262
     * The adapter does not support execute command and does not 
hgs
parents:
diff changeset
   263
     * provide implementation for this function. 
hgs
parents:
diff changeset
   264
     *
hgs
parents:
diff changeset
   265
     *  @since S60 v3.2
hgs
parents:
diff changeset
   266
     * @param aURI             URI of the command
hgs
parents:
diff changeset
   267
     * @param aLUID            LUID of the object
hgs
parents:
diff changeset
   268
     * @param aArgument        Argument for the command
hgs
parents:
diff changeset
   269
     * @param aType            MIME type of the object 
hgs
parents:
diff changeset
   270
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   271
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   272
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   273
    */
hgs
parents:
diff changeset
   274
    void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID, 
hgs
parents:
diff changeset
   275
                          const TDesC8& aArgument, const TDesC8& aType, 
hgs
parents:
diff changeset
   276
                          TInt aStatusRef );
hgs
parents:
diff changeset
   277
    /**
hgs
parents:
diff changeset
   278
     * The adapter does not support execute command and does not 
hgs
parents:
diff changeset
   279
     * provide implementation for this function. 
hgs
parents:
diff changeset
   280
     *
hgs
parents:
diff changeset
   281
     * @since S60 v3.2
hgs
parents:
diff changeset
   282
     * @param aURI         URI of the command
hgs
parents:
diff changeset
   283
     * @param aLUID            LUID of the object 
hgs
parents:
diff changeset
   284
     * @param aStream      Argument for the command. 
hgs
parents:
diff changeset
   285
     * @param aType            MIME type of the object 
hgs
parents:
diff changeset
   286
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   287
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   288
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   289
    */
hgs
parents:
diff changeset
   290
    void ExecuteCommandL( const TDesC8& aURI, const TDesC8& aLUID,
hgs
parents:
diff changeset
   291
						  RWriteStream*& aStream, const TDesC8& aType,
hgs
parents:
diff changeset
   292
						  TInt aStatusRef );
hgs
parents:
diff changeset
   293
    /**
hgs
parents:
diff changeset
   294
     * The adapter does not support copy command and does not 
hgs
parents:
diff changeset
   295
     * provide implementation for this function. 
hgs
parents:
diff changeset
   296
     *
hgs
parents:
diff changeset
   297
     * @since S60 v3.2
hgs
parents:
diff changeset
   298
     * @param aTargetURI       Target URI for the command
hgs
parents:
diff changeset
   299
     * @param aSourceLUID      LUID of the target object 
hgs
parents:
diff changeset
   300
     * @param aSourceURI       Source URI for the command
hgs
parents:
diff changeset
   301
     * @param aSourceLUID      LUID of the source object 
hgs
parents:
diff changeset
   302
     * @param aType            MIME type of the objects
hgs
parents:
diff changeset
   303
     * @param aStatusRef       Reference to correct command, i.e. this 
hgs
parents:
diff changeset
   304
     *                         reference must be used when calling the 
hgs
parents:
diff changeset
   305
     *                         SetStatusL of this command.
hgs
parents:
diff changeset
   306
    */
hgs
parents:
diff changeset
   307
    void CopyCommandL( const TDesC8& aTargetURI, const TDesC8& aTargetLUID, 
hgs
parents:
diff changeset
   308
                       const TDesC8& aSourceURI, const TDesC8& aSourceLUID, 
hgs
parents:
diff changeset
   309
                       const TDesC8& aType, TInt aStatusRef );
hgs
parents:
diff changeset
   310
    /**
hgs
parents:
diff changeset
   311
     * Not supported
hgs
parents:
diff changeset
   312
     *  @since S60 v3.2
hgs
parents:
diff changeset
   313
    */
hgs
parents:
diff changeset
   314
    void StartAtomicL();
hgs
parents:
diff changeset
   315
    /**
hgs
parents:
diff changeset
   316
     * Not Supported     
hgs
parents:
diff changeset
   317
     *  @since S60 v3.2
hgs
parents:
diff changeset
   318
     *
hgs
parents:
diff changeset
   319
    */
hgs
parents:
diff changeset
   320
    void CommitAtomicL();
hgs
parents:
diff changeset
   321
    /**
hgs
parents:
diff changeset
   322
 	 * Not supported.
hgs
parents:
diff changeset
   323
     *  @since S60 v3.2
hgs
parents:
diff changeset
   324
     */
hgs
parents:
diff changeset
   325
    void RollbackAtomicL();
hgs
parents:
diff changeset
   326
    /**
hgs
parents:
diff changeset
   327
     * Returns EFalse as the adapter does not support streaming
hgs
parents:
diff changeset
   328
     *
hgs
parents:
diff changeset
   329
     * @since S60 v3.2
hgs
parents:
diff changeset
   330
     * @param aItemSize size limit for stream usage
hgs
parents:
diff changeset
   331
     * @return TBool EFalse as streaming is not supported
hgs
parents:
diff changeset
   332
    */
hgs
parents:
diff changeset
   333
    TBool StreamingSupport( TInt& aItemSize );
hgs
parents:
diff changeset
   334
    /**
hgs
parents:
diff changeset
   335
     * Not supported
hgs
parents:
diff changeset
   336
     *
hgs
parents:
diff changeset
   337
     *  @since S60 v3.2
hgs
parents:
diff changeset
   338
    */  
hgs
parents:
diff changeset
   339
    void StreamCommittedL();
hgs
parents:
diff changeset
   340
    /**
hgs
parents:
diff changeset
   341
     * The function tells the adapter that all the commands of the message 
hgs
parents:
diff changeset
   342
     * that can be passed to the adapter have now been passed.  This 
hgs
parents:
diff changeset
   343
     * indciates that the adapter must supply status codes and results to 
hgs
parents:
diff changeset
   344
     * any buffered commands. This must be done at latest by the time this 
hgs
parents:
diff changeset
   345
     * function returns. This function is used at the end of SyncML messages, 
hgs
parents:
diff changeset
   346
     * and during processing of Atomic.  
hgs
parents:
diff changeset
   347
     *
hgs
parents:
diff changeset
   348
     *  @since S60 v3.2
hgs
parents:
diff changeset
   349
    */
hgs
parents:
diff changeset
   350
    void CompleteOutstandingCmdsL();
hgs
parents:
diff changeset
   351
        
hgs
parents:
diff changeset
   352
    /**
hgs
parents:
diff changeset
   353
     * Converts integer to 8bit descriptor
hgs
parents:
diff changeset
   354
     *
hgs
parents:
diff changeset
   355
     *  @since S60 v3.2
hgs
parents:
diff changeset
   356
     * @param    aLuid The integer to be converted
hgs
parents:
diff changeset
   357
     * @return    The Integer as a descriptor
hgs
parents:
diff changeset
   358
     */
hgs
parents:
diff changeset
   359
    HBufC8* IntToDes8L( TInt aLuid) const;
hgs
parents:
diff changeset
   360
    
hgs
parents:
diff changeset
   361
    /**
hgs
parents:
diff changeset
   362
     * Converts 8bit descriptor to integer
hgs
parents:
diff changeset
   363
     *
hgs
parents:
diff changeset
   364
     *  @since S60 v3.2
hgs
parents:
diff changeset
   365
     * @param    aLuid The descriptor to be converted
hgs
parents:
diff changeset
   366
     * @return    Integer value of the descriptor
hgs
parents:
diff changeset
   367
     */
hgs
parents:
diff changeset
   368
    TUint DesToIntL(const TDesC8& aLuid) const;
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
private:
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
     /**
hgs
parents:
diff changeset
   374
     * Constructor
hgs
parents:
diff changeset
   375
     */
hgs
parents:
diff changeset
   376
    CNSmlDmAOAdapter();
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
    /**
hgs
parents:
diff changeset
   379
     * Constructor
hgs
parents:
diff changeset
   380
     * @param aDmCallback Callback object to the framework
hgs
parents:
diff changeset
   381
     */
hgs
parents:
diff changeset
   382
    CNSmlDmAOAdapter( MSmlDmCallback* aDmCallback );   
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
    /**
hgs
parents:
diff changeset
   385
     * Second phase constructor
hgs
parents:
diff changeset
   386
     */
hgs
parents:
diff changeset
   387
    void ConstructL();
hgs
parents:
diff changeset
   388
     
hgs
parents:
diff changeset
   389
    /**
hgs
parents:
diff changeset
   390
     * Parses the last URI segment from URI
hgs
parents:
diff changeset
   391
     * @param    aURI The whole URI
hgs
parents:
diff changeset
   392
     * @return    The last URI segment
hgs
parents:
diff changeset
   393
     */
hgs
parents:
diff changeset
   394
    TPtrC8 LastURISeg(const TDesC8& aURI) const; 
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
private: //data
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
    /**
hgs
parents:
diff changeset
   400
     * Setting store object, which is called for managing settings 
hgs
parents:
diff changeset
   401
     * in CommsDat. Own.
hgs
parents:
diff changeset
   402
     */
hgs
parents:
diff changeset
   403
     CNSmlDmAOSettingStore * iSettingStore;
hgs
parents:
diff changeset
   404
        
hgs
parents:
diff changeset
   405
    };
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
/**
hgs
parents:
diff changeset
   409
 *  CSmlDmAOCommandElement 
hgs
parents:
diff changeset
   410
 *
hgs
parents:
diff changeset
   411
 * Helper class, which stores a single command for a VENDORCONFIG. 
hgs
parents:
diff changeset
   412
 *  @lib nsmldmalwaysonadapter
hgs
parents:
diff changeset
   413
 *  @since S60 v3.2
hgs
parents:
diff changeset
   414
 */
hgs
parents:
diff changeset
   415
hgs
parents:
diff changeset
   416
class CSmlDmAOCommandElement : public CBase
hgs
parents:
diff changeset
   417
    {
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
public:
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
    static CSmlDmAOCommandElement* NewLC( TBool aLeaf, 
hgs
parents:
diff changeset
   422
                                          TInt aStatusRef, 
hgs
parents:
diff changeset
   423
                                          TInt aResultRef, 
hgs
parents:
diff changeset
   424
                                          CNSmlDmAOAdapter::TCommandType  aCmdType, 
hgs
parents:
diff changeset
   425
                                          const TDesC8& aLastUriSeg, 
hgs
parents:
diff changeset
   426
                                          const TDesC8& aData );
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
     ~CSmlDmAOCommandElement();
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
    /**
hgs
parents:
diff changeset
   431
     * Returns the iExecuted member value of the object
hgs
parents:
diff changeset
   432
     *
hgs
parents:
diff changeset
   433
     * @since S60 v3.2
hgs
parents:
diff changeset
   434
     * @return The iExecuted member value of the object
hgs
parents:
diff changeset
   435
     */
hgs
parents:
diff changeset
   436
    inline TBool Executed();
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
    /**
hgs
parents:
diff changeset
   439
     * Sets the iExecuted member value of the object
hgs
parents:
diff changeset
   440
     *
hgs
parents:
diff changeset
   441
     * @since S60 v3.2
hgs
parents:
diff changeset
   442
     * @param aExecuted Executed value for the object. 
hgs
parents:
diff changeset
   443
     */    
hgs
parents:
diff changeset
   444
    inline void SetExecuted( TBool aExecuted );
hgs
parents:
diff changeset
   445
    
hgs
parents:
diff changeset
   446
    /**
hgs
parents:
diff changeset
   447
     * Returns the iStatus member value of the object
hgs
parents:
diff changeset
   448
     *
hgs
parents:
diff changeset
   449
     * @since S60 v3.2
hgs
parents:
diff changeset
   450
     * @return The iStatus value of the object
hgs
parents:
diff changeset
   451
     */
hgs
parents:
diff changeset
   452
    inline CSmlDmAdapter::TError Status();
hgs
parents:
diff changeset
   453
    
hgs
parents:
diff changeset
   454
    /**
hgs
parents:
diff changeset
   455
     * Sets the iStatus member value of the object
hgs
parents:
diff changeset
   456
     *
hgs
parents:
diff changeset
   457
     * @since S60 v3.2
hgs
parents:
diff changeset
   458
     * @param aStatus Status value for the object. 
hgs
parents:
diff changeset
   459
     */    
hgs
parents:
diff changeset
   460
    inline void SetStatus( CSmlDmAdapter::TError aStatus ); 
hgs
parents:
diff changeset
   461
    
hgs
parents:
diff changeset
   462
    /**
hgs
parents:
diff changeset
   463
     * Returns the iLeaf member value of the object
hgs
parents:
diff changeset
   464
     *
hgs
parents:
diff changeset
   465
     * @since S60 v3.2
hgs
parents:
diff changeset
   466
     * @return The iLeaf member value of the object
hgs
parents:
diff changeset
   467
     */
hgs
parents:
diff changeset
   468
    inline TBool Leaf();
hgs
parents:
diff changeset
   469
    
hgs
parents:
diff changeset
   470
    /**
hgs
parents:
diff changeset
   471
     * Returns the iStatusRef member value of the object
hgs
parents:
diff changeset
   472
     *
hgs
parents:
diff changeset
   473
     * @since S60 v3.2
hgs
parents:
diff changeset
   474
     * @return The iStatusRef member value of the object
hgs
parents:
diff changeset
   475
     */
hgs
parents:
diff changeset
   476
    inline TInt StatusRef();
hgs
parents:
diff changeset
   477
    
hgs
parents:
diff changeset
   478
    /**
hgs
parents:
diff changeset
   479
     * Returns the iResultRef member value of the object
hgs
parents:
diff changeset
   480
     *
hgs
parents:
diff changeset
   481
     * @since S60 v3.2
hgs
parents:
diff changeset
   482
     * @return The iResultRef member value of the object
hgs
parents:
diff changeset
   483
     */
hgs
parents:
diff changeset
   484
    inline TInt ResultRef();
hgs
parents:
diff changeset
   485
    
hgs
parents:
diff changeset
   486
    /**
hgs
parents:
diff changeset
   487
     * Returns the iCmdType member value of the object
hgs
parents:
diff changeset
   488
     *
hgs
parents:
diff changeset
   489
     * @since S60 v3.2
hgs
parents:
diff changeset
   490
     * @return The iCmdType member value of the object
hgs
parents:
diff changeset
   491
     */
hgs
parents:
diff changeset
   492
    inline CNSmlDmAOAdapter::TCommandType  CmdType();        
hgs
parents:
diff changeset
   493
    
hgs
parents:
diff changeset
   494
    /**
hgs
parents:
diff changeset
   495
     * Returns the iData member value of the object
hgs
parents:
diff changeset
   496
     *
hgs
parents:
diff changeset
   497
     * @since S60 v3.2
hgs
parents:
diff changeset
   498
     * @return The iData member value of the object
hgs
parents:
diff changeset
   499
     */
hgs
parents:
diff changeset
   500
    inline const HBufC8* Data();
hgs
parents:
diff changeset
   501
    
hgs
parents:
diff changeset
   502
    /**
hgs
parents:
diff changeset
   503
     * Returns the iLastUriSeg member value of the object
hgs
parents:
diff changeset
   504
     *
hgs
parents:
diff changeset
   505
     * @since S60 v3.2
hgs
parents:
diff changeset
   506
     * @return The iLastUriSeg member value of the object
hgs
parents:
diff changeset
   507
     */
hgs
parents:
diff changeset
   508
    inline const HBufC8* LastUriSeg();
hgs
parents:
diff changeset
   509
    
hgs
parents:
diff changeset
   510
    /**
hgs
parents:
diff changeset
   511
     * Sets the iData member value of the object
hgs
parents:
diff changeset
   512
     *
hgs
parents:
diff changeset
   513
     * @since S60 v3.2
hgs
parents:
diff changeset
   514
     * @param aData Data set to the object. The data will be owned by 
hgs
parents:
diff changeset
   515
     * the command object. 
hgs
parents:
diff changeset
   516
     */    
hgs
parents:
diff changeset
   517
    inline void SetData( HBufC8* aData );
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
private:
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
    CSmlDmAOCommandElement( TBool aLeaf, 
hgs
parents:
diff changeset
   522
                            TInt aStatusRef, 
hgs
parents:
diff changeset
   523
                            TInt aResultRef, 
hgs
parents:
diff changeset
   524
                            CNSmlDmAOAdapter::TCommandType aCmdType );                              
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
    void ConstructL( const TDesC8& aLastUriSeg, const TDesC8& aData );   
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
    
hgs
parents:
diff changeset
   529
private: //data
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
    /**
hgs
parents:
diff changeset
   532
     * Has command been executed. 
hgs
parents:
diff changeset
   533
     * Set to ETrue when command is executed.
hgs
parents:
diff changeset
   534
     */
hgs
parents:
diff changeset
   535
    TBool iExecuted;
hgs
parents:
diff changeset
   536
    
hgs
parents:
diff changeset
   537
    /**
hgs
parents:
diff changeset
   538
     * The execution status of an exeuted command. 
hgs
parents:
diff changeset
   539
     * Filled in when command is executed.
hgs
parents:
diff changeset
   540
     */    
hgs
parents:
diff changeset
   541
    CSmlDmAdapter::TError iStatus;
hgs
parents:
diff changeset
   542
    
hgs
parents:
diff changeset
   543
    
hgs
parents:
diff changeset
   544
    /**
hgs
parents:
diff changeset
   545
     * True if commend is for a leaf node, False if it is for a NAPDEF node.
hgs
parents:
diff changeset
   546
     */    
hgs
parents:
diff changeset
   547
    const TBool iLeaf;
hgs
parents:
diff changeset
   548
    
hgs
parents:
diff changeset
   549
    /**
hgs
parents:
diff changeset
   550
     * Reference for returning the status to DM framework.
hgs
parents:
diff changeset
   551
     */    
hgs
parents:
diff changeset
   552
    const TInt iStatusRef;
hgs
parents:
diff changeset
   553
    
hgs
parents:
diff changeset
   554
    /**
hgs
parents:
diff changeset
   555
     * Reference for returning result of Get command to the DM framework.
hgs
parents:
diff changeset
   556
     */    
hgs
parents:
diff changeset
   557
    const TInt iResultRef;
hgs
parents:
diff changeset
   558
    
hgs
parents:
diff changeset
   559
    /**
hgs
parents:
diff changeset
   560
     * Type of command.
hgs
parents:
diff changeset
   561
     */    
hgs
parents:
diff changeset
   562
    const CNSmlDmAOAdapter::TCommandType  iCmdType;        
hgs
parents:
diff changeset
   563
    
hgs
parents:
diff changeset
   564
hgs
parents:
diff changeset
   565
    /**
hgs
parents:
diff changeset
   566
     * Data which is either ment to be stored to setting store 
hgs
parents:
diff changeset
   567
     * or which has been fetched from there. 
hgs
parents:
diff changeset
   568
     */
hgs
parents:
diff changeset
   569
    HBufC8* iData;
hgs
parents:
diff changeset
   570
hgs
parents:
diff changeset
   571
    /**
hgs
parents:
diff changeset
   572
     * Last segment in the command URI, which indicates the leaf node 
hgs
parents:
diff changeset
   573
     * in question. For non leaf command empty string. 
hgs
parents:
diff changeset
   574
     */    
hgs
parents:
diff changeset
   575
    HBufC8* iLastUriSeg;
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
    };
hgs
parents:
diff changeset
   578
    
hgs
parents:
diff changeset
   579
#include "nsmldmalwaysonadapter.inl"    
hgs
parents:
diff changeset
   580
hgs
parents:
diff changeset
   581
#endif // NSMLDMALWAYSONADAPTER_H