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#ifndef SYNCML_DM_ARCHIVE_H 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define SYNCML_DM_ARCHIVE_H 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef __cplusplus 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#error "This is a C++ header file; it requires C++ to compile." 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*================================================================================================== 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Header Name: SyncML_DM_Archive.H 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby General Description: This file contains the declaration for the SyncML_DM_Archive class. 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SyncML_DM_Archive is the ABC (Abstract Base Class) of all Archive classes 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/ 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Time.h" 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmMemory.h" 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmEventLogger.h" 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "SyncML_Commit_Log.H" 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*================================================================================================== 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyCLASS DECLARATION 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/ 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DMNode; 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DMTree; 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass CEnv; 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass SyncML_DM_Archive 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public: 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMEventLogger& GetEventLogger() { return oEventLogger; } 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Class constructor 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The caller is responsible for allocating/freeing the two fields 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * to this function 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SyncML_DM_Archive(CEnv* env, CPCHAR pURI, CPCHAR path) ; 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Class destructor (virtual because of the inheritance of 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * other classes who might be referenced as SyncML_DM_Archive) 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual ~SyncML_DM_Archive() ; 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T Init(DMTree* pTree); 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Serialization and Deserialization methods must be overridden 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * by any concrete archive implementation 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The caller is responsible for allocating/freeing the DMTree 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * for the serialize function 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T serialize(DMTree* tree) = 0; 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T deserialize(DMTree* tree, 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN bIsReload = FALSE) = 0; 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Operators to allocate and delete memory for operation */ 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby inline void* operator new(size_t sz) 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return (DmAllocMem(sz)); 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby inline void operator delete(void* buf) 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby { 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DmFreeMem(buf); 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Accessor for the last modification time of the archive 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual XPL_CLK_CLOCK_T getLastModifiedTime() = 0; 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Get last persisted time */ 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual XPL_CLK_CLOCK_T getLastSavedTime() = 0; 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Check permission */ 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual BOOLEAN verifyPermission(XPL_FS_OPEN_MODE_T permission) const {return TRUE;} 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Update last accessed time */ 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby void setLastAccessedTime(XPL_CLK_CLOCK_T lastAccessedTime); 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Get last accessed time */ 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XPL_CLK_CLOCK_T getLastAccessedTime(); 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN isWritableExist() const {return m_bWritableExist;} 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby void setWritableExist( BOOLEAN bWritableExist ) {m_bWritableExist = bWritableExist;} 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //Re-Set last persisted time 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual void serializeDone() = 0; 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Accessors for setting/getting the string representing the URI 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * of the archive in the memory tree 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The caller is responsible for allocating/freeing memory for the 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * set function but has no responsibilities when using the get 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * function 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR getURI() const {return m_pURI;} 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* Accessor for setting the root node of the archive of the DMNode type 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The destructor of this class later frees the created DMAddNodeProp 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * object 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual void setRootNode(DMNode* node) { rootTreeNode=node; } 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual DMNode* getRootNode() { return rootTreeNode; } 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN isDirty() { return dirty; } 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby void setDirty(BOOLEAN dirty) { this->dirty=dirty; } 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby void getFilePath(char * path, CPCHAR ext); 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SyncML_DM_Archive * getParentArchive() { return parent; } 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby void setParentArchive(SyncML_DM_Archive * parent) { this->parent=parent; } 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN LoadSkeleton(DMTree* pTree) ; 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef LOB_SUPPORT 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T rollbackESN(DMTree* tree) = 0; 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T commitESN(DMTree* tree) = 0; 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SyncML_Commit_Log* GetCommitLogHandler() = 0; 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T CloseCommitLog() = 0; 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby virtual SYNCML_DM_RET_STATUS_T PlayCommitLog() = 0; 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby protected: 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMEventLogger oEventLogger; 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby //Parent archive of this archive. when loaded, parent MUST Have already been loaded 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby SyncML_DM_Archive * parent; 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* The top-level URI of the archive */ 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR m_pURI; 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* The filesystem path string of the archive file */ 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby CPCHAR m_path; 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* full name to file in WFS */ 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMString m_strWFSFileName; 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* if the tree associated with the archive is dirty or not.*/ 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN dirty; 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby BOOLEAN m_bWritableExist; 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* permission mask on archive */ 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby int m_permission; 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMNode* rootTreeNode; //Different from rootNode which is a serialized form 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XPL_CLK_CLOCK_T m_lastAccessedTime; 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby DMTree* m_pTree; 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}; 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif /* SYNCML_DM_ARCHIVE_H */ 175