13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License"); 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License. 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * http://www.apache.org/licenses/LICENSE-2.0 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS, 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License. 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*================================================================================================== 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Name: dmtNode.cc 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby General Description: Implementation of the DmtTreeImpl class 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/ 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmt.hpp" 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtTreeImpl.hpp" 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmtNodeImpl.hpp" 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_util.h" 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dm_tree_plugin_util.H" 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmLockingHelper.h" 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtNodeImpl::~DmtNodeImpl() 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtNodeImpl::DmtNodeImpl( BOOLEAN bLeaf,BOOLEAN bESN, DmtTree *ptrTree, CPCHAR oPath, CPCHAR strName ) 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_bLeaf = bLeaf; 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_ptrTree = ptrTree; 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_oPath = DmtGetSafeStrPtr( oPath ); 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_strName = strName; 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_bESN = bESN; 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_chunkOffset = 0L; // offset 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby chunkData = NULL; 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtNodeImpl::DmtNodeImpl( BOOLEAN bLeaf, DmtTree *ptrTree, CPCHAR oPath, CPCHAR strName ) 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_bLeaf = bLeaf; 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_ptrTree = ptrTree; 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_oPath = DmtGetSafeStrPtr( oPath ); 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_strName = strName; 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetTree( PDmtTree& ptrTree ) const 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ptrTree = m_ptrTree; 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetPath(DMString & path) const 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby path = m_oPath; 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_oPath != NULL && path == NULL ) 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetNodeName(DMString & name) const 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby name = m_strName; 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_strName != NULL && name == NULL ) 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_DEVICE_FULL; 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetAttributes( DmtAttributes& oAttr ) const 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), GetTree()->m_nLockType ); 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dmTreeObj.GetAttributes(m_oPath.c_str(), oAttr, SYNCML_DM_REQUEST_TYPE_API); 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetTitle( CPCHAR szTitle ) 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return GetTree()->SetNodeStringProp( m_oPath.c_str(), "Title", szTitle ); 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetAcl( const DmtAcl& oAcl ) 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return GetTree()->SetNodeStringProp( m_oPath.c_str(), "ACL", oAcl.toString().c_str()); 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::Rename( CPCHAR szNewName ) 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return GetTree()->SetNodeStringProp( m_oPath.c_str(), "Name", szNewName ); 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetValue( DmtData& oData ) const 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyif (m_bESN) 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_RESULTS_TOO_LARGE; 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), GetTree()->m_nLockType ); 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS; 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMGetData getData; 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = dmTreeObj.Get(m_oPath.c_str(),getData,SYNCML_DM_REQUEST_TYPE_API); 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (getData.m_nFormat == SYNCML_DM_FORMAT_NODE ) 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMStringVector aChildren; 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMURI ptr(FALSE,getData.getCharData()); 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR pSegment = NULL; 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oData = DmtData( aChildren ); // set type to "node" for case of empty parent 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // we got list of nodes, divided by '/' 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby while ( (pSegment = ptr.nextSegment()) != NULL ) 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = oData.AddNodeValue(pSegment); 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby else 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = dmBuildData(getData.m_nFormat, getData.m_oData, oData); 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetValue( const DmtData& value ) 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyif (m_bESN) 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_RESULTS_TOO_LARGE; 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T dm_stat = SYNCML_DM_SUCCESS; 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMAddData oReplace; 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = oReplace.set(m_oPath.c_str(),value,"text/plain"); 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dmTreeObj.Replace(oReplace,SYNCML_DM_REQUEST_TYPE_API); 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetChildNodes( DMVector<PDmtNode>& oChildren ) const 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMStringVector aChildren; 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return GetChildNodes( oChildren, aChildren ); 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetChildNodes( DMVector<PDmtNode>& oChildren, DMStringVector& aChildren ) const 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby // cache current time for last access time updates 2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMTreeCacheCurrentTime cacheTime(&dmTreeObj); 2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oChildren.clear(); // remove all previous items from array 2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( m_bLeaf ) 2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FAIL; 2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DmtData oData; 2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T dm_stat = GetValue( oData ); 2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = oData.GetNodeValue( aChildren ); 2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby for ( int i = 0; i < aChildren.size(); i++ ) 2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString oPath = m_oPath; 2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oPath += "/"; 2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oPath += aChildren[i]; 2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby PDmtNode ptrNode; 2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby dm_stat = GetTree()->GetNodeByFullPath( oPath.c_str(), ptrNode ); 2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( dm_stat != SYNCML_DM_SUCCESS ) 2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dm_stat; 2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oChildren.push_back( ptrNode ); 2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_SUCCESS; 2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN DmtNodeImpl::IsLeaf() const 2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return m_bLeaf; 2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetChildNode( CPCHAR szPath, PDmtNode& ptrNode ) 2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString oPath = m_oPath; 2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oPath += "/"; 2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby oPath += DmtGetSafeStrPtr( szPath ); 2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return GetTree()->GetNodeByFullPath( oPath.c_str(), ptrNode ); 2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::Execute( CPCHAR strData, DMString& result ) 2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return dmTreeObj.Exec(m_oPath.c_str(),strData,result); 2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby// implementation helpers 2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtTreeImpl* DmtNodeImpl::GetTree() const 2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return (DmtTreeImpl*)m_ptrTree.GetPtr(); 2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl:: GetEngineChunkData(void) 2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMGetData getData; 2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = getData.set(chunkData, m_chunkOffset); 2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( retStatus != SYNCML_DM_SUCCESS ) 2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = dmTreeObj.Get(m_oPath.c_str(),getData,SYNCML_DM_REQUEST_TYPE_API); 2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( retStatus != SYNCML_DM_SUCCESS ) 2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby UINT32 returnLen; 2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = chunkData->GetReturnLen(returnLen); 2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_chunkOffset += returnLen; 2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl::GetFirstChunk(DmtDataChunk& dmtChunkData) 2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), GetTree()->m_nLockType ); 3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if( chunkData != NULL) 3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(chunkData != &dmtChunkData) 3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { retStatus = chunkData->FreeChunkBuffer(); 3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(retStatus!= SYNCML_DM_SUCCESS) 3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = dmtChunkData.AllocateChunkBuffer(); 3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(retStatus!= SYNCML_DM_SUCCESS) 3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby chunkData = &dmtChunkData; 3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_chunkOffset = 0L; 3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = GetEngineChunkData(); 3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl::GetNextChunk(DmtDataChunk& dmtChunkData) 3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), GetTree()->m_nLockType ); 3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(( chunkData == NULL) ||(chunkData != &dmtChunkData)) 3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_INVALID_PARAMETER; 3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = GetEngineChunkData(); 3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl:: SetEngineChunkData(BOOLEAN isLastChunk) 3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMAddData oReplace; 3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = oReplace.set(m_oPath.c_str(), chunkData, m_chunkOffset, isLastChunk); 3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( retStatus != SYNCML_DM_SUCCESS ) 3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = dmTreeObj.Replace(oReplace,SYNCML_DM_REQUEST_TYPE_API); 3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( retStatus != SYNCML_DM_SUCCESS ) 3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby UINT32 dataLen; 3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = chunkData->GetChunkDataSize(dataLen); 3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_chunkOffset += dataLen; 3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl:: SetFirstChunk(DmtDataChunk& dmtChunkData) 3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (chunkData != NULL) 3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(chunkData != &dmtChunkData) 3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { retStatus = chunkData->FreeChunkBuffer(); 3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(retStatus!= SYNCML_DM_SUCCESS) 3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = dmtChunkData.AllocateChunkBuffer(); 3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(retStatus!= SYNCML_DM_SUCCESS) 3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby chunkData = &dmtChunkData; 3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby m_chunkOffset = 0L; 3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = SetEngineChunkData(FALSE); 3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl::SetNextChunk(DmtDataChunk& dmtChunkData) 4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(( chunkData == NULL) ||(chunkData != &dmtChunkData)) 4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_INVALID_PARAMETER; 4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = SetEngineChunkData(FALSE); 4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T DmtNodeImpl::SetLastChunk(DmtDataChunk& dmtChunkData) 4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( GetTree()->m_nLockType == SYNCML_DM_LOCK_TYPE_SHARED ) 4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_TREE_READONLY; 4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMLockingHelper oLock( GetTree(), SYNCML_DM_LOCK_TYPE_EXCLUSIVE ); 4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ( !oLock.IsLockedSuccessfully() ) 4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return oLock.GetError(); 4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SYNCML_DM_RET_STATUS_T retStatus = SYNCML_DM_SUCCESS; 4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (!m_bESN) 4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_UNSUPPORTED_MEDIATYPE_FORMAT; 4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if(( chunkData == NULL) ||(chunkData != &dmtChunkData)) 4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_INVALID_PARAMETER; 4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby retStatus = SetEngineChunkData(TRUE); 4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return retStatus; 4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyboolean DmtNodeImpl::IsExternalStorageNode(void) const 4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ return m_bESN; 4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else 4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetFirstChunk(DmtDataChunk& dmtChunkData) 4523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 4533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FEATURE_NOT_SUPPORTED; 4543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::GetNextChunk(DmtDataChunk& dmtChunkData) 4563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 4573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FEATURE_NOT_SUPPORTED; 4583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetFirstChunk(DmtDataChunk& dmtChunkData) 4603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 4613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FEATURE_NOT_SUPPORTED; 4623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetNextChunk(DmtDataChunk& dmtChunkData) 4643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 4653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FEATURE_NOT_SUPPORTED; 4663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtNodeImpl::SetLastChunk(DmtDataChunk& dmtChunkData) 4683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 4693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SYNCML_DM_FEATURE_NOT_SUPPORTED; 4703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 4713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyboolean DmtNodeImpl::IsExternalStorageNode(void) const { return FALSE;} 4723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 4733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 474