BackupHelpers.h revision 4535e40544aeb957d44fad75fbe5676effe03689
14535e40544aeb957d44fad75fbe5676effe03689Joe Onorato/* 24535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * Copyright (C) 2009 The Android Open Source Project 34535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * 44535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 54535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * you may not use this file except in compliance with the License. 64535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * You may obtain a copy of the License at 74535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * 84535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 94535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * 104535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * Unless required by applicable law or agreed to in writing, software 114535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 124535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * See the License for the specific language governing permissions and 144535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * limitations under the License. 154535e40544aeb957d44fad75fbe5676effe03689Joe Onorato */ 164535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 173ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#ifndef _UTILS_BACKUP_HELPERS_H 183ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#define _UTILS_BACKUP_HELPERS_H 193ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 204535e40544aeb957d44fad75fbe5676effe03689Joe Onorato#include <utils/Errors.h> 214535e40544aeb957d44fad75fbe5676effe03689Joe Onorato#include <utils/String8.h> 224535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 234535e40544aeb957d44fad75fbe5676effe03689Joe Onoratonamespace android { 244535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 25290bb011c5c1a9ba1f2116810b06cf52a9c36b3eJoe Onoratoint back_up_files(int oldSnapshotFD, int oldDataStream, int newSnapshotFD, 263ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato char const* fileBase, char const* const* files, int fileCount); 273ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 284535e40544aeb957d44fad75fbe5676effe03689Joe Onorato/** 294535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * Reads the data. 304535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * 314535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * If an error occurs, it poisons this object and all write calls will fail 324535e40544aeb957d44fad75fbe5676effe03689Joe Onorato * with the error that occurred. 334535e40544aeb957d44fad75fbe5676effe03689Joe Onorato */ 344535e40544aeb957d44fad75fbe5676effe03689Joe Onoratoclass BackupDataWriter 354535e40544aeb957d44fad75fbe5676effe03689Joe Onorato{ 364535e40544aeb957d44fad75fbe5676effe03689Joe Onoratopublic: 374535e40544aeb957d44fad75fbe5676effe03689Joe Onorato BackupDataWriter(int fd); 384535e40544aeb957d44fad75fbe5676effe03689Joe Onorato // does not close fd 394535e40544aeb957d44fad75fbe5676effe03689Joe Onorato ~BackupDataWriter(); 404535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 414535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t WriteAppHeader(const String8& packageName); 424535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 434535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t WriteEntityHeader(const String8& key, size_t dataSize); 444535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t WriteEntityData(const void* data, size_t size); 454535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 464535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t WriteAppFooter(); 474535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 484535e40544aeb957d44fad75fbe5676effe03689Joe Onoratoprivate: 494535e40544aeb957d44fad75fbe5676effe03689Joe Onorato explicit BackupDataWriter(); 504535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t write_padding_for(int n); 514535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 524535e40544aeb957d44fad75fbe5676effe03689Joe Onorato int m_fd; 534535e40544aeb957d44fad75fbe5676effe03689Joe Onorato status_t m_status; 544535e40544aeb957d44fad75fbe5676effe03689Joe Onorato ssize_t m_pos; 554535e40544aeb957d44fad75fbe5676effe03689Joe Onorato int m_entityCount; 564535e40544aeb957d44fad75fbe5676effe03689Joe Onorato}; 574535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 58c825d3ebd6ca66e65e63fdc76f032e08aa2a8e22Joe Onorato#define TEST_BACKUP_HELPERS 0 593ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 603ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#if TEST_BACKUP_HELPERS 613ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratoint backup_helper_test_empty(); 623ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratoint backup_helper_test_four(); 633ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onoratoint backup_helper_test_files(); 644535e40544aeb957d44fad75fbe5676effe03689Joe Onoratoint backup_helper_test_data_writer(); 653ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#endif 663ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato 674535e40544aeb957d44fad75fbe5676effe03689Joe Onorato} // namespace android 684535e40544aeb957d44fad75fbe5676effe03689Joe Onorato 693ad977b41c6e4ef30c2f4f316b909b742ffc04aaJoe Onorato#endif // _UTILS_BACKUP_HELPERS_H 70