Home | History | Annotate | Download | only in plugin
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef __DMTPLUGIN_H__
     18 #define __DMTPLUGIN_H__
     19 
     20 #ifndef __cplusplus
     21 #error "This is a C++ header file; it requires C++ to compile."
     22 #endif
     23 
     24 /**
     25   \file dmtPlugin.hpp
     26   \brief  The dmtPlugin.hpp is a helper  header file contains constants and data types\n
     27                 of plugin API. Also it contains DmtPluginNode, DmtAPIPluginTree and \n
     28                 DmtAPIPluginTree classes definition.\n
     29                <b>Warning:</b>  All functions, structures, and classes from this header file are for internal usage only!!!
     30 
     31 <P>
     32 
     33 Plugin DLLs' exported function types:<P>
     34 
     35 \code
     36 
     37     //Mandatory function:
     38     int DMT_PluginLib_GetVersion();  //Should return DMT_PLUGIN_VERSION_1_1
     39 
     40     //Data plug-in:
     41     extern "C"
     42     SYNCML_DM_RET_STATUS_T DMT_PluginLib_Data_GetTree(
     43     	const char * pluginRootNodePath,
     44     	DMStringMap & mapParameters,	//For the Tree
     45     	PDmtAPIPluginTree & pPluginTree	      //root tree for the current path
     46     );
     47 
     48     DmtPluginTree and DmtPluginNode are only used for Data plug-ins.
     49 
     50     //Exec plug-in:
     51     extern "C"
     52     SYNCML_DM_RET_STATUS_T DMT_PluginLib_Execute2(
     53     	const char * path,
     54         DMStringMap & mapParameters,
     55         CPCHAR args,
     56         CPCHAR szCorrelator,
     57         PDmtTree tree,
     58         DMString & results);
     59 
     60     //Constraint plug-in:
     61     extern "C"
     62     SYNCML_DM_RET_STATUS_T DMT_PluginLib_CheckConstraint(
     63     	const char * path,
     64     	DMStringMap & mapParameters,
     65     	PDmtTree tree        //Global Tree with same access rights for current session
     66        );
     67 
     68     //Commit plug-in:
     69     extern "C"
     70     SYNCML_DM_RET_STATUS_T DMT_PluginLib_OnCommit(
     71     	const DMSubscriptionVector &updatedNodes,
     72     	DMStringMap& mapParameters,
     73     	PDmtTree tree );
     74  \endcode
     75 */
     76 
     77 #include "jem_defs.hpp"
     78 #include "dmt.hpp"      // Use Dmt C++ API for Data Plugin
     79 
     80 /**  Version definition that should be used by both DLL and plugin*/
     81 #define DMT_PLUGIN_VERSION_1_1      0x00010001
     82 
     83 /** Define DMStringMap for plugins*/
     84 typedef  DMMap<DMString, DMString> DMStringMap;
     85 
     86 /** Define DmtOverlayPluginData for plugins*/
     87 typedef DMVector<unsigned char> DmtOverlayPluginData;
     88 
     89 /** Overlay plugin synchronization data */
     90 struct DmtOverlayPluginSyncData
     91 {
     92 /** possible values for a status */
     93   enum {
     94   	/** status deleted */
     95   	enum_StatusDeleted,
     96   	/** status unchanged */
     97   	enum_StatusUnchanged,
     98   	/** status added */
     99   	enum_StatusAdded
    100   };
    101    /** node name */
    102   DMString m_strNodeName;
    103    /** plugin data */
    104   DmtOverlayPluginData m_oData;
    105    /** node status */
    106   UINT8     m_nStatus;
    107 };
    108 
    109 /**
    110 *  Device management plugin tree API class; inherited from  the DmtTree class.
    111 * \par Category: General
    112 * \par Persistence: Transient
    113 * \par Security: Non-Secure
    114 * \par Migration State: FINAL
    115 */
    116 class DmtAPIPluginTree : public DmtTree
    117 {
    118  public:
    119 
    120   /**
    121   * Will be called by DM Engine whenever in prior to add multi-nodes with flag "storesPD".
    122   * \par Sync (or) Async:
    123   * This is a Synchronous function.
    124   * \par Secure (or) Non-Secure (or) N/A:
    125   * This is a Non-Secure function.
    126   * \param path [in] - node path
    127   * \param data [in] - reference to a node data
    128   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    129   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    130   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    131   * - All other codes indicates failure. The description can be found in dmtError.h \n
    132   * \par Prospective Clients:
    133   * All potential applications that require configuration settings and Internal Classes.
    134   */
    135   virtual SYNCML_DM_RET_STATUS_T OnAdd( CPCHAR path, DmtOverlayPluginData& data );
    136 
    137   /**
    138   * Will be called by DM Engine whenever in prior to delete multi-nodes with flag "storesPD".
    139   * \par Sync (or) Async:
    140   * This is a Synchronous function.
    141   * \par Secure (or) Non-Secure (or) N/A:
    142   * This is a Non-Secure function.
    143   * \param path [in] - node path
    144   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    145   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    146   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    147   * - All other codes indicates failure. The description can be found in dmtError.h \n
    148   * \par Prospective Clients:
    149   * All potential applications that require configuration settings and Internal Classes.
    150   */
    151   virtual SYNCML_DM_RET_STATUS_T OnDelete( CPCHAR path );
    152 
    153   /**
    154   * Will be called by DM Engine to make synchronization in prior execution other functions.
    155   * \par Sync (or) Async:
    156   * This is a Synchronous function.
    157   * \par Secure (or) Non-Secure (or) N/A:
    158   * This is a Non-Secure function.
    159   * \param path [in] - node path
    160   * \param data [in] - vector with data
    161   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    162   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    163   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    164   * - All other codes indicates failure. The description can be found in dmtError.h \n
    165   * \par Prospective Clients:
    166   * All potential applications that require configuration settings and Internal Classes.
    167   */
    168   virtual SYNCML_DM_RET_STATUS_T Synchronize( const char* path, DMVector<DmtOverlayPluginSyncData>& data );
    169 
    170   /**
    171   * Called whenever plugin is unloaded to help free all resources
    172   * \par Sync (or) Async:
    173   * This is a Synchronous function.
    174   * \par Secure (or) Non-Secure (or) N/A:
    175   * This is a Non-Secure function.
    176   * \par Prospective Clients:
    177   * All potential applications that require configuration settings and Internal Classes.
    178   */
    179   virtual void Release();
    180 
    181  /**
    182   * Flushs memory
    183   * \par Sync (or) Async:
    184   * This is a Synchronous function.
    185   * \par Secure (or) Non-Secure (or) N/A:
    186   * This is a Non-Secure function.
    187   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    188   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    189   * - All other codes indicates failure. The description can be found in dmtError.h \n
    190   * \par Prospective Clients:
    191   * All potential applications that require configuration settings and Internal Classes.
    192   */
    193   virtual SYNCML_DM_RET_STATUS_T Flush();
    194 
    195   /**
    196   * Finds added node
    197   * \par Sync (or) Async:
    198   * This is a Synchronous function.
    199   * \par Secure (or) Non-Secure (or) N/A:
    200   * This is a Non-Secure function.
    201   * \param path [in] - CPCHAR path to added node
    202   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    203   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    204   * - All other codes indicates failure. The description can be found in dmtError.h \n
    205   * \par Prospective Clients:
    206   * All potential applications that require configuration settings and Internal Classes.
    207   */
    208   virtual SYNCML_DM_RET_STATUS_T FindAddedNode(CPCHAR path);
    209 
    210   /**
    211   * Finds added parent node
    212   * \par Sync (or) Async:
    213   * This is a Synchronous function.
    214   * \par Secure (or) Non-Secure (or) N/A:
    215   * This is a Non-Secure function.
    216   * \param path [in] - CPCHAR path to added parent node
    217   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    218   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    219   * - All other codes indicates failure. The description can be found in dmtError.h \n
    220   * \par Prospective Clients:
    221   * All potential applications that require configuration settings and Internal Classes.
    222   */
    223   virtual SYNCML_DM_RET_STATUS_T FindAddedParentNode(CPCHAR path);
    224 
    225   /**
    226   * Sets added node
    227   * \par Sync (or) Async:
    228   * This is a Synchronous function.
    229   * \par Secure (or) Non-Secure (or) N/A:
    230   * This is a Non-Secure function.
    231   * \param ptrNode [in] - reference to a node
    232   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    233   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    234   * - All other codes indicates failure. The description can be found in dmtError.h \n
    235   * \par Prospective Clients:
    236   * All potential applications that require configuration settings and Internal Classes.
    237   */
    238   virtual SYNCML_DM_RET_STATUS_T SetAddedNode(PDmtNode ptrNode);
    239 
    240   /**
    241   * Removes added node
    242   * \par Sync (or) Async:
    243   * This is a Synchronous function.
    244   * \par Secure (or) Non-Secure (or) N/A:
    245   * This is a Non-Secure function.
    246   * \param path [in] - CPCHAR path to added node
    247   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    248   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    249   * - All other codes indicates failure. The description can be found in dmtError.h \n
    250   * \par Prospective Clients:
    251   * All potential applications that require configuration settings and Internal Classes.
    252   */
    253   virtual SYNCML_DM_RET_STATUS_T RemoveAddedNode(CPCHAR path);
    254 
    255 
    256   /**
    257   * Sets principal for the plugin tree
    258   * \par Sync (or) Async:
    259   * This is a Synchronous function.
    260   * \par Secure (or) Non-Secure (or) N/A:
    261   * This is a Non-Secure function.
    262   * \param strPrincipal [in] - principal string for the session
    263   * \return  Return Type (BOOLEAN)
    264   * - TRUE -set principal successful
    265   * - FALSE -set principal fail
    266   * \par Prospective Clients:
    267   * All potential applications that require configuration settings and Internal Classes.
    268   */
    269    virtual BOOLEAN SetPrincipal( CPCHAR strPrincipal );
    270 
    271 /**
    272 * Retrieves a principal
    273   * \par Sync (or) Async:
    274   * This is a Synchronous function.
    275   * \par Secure (or) Non-Secure (or) N/A:
    276   * This is a Non-Secure function.
    277   * \return the DmtPrincipal object that the session was created with.
    278   * \par Prospective Clients:
    279   * All potential applications that require configuration settings and Internal Classes.
    280   */
    281    virtual DmtPrincipal GetPrincipal() const;
    282 
    283 
    284 protected:
    285  /** DmtAPIPluginTree class member contains	list of added nodes*/
    286   DMVector<PDmtNode> m_oAddedNodes;
    287  /** DmtAPIPluginTree class member contains	principal*/
    288   DmtPrincipal m_Principal;
    289 
    290 };
    291 
    292 /** Define PDmtAPIPluginTree for plugins*/
    293 typedef JemSmartPtr< DmtAPIPluginTree > PDmtAPIPluginTree;
    294 
    295 
    296 class DmtPluginTree;
    297 class DmtPluginNode;
    298 
    299 /** Define Dmt Plugin Tree smart pointer for plugins*/
    300 typedef JemSmartPtr< DmtPluginTree > PDmtPluginTree;
    301 
    302 /** Define Dmt Plugin Node smart pointer for plugins*/
    303 typedef JemSmartPtr< DmtPluginNode > PDmtPluginNode;
    304 
    305 
    306 /** Has parent DmtAPIPluginTree class; handle operation with nodes and other tasks:\n
    307 *    1. Provide default implementation for many DmtTree virtual functions for ease of plugin development.\n
    308 *    2. Support default power failure recovery internally. \n
    309 *    3. Support plugin node to check parameters for each different node (GerNodeParameters).
    310 * \par Category: General
    311 * \par Persistence: Transient
    312 * \par Security: Non-Secure
    313 * \par Migration State: FINAL
    314 */
    315 
    316 class DmtPluginTree : public DmtAPIPluginTree
    317 {
    318    //With some default Implementation of the DmtTree API including helper functions
    319 protected:
    320 
    321    DMString m_strRootPath;
    322    DMMap<DMString, PDmtNode> m_Nodes;
    323 
    324    /** Protected destructor */
    325    virtual ~DmtPluginTree();
    326 
    327 public:
    328 
    329   /**
    330   * Default constructor - no memory allocation performed.
    331   */
    332    DmtPluginTree();
    333 
    334 public:
    335 
    336 /**
    337   * Initializes DM tree
    338   * \par Sync (or) Async:
    339   * This is a Synchronous function.
    340   * \par Secure (or) Non-Secure (or) N/A:
    341   * This is a Non-Secure function.
    342   * \param rootNodePath [in] - path to root node
    343   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    344   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    345   * - SYNCML_DM_DEVICE_FULL - indicating the operation cannot be performed. \n
    346   * - All other codes indicates failure. The description can be found in dmtError.h \n
    347   * \par Prospective Clients:
    348   * All potential applications that require configuration settings and Internal Classes.
    349   */
    350    virtual SYNCML_DM_RET_STATUS_T Init( CPCHAR rootNodePath );
    351 
    352   /**
    353   * Retrieves full path to node
    354   * \par Sync (or) Async:
    355   * This is a Synchronous function.
    356   * \par Secure (or) Non-Secure (or) N/A:
    357   * This is a Non-Secure function.
    358   * \param path [in] - path to a node
    359   * \param fullPath [out] - full path to a node
    360   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    361   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    362   * - All other codes indicates failure. The description can be found in dmtError.h \n
    363   * \par Prospective Clients:
    364   * All potential applications that require configuration settings and Internal Classes.
    365   */
    366    virtual SYNCML_DM_RET_STATUS_T GetFullPath( CPCHAR path,
    367                                                  DMString & fullPath ) const;
    368 
    369   /**
    370   * Retrieves  node by given path
    371   * \par Sync (or) Async:
    372   * This is a Synchronous function.
    373   * \par Secure (or) Non-Secure (or) N/A:
    374   * This is a Non-Secure function.
    375   * \param path [in] - path to a node
    376   * \param ptrNode [out] - reference to a node
    377   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    378   * - SYNCML_DM_NOT_FOUND - indicating the operation cannot be performed. \n
    379   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    380   * - All other codes indicates failure. The description can be found in dmtError.h \n
    381   * \par Prospective Clients:
    382   * All potential applications that require configuration settings and Internal Classes.
    383   */
    384    virtual SYNCML_DM_RET_STATUS_T GetNode( CPCHAR path,
    385                                               PDmtNode& ptrNode );
    386 
    387   /**
    388   * Retrieves  child nodes names by given path
    389   * \par Sync (or) Async:
    390   * This is a Synchronous function.
    391   * \par Secure (or) Non-Secure (or) N/A:
    392   * This is a Non-Secure function.
    393   * \param path [in] - path to a node
    394   * \param mapNodes [out] - vector with child nodes
    395   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    396   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    397   * - All other codes indicates failure. The description can be found in dmtError.h
    398   * \par Prospective Clients:
    399   * All potential applications that require configuration settings and Internal Classes.
    400   */
    401    virtual SYNCML_DM_RET_STATUS_T GetChildNodeNames( CPCHAR path,
    402                                                            DMStringVector& mapNodes );
    403   /**
    404   * Default atomicity support will be provided here
    405   * \par Sync (or) Async:
    406   * This is a Synchronous function.
    407   * \par Secure (or) Non-Secure (or) N/A:
    408   * This is a Non-Secure function.
    409   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    410   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    411   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    412   * - All other codes indicates failure. The description can be found in dmtError.h
    413   * \par Prospective Clients:
    414   * All potential applications that require configuration settings and Internal Classes.
    415   */
    416    virtual SYNCML_DM_RET_STATUS_T Flush();
    417 
    418   /**
    419   * Checks for atomicity.
    420   * \par Sync (or) Async:
    421   * This is a Synchronous function.
    422   * \par Secure (or) Non-Secure (or) N/A:
    423   * This is a Non-Secure function.
    424   * \return '"false", not supported.
    425   * \par Prospective Clients:
    426   * All potential applications that require configuration settings and Internal Classes.
    427   */
    428    virtual BOOLEAN IsAtomic() const;
    429 
    430   /**
    431   * Begins an atomic operation that will end with commit() or rollback();
    432   * \par Sync (or) Async:
    433   * This is a Synchronous function.
    434   * \par Secure (or) Non-Secure (or) N/A:
    435   * This is a Non-Secure function.
    436   * returns an error code if a transaction is running already.
    437   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    438   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    439   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    440   * - All other codes indicates failure. The description can be found in dmtError.h
    441   * \par Prospective Clients:
    442   * All potential applications that require configuration settings and Internal Classes.
    443   */
    444    virtual SYNCML_DM_RET_STATUS_T Begin();
    445 
    446   /**
    447   * The method will commit a series of atomic operations
    448   * \par Sync (or) Async:
    449   * This is a Synchronous function.
    450   * \par Secure (or) Non-Secure (or) N/A:
    451   * This is a Non-Secure function.
    452   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    453   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    454   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    455   * - All other codes indicates failure. The description can be found in dmtError.h
    456   * \par Prospective Clients:
    457   * All potential applications that require configuration settings and Internal Classes.
    458   */
    459    virtual SYNCML_DM_RET_STATUS_T Commit();
    460 
    461   /**
    462    * The method will rollback a series of atomic operations
    463   * \par Sync (or) Async:
    464   * This is a Synchronous function.
    465   * \par Secure (or) Non-Secure (or) N/A:
    466   * This is a Non-Secure function.
    467   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    468   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    469   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    470   * - All other codes indicates failure. The description can be found in dmtError.h
    471   * \par Prospective Clients:
    472   * All potential applications that require configuration settings and Internal Classes.
    473   */
    474    virtual SYNCML_DM_RET_STATUS_T Rollback() ;
    475 
    476   /**
    477    * Deletes a node according to the specified path
    478   * \par Sync (or) Async:
    479   * This is a Synchronous function.
    480   * \par Secure (or) Non-Secure (or) N/A:
    481   * This is a Non-Secure function.
    482   * \param path [in] - full path to the node
    483   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    484   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    485   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    486   * - All other codes indicates failure. The description can be found in dmtError.h
    487   * \par Prospective Clients:
    488   * All potential applications that require configuration settings and Internal Classes.
    489   */
    490    virtual SYNCML_DM_RET_STATUS_T DeleteNode( CPCHAR path );
    491 
    492   /**
    493   * Changes node's name. For example: RenameNode( "./SyncML/DMAcc/Test", "NewTest" );
    494   * \par Sync (or) Async:
    495   * This is a Synchronous function.
    496   * \par Secure (or) Non-Secure (or) N/A:
    497   * This is a Non-Secure function.
    498   * \param path [in] - path to the node
    499   * \param szNewNodeName [in] - new node name
    500   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    501   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    502   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    503   * - All other codes indicates failure. The description can be found in dmtError.h
    504   * \par Prospective Clients:
    505   * All potential applications that require configuration settings and Internal Classes.
    506   */
    507    virtual SYNCML_DM_RET_STATUS_T RenameNode( CPCHAR path,
    508                                                    CPCHAR szNewNodeName );
    509 
    510   /**
    511    * Creates an interior node in the tree.
    512   * \par Sync (or) Async:
    513   * This is a Synchronous function.
    514   * \par Secure (or) Non-Secure (or) N/A:
    515   * This is a Non-Secure function.
    516   * \param path [in] - path to the node
    517   * \param ptrCreatedNode [out] - new created node
    518   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    519   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    520   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    521   * - All other codes indicates failure. The description can be found in dmtError.h
    522   * \par Prospective Clients:
    523   * All potential applications that require configuration settings and Internal Classes.
    524   */
    525    virtual SYNCML_DM_RET_STATUS_T CreateInteriorNode( CPCHAR path,
    526                                                          PDmtNode& ptrCreatedNode );
    527 
    528 
    529   /**
    530    * Creates a leaf node in the tree.
    531   * \par Sync (or) Async:
    532   * This is a Synchronous function.
    533   * \par Secure (or) Non-Secure (or) N/A:
    534   * This is a Non-Secure function.
    535   * \param path [in] - path to the node
    536   * \param ptrCreatedNode [out] - new created node
    537   * \param value [in] - data value DmtData type
    538   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    539   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    540   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    541   * - All other codes indicates failure. The description can be found in dmtError.h
    542   * \par Prospective Clients:
    543   * All potential applications that require configuration settings and Internal Classes.
    544   */
    545    virtual SYNCML_DM_RET_STATUS_T CreateLeafNode( CPCHAR path,
    546                                                       PDmtNode& ptrCreatedNode,
    547                                                       const DmtData& value );
    548 
    549   /**
    550    * Creates a leaf node in the tree.
    551   * \par Sync (or) Async:
    552   * This is a Synchronous function.
    553   * \par Secure (or) Non-Secure (or) N/A:
    554   * This is a Non-Secure function.
    555   * \param path [in] - path to the node
    556   * \param ptrCreatedNode [out] - new created node
    557   * \param value [in] - data value DmtData type
    558   * \param isESN [in] - TRUE if path is to an ESN node, otherwise -FALSE
    559   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    560   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    561   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    562   * - All other codes indicates failure. The description can be found in dmtError.h
    563   * \par Prospective Clients:
    564   * All potential applications that require configuration settings and Internal Classes.
    565   */
    566    virtual SYNCML_DM_RET_STATUS_T CreateLeafNode(CPCHAR path,
    567 						   PDmtNode& ptrCreatedNode,
    568 						   const DmtData& value ,
    569 						   BOOLEAN isESN);
    570 
    571    /**
    572   * Releases DM tree
    573   * \par Sync (or) Async:
    574   * This is a Synchronous function.
    575   * \par Secure (or) Non-Secure (or) N/A:
    576   * This is a Non-Secure function.
    577   * \par Prospective Clients:
    578   * All potential applications that require configuration settings and Internal Classes.
    579   */
    580    virtual void Release();
    581 
    582 public:
    583 
    584    //Other Helper Function Implementation for the Tree, NOT used
    585 
    586   /**
    587   * <b>NOT used</b>. Creates a sibling of the node specified by its URI "path".
    588   * This new node's name is user-specified as "szNewNodename".
    589   * \par Sync (or) Async:
    590   * This is a Synchronous function.
    591   * \par Secure (or) Non-Secure (or) N/A:
    592   * This is a Non-Secure function.
    593   * \param path [in] - URI of node to be cloned.
    594   * \param szNewNodename [in] - new node name as specified by user.
    595   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    596   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    597   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    598   * - All other codes indicates failure. The description can be found in dmtError.h
    599   * \par Prospective Clients:
    600   * All potential applications that require configuration settings and Internal Classes.
    601   */
    602    virtual SYNCML_DM_RET_STATUS_T Clone(CPCHAR path,
    603                                           CPCHAR szNewNodename);
    604 
    605   /**
    606   * <b>NOT used</b>. . This is a  helper method. It will return a table of all leaf nodes of the current node.
    607   * The table key is the child node name, and value is the string node value. It sets leaf nodes only.
    608   * \par Sync (or) Async:
    609   * This is a Synchronous function.
    610   * \par Secure (or) Non-Secure (or) N/A:
    611   * This is a Non-Secure function.
    612   * \param path [in] - path to the node
    613   * \param mapNodes [out] - map with leaf nodes only
    614   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    615   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    616   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    617   * - All other codes indicates failure. The description can be found in dmtError.h
    618   * \par Prospective Clients:
    619   * All potential applications that require configuration settings and Internal Classes.
    620   */
    621    virtual SYNCML_DM_RET_STATUS_T GetChildValuesMap( CPCHAR path,
    622                                                           DMMap<DMString, DmtData>& mapNodes );
    623 
    624   /**
    625   * <b>NOT used</b>. This is a  helper method. It will delete all leaf nodes and creates new which are provided in the map.
    626   * The table key is the child node name, and value is the node value. It changes leaf nodes only.
    627   * \par Sync (or) Async:
    628   * This is a Synchronous function.
    629   * \par Secure (or) Non-Secure (or) N/A:
    630   * This is a Non-Secure function.
    631   * \param path [in] - path to the node
    632   * \param mapNodes [in] - map with leaf nodes only
    633   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    634   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    635   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    636   * - All other codes indicates failure. The description can be found in dmtError.h
    637   * \par Prospective Clients:
    638   * All potential applications that require configuration settings and Internal Classes.
    639   */
    640    virtual SYNCML_DM_RET_STATUS_T SetChildValuesMap( CPCHAR path,
    641                                                           const DMMap<DMString, DmtData>& mapNodes );
    642 
    643 public:
    644    //
    645    //Additional API for Recovery and 2-phase commit for multiple plugins.
    646    //For future expansion. Currently not used
    647    //
    648    /**
    649   * Additional API for Recovery and 2-phase commit for multiple plugins.
    650   * \warning This API is for the future expansion  and currently <b>NOT used</b>.
    651   * \par Sync (or) Async:
    652   * This is a Synchronous function.
    653   * \par Secure (or) Non-Secure (or) N/A:
    654   * This is a Non-Secure function.
    655   * \return status code. Return Type (SYNCML_DM_RET_STATUS_T) \n
    656   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    657   * - All other codes indicates failure. The description can be found in dmtError.h
    658   * \par Prospective Clients:
    659   * All potential applications that require configuration settings and Internal Classes.
    660   */
    661    virtual SYNCML_DM_RET_STATUS_T Verify();
    662 
    663 
    664    //Additional API to shield plugins from accessing engine functions directly
    665    // i.e. to get parameters for each plugin Node
    666    // this is more generic since they can query *ANY* other parameters
    667  /**
    668   * Additional API to shield plugins from accessing engine functions directly  (i.e. to get parameters for each plugin Node).
    669   * This is more generic since they can query *ANY* other parameters.
    670   * \par Sync (or) Async:
    671   * This is a Synchronous function.
    672   * \par Secure (or) Non-Secure (or) N/A:
    673   * This is a Non-Secure function.
    674   * \param name [in] - parameter name
    675   * \param value [out] - parameter value
    676   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    677   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    678   * - SYNCML_DM_NOT_FOUND - indicating the operation cannot be performed. \n
    679   * - All other codes indicates failure. The description can be found in dmtError.h
    680   * \par Prospective Clients:
    681   * All potential applications that require configuration settings and Internal Classes.
    682   */
    683    virtual SYNCML_DM_RET_STATUS_T GetParameter(CPCHAR name,
    684                                                   DMString & value);
    685 
    686    //
    687    // Helper set Functions for shared library developer to use
    688    //
    689  /**
    690   *  This is a  helper method. It will set Functions for shared library developer to use.
    691   * \par Sync (or) Async:
    692   * This is a Synchronous function.
    693   * \par Secure (or) Non-Secure (or) N/A:
    694   * This is a Non-Secure function.
    695   * \param path [in] - node path
    696   * \param node [out] - node to be set
    697   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    698   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    699   * - All other codes indicates failure. The description can be found in dmtError.h
    700   * \par Prospective Clients:
    701   * All potential applications that require configuration settings and Internal Classes.
    702   */
    703 
    704    SYNCML_DM_RET_STATUS_T SetNode(CPCHAR path,
    705                                     PDmtNode node);
    706 
    707  /**
    708   * Removes node fron the tree
    709   * \par Sync (or) Async:
    710   * This is a Synchronous function.
    711   * \par Secure (or) Non-Secure (or) N/A:
    712   * This is a Non-Secure function.
    713   * \param path [in] - node path
    714   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    715   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    716   * - All other codes indicates failure. The description can be found in dmtError.h
    717   * \par Prospective Clients:
    718   * All potential applications that require configuration settings and Internal Classes.
    719   */
    720    SYNCML_DM_RET_STATUS_T RemoveNode(CPCHAR path);
    721 
    722  /**
    723   * Removes all nodes
    724   * \par Sync (or) Async:
    725   * This is a Synchronous function.
    726   * \par Secure (or) Non-Secure (or) N/A:
    727   * This is a Non-Secure function.
    728   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    729   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    730   * - All other codes indicates failure. The description can be found in dmtError.h
    731   * \par Prospective Clients:
    732   * All potential applications that require configuration settings and Internal Classes.
    733   */
    734    SYNCML_DM_RET_STATUS_T ClearNodes();
    735 
    736 };
    737 
    738 
    739 /**
    740 * Class DmtPluginNode for default read only plugin node implementation.
    741 * \par Category: General
    742 * \par Persistence: Transient
    743 * \par Security: Non-Secure
    744 * \par Migration State: FINAL
    745 */
    746 class DmtPluginNode : public DmtNode
    747 {
    748 protected:
    749    BOOLEAN   m_bLeaf;
    750    DMString  m_strPath;
    751    PDmtPluginTree  m_ptrTree;
    752    DMString  m_strName;
    753    DmtData   m_oData;
    754    DMString  m_strTitle;
    755    DmtAttributes m_oAttr;
    756    BOOLEAN  m_bESN;
    757    /** Protected destructor is changed to public destructor*/
    758 public:
    759    virtual ~DmtPluginNode();
    760 
    761 
    762 public:
    763   /**
    764   * Default constructor - no memory allocation performed.
    765   */
    766    DmtPluginNode();
    767 
    768  /**
    769   * Initializes plugin
    770   * \par Sync (or) Async:
    771   * This is a Synchronous function.
    772   * \par Secure (or) Non-Secure (or) N/A:
    773   * This is a Non-Secure function.
    774   * \param  ptrTree [in] - DM tree pointer
    775   * \param path [in] - path
    776   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    777   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    778   * - All other codes indicates failure. The description can be found in dmtError.h
    779   * \par Prospective Clients:
    780   * All potential applications that require configuration settings and Internal Classes.
    781   */
    782    virtual SYNCML_DM_RET_STATUS_T Init(PDmtPluginTree ptrTree,
    783                                       CPCHAR path);
    784  /**
    785   * Initializes plugin
    786   * \par Sync (or) Async:
    787   * This is a Synchronous function.
    788   * \par Secure (or) Non-Secure (or) N/A:
    789   * This is a Non-Secure function.
    790   * \param ptrTree [in] - DM tree pointer
    791   * \param path [in] - path
    792   * \param isleaf [in] - TRUE if path is to leaf node, otherwise -FALSE
    793   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    794   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    795   * - All other codes indicates failure. The description can be found in dmtError.h
    796   * \par Prospective Clients:
    797   * All potential applications that require configuration settings and Internal Classes.
    798   */
    799    virtual SYNCML_DM_RET_STATUS_T Init(PDmtPluginTree ptrTree,
    800                                       CPCHAR path,
    801                                       BOOLEAN isleaf);
    802 
    803    /**
    804   * Initializes plugin
    805   * \par Sync (or) Async:
    806   * This is a Synchronous function.
    807   * \par Secure (or) Non-Secure (or) N/A:
    808   * This is a Non-Secure function.
    809   * \param ptrTree [in] - DM tree pointer
    810   * \param path [in] - path
    811   * \param oData [in] - node data
    812   * \param isESN [in] - TRUE if path is to an ESN node, otherwise -FALSE
    813   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    814   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    815   * - All other codes indicates failure. The description can be found in dmtError.h
    816   * \par Prospective Clients:
    817   * All potential applications that require configuration settings and Internal Classes.
    818   */
    819    virtual SYNCML_DM_RET_STATUS_T Init(PDmtPluginTree ptrTree,
    820                                       CPCHAR path,
    821                                       const DmtData & oData,
    822                                       BOOLEAN isESN = FALSE);
    823  /**
    824   * Initializes plugin
    825   * \par Sync (or) Async:
    826   * This is a Synchronous function.
    827   * \par Secure (or) Non-Secure (or) N/A:
    828   * This is a Non-Secure function.
    829   * \param ptrTree [in] - DM tree pointer
    830   * \param path [in] - path
    831   * \param childNodeNames [in] - vector with child node names
    832   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    833   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    834   * - All other codes indicates failure. The description can be found in dmtError.h
    835   * \par Prospective Clients:
    836   * All potential applications that require configuration settings and Internal Classes.
    837   */
    838    virtual SYNCML_DM_RET_STATUS_T Init(PDmtPluginTree ptrTree,
    839                                       CPCHAR path,
    840                                       const DMStringVector & childNodeNames);
    841 
    842 
    843   /**
    844   * Could set empty DmtData object if there is no value associated with it.
    845   * The DmtValue is a copy of current data of the node. The node value will not
    846   * be changed until a <i>setValue()</i> is called.
    847   * \par Sync (or) Async:
    848   * This is a Synchronous function.
    849   * \par Secure (or) Non-Secure (or) N/A:
    850   * This is a Non-Secure function.
    851   * \param oData [out] - reference to DmtData object
    852   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    853   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    854   * - All other codes indicates failure. The description can be found in dmtError.h
    855   * \par Prospective Clients:
    856   * All potential applications that require configuration settings and Internal Classes.
    857   */
    858    virtual SYNCML_DM_RET_STATUS_T GetValue( DmtData& oData ) const;
    859 
    860 
    861    //Attributes May also need to be replaced IF DmtData size is not WWW
    862  /**
    863   * Gets a copy of DmtAttributes, user can modify the DmtAttributes individually
    864   * but any change made to DmtAttributes will not propagated to the Node until a <i>setAttributes()</i> is called.
    865   * \par Sync (or) Async:
    866   * This is a Synchronous function.
    867   * \par Secure (or) Non-Secure (or) N/A:
    868   * This is a Non-Secure function.
    869   * \param  oAttr [out] - reference to DM tree attributes
    870   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    871   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    872   * - All other codes indicates failure. The description can be found in dmtError.h
    873   * \par Prospective Clients:
    874   * All potential applications that require configuration settings and Internal Classes.
    875   */
    876    virtual SYNCML_DM_RET_STATUS_T GetAttributes( DmtAttributes& oAttr ) const;
    877 
    878  /**
    879   * Retrieves tree
    880   * \par Sync (or) Async:
    881   * This is a Synchronous function.
    882   * \par Secure (or) Non-Secure (or) N/A:
    883   * This is a Non-Secure function.
    884   * \param ptrTree [out] - reference to the DM tree
    885   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    886   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    887   * - All other codes indicates failure. The description can be found in dmtError.h
    888   * \par Prospective Clients:
    889   * All potential applications that require configuration settings and Internal Classes.
    890   */
    891    virtual SYNCML_DM_RET_STATUS_T GetTree( PDmtTree& ptrTree ) const;
    892 
    893   /**
    894   * Retrieves path
    895   * \par Sync (or) Async:
    896   * This is a Synchronous function.
    897   * \par Secure (or) Non-Secure (or) N/A:
    898   * This is a Non-Secure function.
    899   * \param path [out] - reference to path in the tree
    900   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    901   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    902   * - SYNCML_DM_DEVICE_FULL - indicating the operation cannot be performed. \n
    903   * - All other codes indicates failure. The description can be found in dmtError.h
    904   * \par Prospective Clients:
    905   * All potential applications that require configuration settings and Internal Classes.
    906   */
    907    virtual SYNCML_DM_RET_STATUS_T GetPath(DMString & path) const;
    908 
    909    /**
    910   * Updates title information for the node.
    911   * \par Sync (or) Async:
    912   * This is a Synchronous function.
    913   * \par Secure (or) Non-Secure (or) N/A:
    914   * This is a Non-Secure function.
    915   * \param szTitle [in] - node titles string
    916   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    917   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    918   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    919   * - All other codes indicates failure. The description can be found in dmtError.h
    920   * \par Prospective Clients:
    921   * All potential applications that require configuration settings and Internal Classes.
    922   */
    923    virtual SYNCML_DM_RET_STATUS_T SetTitle( CPCHAR szTitle );
    924 
    925   /**
    926    * Updates ACL for the node.
    927   * \par Sync (or) Async:
    928   * This is a Synchronous function.
    929   * \par Secure (or) Non-Secure (or) N/A:
    930   * This is a Non-Secure function.
    931   * \param oAcl [in] - reference to DMT ACL object
    932   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    933   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    934   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    935   * - All other codes indicates failure. The description can be found in dmtError.h
    936   * \par Prospective Clients:
    937   * All potential applications that require configuration settings and Internal Classes.
    938   */
    939    virtual SYNCML_DM_RET_STATUS_T SetAcl( const DmtAcl& oAcl );
    940 
    941   /**
    942   * Changes the value of a node. If not successful, return an error code
    943   * \par Sync (or) Async:
    944   * This is a Synchronous function.
    945   * \par Secure (or) Non-Secure (or) N/A:
    946   * This is a Non-Secure function.
    947   * \param value [in] - new node value
    948   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    949   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    950   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    951   * - All other codes indicates failure. The description can be found in dmtError.h
    952   * \par Prospective Clients:
    953   * All potential applications that require configuration settings and Internal Classes.
    954   */
    955    virtual SYNCML_DM_RET_STATUS_T SetValue( const DmtData& value );
    956 
    957   /**
    958   * Fills in oChildren list of child nodes
    959   * \par Sync (or) Async:
    960   * This is a Synchronous function.
    961   * \par Secure (or) Non-Secure (or) N/A:
    962   * This is a Non-Secure function.
    963   * \param oChildren [out] - vector for child nodes
    964   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    965   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    966   * - All other codes indicates failure. The description can be found in dmtError.h
    967   * \par Prospective Clients:
    968   * All potential applications that require configuration settings and Internal Classes.
    969   */
    970    virtual SYNCML_DM_RET_STATUS_T GetChildNodes( DMVector<PDmtNode>& oChildren ) const;
    971 
    972   /**
    973    * Checks if a node is leaf
    974   * \par Sync (or) Async:
    975   * This is a Synchronous function.
    976   * \par Secure (or) Non-Secure (or) N/A:
    977   * This is a Non-Secure function.
    978   * \return TRUE if the node is a leaf, otherwise - FALSE
    979   * \par Prospective Clients:
    980   * All potential applications that require configuration settings and Internal Classes.
    981   */
    982    virtual BOOLEAN IsLeaf() const;
    983 
    984   /**
    985    * Executes a node according to the specified path. Pass a String parameter to the executable code
    986   * \par Sync (or) Async:
    987   * This is a Synchronous function.
    988   * \par Secure (or) Non-Secure (or) N/A:
    989   * This is a Non-Secure function.
    990   * \param strData [in] - data to be executed as a string
    991   * \param result [out] - the result of executing will be set to this string
    992   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
    993   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
    994   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
    995   * - All other codes indicates failure. The description can be found in dmtError.h
    996   * \par Prospective Clients:
    997   * All potential applications that require configuration settings and Internal Classes.
    998   */
    999    virtual SYNCML_DM_RET_STATUS_T Execute( CPCHAR strData, DMString& result );
   1000 
   1001   /**
   1002   * Gets the name of the node.
   1003   * \par Sync (or) Async:
   1004   * This is a Synchronous function.
   1005   * \par Secure (or) Non-Secure (or) N/A:
   1006   * This is a Non-Secure function.
   1007   * param node [out] - name string
   1008   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1009   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1010   * - SYNCML_DM_DEVICE_FULL - indicating the operation cannot be performed. \n
   1011   * - All other codes indicates failure. The description can be found in dmtError.h
   1012   * \par Prospective Clients:
   1013   * All potential applications that require configuration settings and Internal Classes.
   1014   */
   1015    virtual SYNCML_DM_RET_STATUS_T GetNodeName(DMString & name) const;
   1016 
   1017   /**
   1018   * Gets  name of a node.
   1019   * \par Sync (or) Async:
   1020   * This is a Synchronous function.
   1021   * \par Secure (or) Non-Secure (or) N/A:
   1022   * This is a Non-Secure function.
   1023   * \return  name of a node as DMString.
   1024   * \par Prospective Clients:
   1025   * All potential applications that require configuration settings and Internal Classes.
   1026   */
   1027    virtual DMString GetNodeName() const { return m_strName; };
   1028 
   1029   /**
   1030    * Renames a node.
   1031   * \par Sync (or) Async:
   1032   * This is a Synchronous function.
   1033   * \par Secure (or) Non-Secure (or) N/A:
   1034   * This is a Non-Secure function.
   1035   * param szNewName [in] - new name
   1036   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1037   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1038   * - SYNCML_DM_FEATURE_NOT_SUPPORTED - indicate that this operation is not supported for "read only" plugins.
   1039   * - All other codes indicates failure. The description can be found in dmtError.h
   1040   * \par Prospective Clients:
   1041   * All potential applications that require configuration settings and Internal Classes.
   1042   */
   1043    SYNCML_DM_RET_STATUS_T Rename( CPCHAR szNewName );
   1044 
   1045   /**
   1046    * Sets child node object by name
   1047   * \par Sync (or) Async:
   1048   * This is a Synchronous function.
   1049   * \par Secure (or) Non-Secure (or) N/A:
   1050   * This is a Non-Secure function.
   1051   * \param szPath [in] - name of node
   1052   * \param ptrNode [out] - reference to DmtNode
   1053   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1054   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1055   * - All other codes indicates failure. The description can be found in dmtError.h
   1056   * \par Prospective Clients:
   1057   * All potential applications that require configuration settings and Internal Classes.
   1058   */
   1059    virtual SYNCML_DM_RET_STATUS_T GetChildNode( CPCHAR szPath, PDmtNode& ptrNode  );
   1060 
   1061   /**
   1062   * Gets first chunk of an ESN (External Storage Node).
   1063   * \par Sync (or) Async:
   1064   * This is a Synchronous function.
   1065   * \par Secure (or) Non-Secure (or) N/A:
   1066   * This is a Non-Secure function.
   1067   * \param dmtChunkData [out] - reference to dmtChunkData
   1068   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1069   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1070   * - All other codes indicates failure. The description can be found in dmtError.h
   1071   * \par Prospective Clients:
   1072   * All potential applications that require configuration settings and Internal Classes.
   1073   */
   1074    virtual SYNCML_DM_RET_STATUS_T GetFirstChunk(DmtDataChunk&  dmtChunkData);
   1075   /**
   1076    * Gets next chunk of an ESN  (External Storage Node).
   1077   * \par Sync (or) Async:
   1078   * This is a Synchronous function.
   1079   * \par Secure (or) Non-Secure (or) N/A:
   1080   * This is a Non-Secure function.
   1081   * \param dmtChunkData [out] - reference to dmtChunkData
   1082   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1083   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1084   * - All other codes indicates failure. The description can be found in dmtError.h
   1085   * \par Prospective Clients:
   1086   * All potential applications that require configuration settings and Internal Classes.
   1087   */
   1088    virtual SYNCML_DM_RET_STATUS_T GetNextChunk(DmtDataChunk& dmtChunkData);
   1089 
   1090   /**
   1091   * Sets first chunk of an ESN  (External Storage Node).
   1092   * \par Sync (or) Async:
   1093   * This is a Synchronous function.
   1094   * \par Secure (or) Non-Secure (or) N/A:
   1095   * This is a Non-Secure function.
   1096   * \param dmtChunkData [in] - reference to dmtChunkData
   1097   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1098   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1099   * - All other codes indicates failure. The description can be found in dmtError.h
   1100   * \par Prospective Clients:
   1101   * All potential applications that require configuration settings and Internal Classes.
   1102   */
   1103    virtual SYNCML_DM_RET_STATUS_T SetFirstChunk(DmtDataChunk& dmtChunkData);
   1104 
   1105   /**
   1106   * Sets next chunk of an ESN  (External Storage Node).
   1107   * \par Sync (or) Async:
   1108   * This is a Synchronous function.
   1109   * \par Secure (or) Non-Secure (or) N/A:
   1110   * This is a Non-Secure function.
   1111   * \param dmtChunkData [in] - reference to dmtChunkData
   1112   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1113   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1114   * - All other codes indicates failure. The description can be found in dmtError.h
   1115   * \par Prospective Clients:
   1116   * All potential applications that require configuration settings and Internal Classes.
   1117   */
   1118    virtual SYNCML_DM_RET_STATUS_T SetNextChunk(DmtDataChunk& dmtChunkData);
   1119 
   1120   /**
   1121   * Sets last chunk of an ESN  (External Storage Node).
   1122   * \par Sync (or) Async:
   1123   * This is a Synchronous function.
   1124   * \par Secure (or) Non-Secure (or) N/A:
   1125   * This is a Non-Secure function.
   1126   * \param dmtChunkData [in] - reference to dmtChunkData
   1127   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1128   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1129   * - All other codes indicates failure. The description can be found in dmtError.h
   1130   * \par Prospective Clients:
   1131   * All potential applications that require configuration settings and Internal Classes.
   1132   */
   1133    virtual SYNCML_DM_RET_STATUS_T SetLastChunk(DmtDataChunk& dmtChunkData);
   1134 
   1135   /**
   1136    * Checks if a Node is  an ESN  (External Storage Node).
   1137   * \par Sync (or) Async:
   1138   * This is a Synchronous function.
   1139   * \par Secure (or) Non-Secure (or) N/A:
   1140   * This is a Non-Secure function.
   1141   * \return Return Type (BOOLEAN) \n
   1142   * - TRUE - indicating it is an ESN node. \n
   1143   * - FALSE - not an ESN
   1144   * \par Prospective Clients:
   1145   * All potential applications that require configuration settings and Internal Classes.
   1146   */
   1147    boolean IsExternalStorageNode(void)  const {return m_bESN;}
   1148 
   1149 private :
   1150    SYNCML_DM_RET_STATUS_T InitAttributes(SYNCML_DM_DATAFORMAT_T type);
   1151 };
   1152 
   1153 
   1154 /**
   1155 * Engine side support for Overlay plug-ins including meta node ID and PD retrieval
   1156 */
   1157 struct DmtOPINodeData
   1158 {
   1159 /**  plugin data*/
   1160   DMVector< DmtOverlayPluginData >  aPD;
   1161 /** meta ID of a node */
   1162   int   metaNodeID;
   1163 };
   1164 
   1165   /**
   1166   * Function should be called only from the plug-in "getNode" function
   1167   * \warning This method for internal usage only!
   1168   * \par Sync (or) Async:
   1169   * This is a Synchronous function.
   1170   * \par Secure (or) Non-Secure (or) N/A:
   1171   * This is a Non-Secure function.
   1172   * \return cached PDs and metaNodeID (or -1 if not set) for the current node
   1173   * \par Prospective Clients:
   1174   * For internal usage only
   1175   */
   1176 extern "C" const DmtOPINodeData* DmtGetCachedOPINodeData();
   1177 
   1178   /**
   1179   * Allows to update plug-in data in DMT
   1180   * \warning This method for internal usage only!
   1181   * \par Sync (or) Async:
   1182   * This is a Synchronous function.
   1183   * \par Secure (or) Non-Secure (or) N/A:
   1184   * This is a Non-Secure function.
   1185   * \param szURI [in] - node URI
   1186   * \param oData [out] - node data
   1187   * \return Return Type (SYNCML_DM_RET_STATUS_T) \n
   1188   * - SYNCML_DM_SUCCESS - indicates that the operation is completed successfully. \n
   1189   * - All other codes indicates failure. The description can be found in dmtError.h
   1190   * \par Prospective Clients:
   1191   * For internal usage only
   1192   */
   1193 extern "C" SYNCML_DM_RET_STATUS_T DmtSetOPINodeData( CPCHAR szURI, const DmtOverlayPluginData& oData );
   1194 
   1195 #endif
   1196