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