13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <fcntl.h>
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <errno.h>
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <unistd.h>
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <stdlib.h>
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "stdio.h"
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmt.hpp"
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "jem_defs.hpp"
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmt.hpp"
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "plugin/dmtRWPlugin.hpp"
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "SyncML_DM_FileHandle.H"
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_File.h"
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//---------------------------Declaration----------------------
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass testRWPluginTree;
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass testRWPluginNode;
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef JemSmartPtr< testRWPluginTree > PtestRWPluginTree;
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef JemSmartPtr< testRWPluginNode >PtestRWPluginNode;
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// PlugIn Tree
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass testRWPluginTree : public DmtRWPluginTree
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic:
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   testRWPluginTree(const char * rootPath);
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   ~testRWPluginTree();
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T DeleteNode( const char* path );
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T CreateInteriorNode( const char* path, PDmtNode& ptrCreatedNode );
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T CreateLeafNode( const char* path, PDmtNode& ptrCreatedNode, const DmtData& value,  BOOLEAN isESN);
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T CreateInteriorNodeInternal( const char* path, PDmtNode& ptrCreatedNode, const DMStringVector & childNodeNames);
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T CreateLeafNodeInternal( const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN );
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass testRWPluginNode : public DmtRWPluginNode
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic:
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   testRWPluginNode(    //Leaf Node
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtPluginTree ptrTree,
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   const char* path,
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   const DmtData & oData,
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   BOOLEAN isESN
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   testRWPluginNode(    //Interior Node
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtPluginTree ptrTree,
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   const char* path,
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   const DMStringVector & childNodeNames
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T GetValue( DmtData& oData ) const;
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T SetValue( const DmtData& value );
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T GetFirstChunk(DmtDataChunk&  chunkData);
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T GetNextChunk(DmtDataChunk& chunkData);
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T SetFirstChunk(DmtDataChunk& chunkData);
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T SetNextChunk(DmtDataChunk& chunkData);
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T SetLastChunk(DmtDataChunk& chunkData);
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T Delete();
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T Commit();
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyprotected:
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	 ~testRWPluginNode();
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  private:
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     SYNCML_DM_RET_STATUS_T SetChunkData(DmtDataChunk&  chunkData);
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     SYNCML_DM_RET_STATUS_T GetChunkData(DmtDataChunk&  chunkData);
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     SYNCML_DM_RET_STATUS_T OpenInternalStorageFile();
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     SYNCML_DM_RET_STATUS_T CloseInternalFile();
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   DMString abStorageName;
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   UINT32 totalSize;
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   DMFileHandler *fileHandle;
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   UINT32 offset;
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambytestRWPluginTree::testRWPluginTree(const char * rootPath):DmtRWPluginTree()
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Init(rootPath);
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambytestRWPluginTree::~testRWPluginTree()
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginTree::DeleteNode( const char* path )
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  PDmtErrorDescription e= DmtRWPluginTree::DeleteNode(path);
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return e.GetErrorCode();
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginTree::CreateInteriorNodeInternal( const char* path, PDmtNode& ptrCreatedNode, const DMStringVector & childNodeNames )
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PtestRWPluginNode pNode;
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Interior node
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(this,
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      path,   //RootNode is interior node
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      childNodeNames
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PDmtErrorDescription e = this->SetNode(path,
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtNode(pNode.GetPtr())
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   ptrCreatedNode = pNode;
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return e.GetErrorCode();
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginTree::CreateLeafNodeInternal( const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN )
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PtestRWPluginNode pNode;
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Leaf node
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pNode=new testRWPluginNode(
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               this,
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               path,
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               value,
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               isESN
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PDmtErrorDescription e = this->SetNode(path,
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               PDmtNode(pNode.GetPtr())
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//  return GetNode( path, ptrCreatedNode );
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   ptrCreatedNode = pNode;
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return e.GetErrorCode();
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginTree::CreateInteriorNode( const char* path, PDmtNode& ptrCreatedNode )
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return DmtRWPluginTree::CreateInteriorNode(path, ptrCreatedNode);
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginTree::CreateLeafNode( const char* path, PDmtNode& ptrCreatedNode, const DmtData& value,  BOOLEAN isESN )
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return  DmtRWPluginTree::CreateLeafNode(path, ptrCreatedNode, value, isESN);
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*testRWPluginNode::testRWPluginNode(
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtPluginTree ptrTree,
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      const char* path
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby) : DmtRWPluginNode((DmtRWPluginTree *) ((DmtPluginTree *)(ptrTree)), path, DmtData(""))
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby*/
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambytestRWPluginNode::testRWPluginNode(
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PDmtPluginTree ptrTree,
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   const char* path,
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   const DmtData & oData,
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   BOOLEAN isESN
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby)
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Init(ptrTree, path, oData, isESN);
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  abStorageName = NULL;
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  totalSize = 0L;
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  fileHandle = NULL;
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  offset = 0;
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambytestRWPluginNode::testRWPluginNode(    //Interior Node
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PDmtPluginTree ptrTree,
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	const char* path,
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	const DMStringVector & childNodeNames
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby)
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  Init(ptrTree, path, childNodeNames);
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::~destructor
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     :
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambytestRWPluginNode::~testRWPluginNode()
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	CloseInternalFile();
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	abStorageName = NULL;
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::GetValue( DmtData& oData ) const
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return  DmtPluginNode::GetValue(oData);
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::SetValue( const DmtData& value )
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return DmtRWPluginNode::SetValue(value);
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::GetChunkData
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Get  chunk data
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::GetChunkData(DmtDataChunk&  chunkData)
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS;
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	UINT32 remainlLen = totalSize- offset;
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	UINT32 getLen = 0L;
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	UINT8 *bufp;
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	retStatus = OpenInternalStorageFile();
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(fileHandle == NULL)
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	{
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		chunkData.SetChunkData(NULL, 0L);
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		chunkData.SetReturnLen(getLen);
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	}
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	chunkData.GetChunkData(&bufp);
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(remainlLen <0|| bufp == NULL)
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return SYNCML_DM_INVALID_PARAMETER;
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(remainlLen == 0)
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	{
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		chunkData.SetChunkData(NULL, 0L);
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		chunkData.SetReturnLen(remainlLen);
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		CloseInternalFile();
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return SYNCML_DM_SUCCESS;
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	}
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	getLen = chunkData.GetChunkSize();
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(getLen > remainlLen)
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		getLen = remainlLen;
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	chunkData.GetChunkData(&bufp); 	// the chunk data is available
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(bufp == NULL)
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return SYNCML_DM_INVALID_PARAMETER;
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    	if(fileHandle->seek(XPL_FS_SEEK_SET, offset) != SYNCML_DM_SUCCESS)
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	        return  SYNCML_DM_IO_FAILURE;
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    	if(fileHandle->read(bufp, getLen) != SYNCML_DM_SUCCESS)
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	        return  SYNCML_DM_IO_FAILURE;
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	chunkData.SetReturnLen(getLen);
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	offset += getLen;
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	return retStatus;
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::GetFirstChunk
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Get next chunk
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::GetFirstChunk(DmtDataChunk& chunkData)
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::GetFirstChunk(chunkData);
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	return GetChunkData(chunkData);
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::GetNextChunk
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Get next chunk
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::GetNextChunk(DmtDataChunk& chunkData)
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::GetNextChunk(chunkData);
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	return GetChunkData(chunkData);
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::SetChunkData
2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Set  chunk data for an ESN
2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::SetChunkData(DmtDataChunk& chunkData)
2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS;
2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	UINT32 dataLen;
2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	UINT8 *bufp;
2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	chunkData.GetChunkDataSize(dataLen);
2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	// No internal file created yet
2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(abStorageName.length() == 0) {
2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	   	retStatus = DMFileHandler::createTempESNFileName(abStorageName);
2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		abStorageName += ".lob";
2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		if(retStatus != SYNCML_DM_SUCCESS)
2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			return retStatus;
2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	}
2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	else// Replace previous data
2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		{
3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			// Set first trunk
3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			if(offset == 0)
3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			{	totalSize = 0L;
3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				// Remove the current data file
3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  				retStatus = OpenInternalStorageFile();
3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				if(retStatus != SYNCML_DM_SUCCESS)
3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby					return retStatus;
3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				retStatus = fileHandle->deleteFile();
3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				if(retStatus != SYNCML_DM_SUCCESS)
3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby					return retStatus;
3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				delete fileHandle;
3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				fileHandle = NULL;
3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			}
3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	}
3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(dataLen != 0)
3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	{
3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		retStatus = OpenInternalStorageFile();
3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		if(retStatus != SYNCML_DM_SUCCESS)
3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			return retStatus;
3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		chunkData.GetChunkData(&bufp); 	// the chunk data is available
3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		if(fileHandle == NULL  ||bufp == NULL)
3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			return SYNCML_DM_INVALID_PARAMETER;
3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	    		if(fileHandle->seek(XPL_FS_SEEK_SET, offset) != SYNCML_DM_SUCCESS)
3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		        return  SYNCML_DM_IO_FAILURE;
3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		    	if(fileHandle->write(bufp, dataLen) != SYNCML_DM_SUCCESS)
3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	      		  return  SYNCML_DM_IO_FAILURE;
3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	}
3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	totalSize = offset + dataLen;
3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	offset += dataLen;
3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	m_oAttr.SetSize(totalSize);
3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	chunkData.SetReturnLen(dataLen);
3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	return retStatus;
3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::SetFirstChunk
3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Set first chunk
3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::SetFirstChunk(DmtDataChunk& chunkData)
3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::SetFirstChunk(chunkData);
3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 	return SetChunkData(chunkData);
3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::SetNextChunk
3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Get first chunk
3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::SetNextChunk(DmtDataChunk& chunkData)
3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::SetNextChunk(chunkData);
3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 	return SetChunkData(chunkData);
3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::SetLastChunk
3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Set last chunk of data
3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::SetLastChunk(DmtDataChunk& chunkData)
3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::SetLastChunk(chunkData);
3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	retStatus = SetChunkData(chunkData);;
3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	retStatus = CloseInternalFile();
3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	return retStatus;
3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::CloseInternalFile
3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Open intenal storage file
3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::CloseInternalFile()
4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS;
4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if (fileHandle != NULL)
4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby {
4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     fileHandle->close();
4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     delete fileHandle;
4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     fileHandle = NULL;
4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  offset = 0;
4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return retStatus;
4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::Commit
4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Commit changes of the node
4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::Commit()
4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	SYNCML_DM_RET_STATUS_T retStatus = DmtRWPluginNode::Commit();
4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	if(retStatus != SYNCML_DM_SUCCESS)
4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  return retStatus;
4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	 return 	CloseInternalFile();
4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : testRWPluginNode::Delete
4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Delete the node
4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    : SYNCML_DM_RET_STATUS_T : Returns SYNCML_DM_SUCCESS if success, otherwise fails
4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::Delete()
4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS;
4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if(abStorageName.length() != 0)
4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  {
4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  	retStatus = OpenInternalStorageFile();
4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  if(retStatus != SYNCML_DM_SUCCESS)
4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  retStatus = fileHandle->deleteFile();
4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  if(retStatus != SYNCML_DM_SUCCESS)
4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		return retStatus;
4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  delete fileHandle;
4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  fileHandle = NULL;
4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	  abStorageName = NULL;
4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
4523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  return retStatus;
4533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// FUNCTION        : DmtRWPluginTree::IsESNSetComplete
4573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// DESCRIPTION     : Open intenal storage file
4583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// ARGUMENTS PASSED:
4593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// RETURN VALUE    :
4613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//--------------------------------------------------------------------------------------------
4623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//
4633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T testRWPluginNode::OpenInternalStorageFile()
4643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
4653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS;
4663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    struct  stat st;
4673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // If the file is not opened before
4693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  if(fileHandle == NULL)
4703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  {
4713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   if(abStorageName.length() != 0) {
4723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    INT32 modeFlag = XPL_FS_FILE_RDWR;
4743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // If file does not exist use write mode instead of read/write to prevent file I/O error
4753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//    if (!XPL_FS_Exist(abStorageName.c_str()))
4763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if(stat(abStorageName.c_str(), &st) < 0)
4773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
4783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		modeFlag = XPL_FS_FILE_WRITE;
4793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fileHandle = new DMFileHandler(abStorageName.c_str());
4813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (fileHandle->open(modeFlag) != SYNCML_DM_SUCCESS)
4823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return SYNCML_DM_IO_FAILURE;
4833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    totalSize = fileHandle->size();
4843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
4853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   else
4863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   	totalSize = 0;
4873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
4883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return retStatus;
4893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
4903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
4913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern "C"
4943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DMT_PluginLib_Data_GetPluginTree(
4953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	CPCHAR pluginRootNodePath,
4963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	DMStringMap & mapParameters,	//For the Tree
4973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	PDmtAPIPluginTree & pPluginTree	//root tree for the current path
4983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby)
4993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
5003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//   PDmtPluginTree pMyTree=PDmtRWPluginTree(new DmtRWPluginTree(pluginRootNodePath));
5013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PDmtPluginTree pMyTree= PDmtPluginTree (new testRWPluginTree(pluginRootNodePath));
5023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   PtestRWPluginNode pNode;
5043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMStringVector oChildren;
5063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren.push_back("branch1");
5073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//   oChildren.push_back("branch2");
5083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Interior node
5103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(pMyTree,
5113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      "",   //RootNode is interior node
5123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      oChildren
5133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
5143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pMyTree->SetNode("",
5153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtNode(pNode.GetPtr())
5163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
5173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   DMStringVector oChildren1;
5183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("char");
5193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("int");
5203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("lob");
5213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("lobbin");
5223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("FloatLeaf");
5233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("DateLeaf");
5243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   oChildren1.push_back("TimeLeaf");
5253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Interior node
5273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(pMyTree,
5283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      "branch1",   //RootNode is interior node
5293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      oChildren1
5303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
5313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pMyTree->SetNode("branch1",
5323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      PDmtNode(pNode.GetPtr())
5333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   );
5343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//Leaf node
5363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pNode=new testRWPluginNode(
5373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               pMyTree,
5383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               "branch1/char",
5393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               DmtData("char_value"),
5403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               false
5413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
5423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby     pMyTree->SetNode("branch1/char",
5433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               PDmtNode(pNode.GetPtr())
5443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
5453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // Integer node
5463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    pNode=new testRWPluginNode(
5473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               pMyTree,
5483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               "branch1/int",
5493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               DmtData(1234),
5503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               false
5513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
5523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/int",
5533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby               PDmtNode(pNode.GetPtr())
5543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            );
5553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//ESN node of char type
5563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pNode=new testRWPluginNode(
5573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				  pMyTree,
5583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				  "branch1/lob",
5593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				  DmtData(),
5603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				  true
5613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			   );
5623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/lob",
5633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby				  PDmtNode(pNode.GetPtr())
5643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			   );
5653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // Binary ESN node
5663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pNode=new testRWPluginNode(
5673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby						 pMyTree,
5683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby						 "branch1/lobbin",
5693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby						 DmtData(NULL, 0),
5703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby						 true
5713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby					  );
5723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/lobbin",
5733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby						 PDmtNode(pNode.GetPtr())
5743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby					  );
5753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(
5773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  pMyTree,
5783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  "branch1/FloatLeaf",
5793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  DmtData("-1.23456e+2", SYNCML_DM_DATAFORMAT_FLOAT),
5803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  false
5813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
5823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/FloatLeaf",
5833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  PDmtNode(pNode.GetPtr())
5843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
5853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(
5873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  pMyTree,
5883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  "branch1/DateLeaf",
5893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  DmtData("2005-10-18", SYNCML_DM_DATAFORMAT_DATE),
5903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  false
5913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
5923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/DateLeaf",
5933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  PDmtNode(pNode.GetPtr())
5943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
5953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
5963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pNode=new testRWPluginNode(
5973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  pMyTree,
5983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  "branch1/TimeLeaf",
5993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  DmtData("11:38:58", SYNCML_DM_DATAFORMAT_TIME),
6003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  false
6013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
6023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby	pMyTree->SetNode("branch1/TimeLeaf",
6033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby			  PDmtNode(pNode.GetPtr())
6043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby		   );
6053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   pPluginTree=pMyTree;
6073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return SYNCML_DM_SUCCESS;
6083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
6103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern "C"
6113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyint DMT_PluginLib_GetAPIVersion(void)
6123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
6133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   return DMT_PLUGIN_VERSION_1_1;
6143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
6153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
616