FullBackupDataOutput.java revision 4da177489448ac20ad50b2ec339c9e1be66ccd77
1package android.app.backup;
2
3import android.os.ParcelFileDescriptor;
4
5/**
6 * Provides the interface through which a {@link BackupAgent} writes entire files
7 * to a full backup data set, via its {@link BackupAgent#onFullBackup(FullBackupDataOutput)}
8 * method.
9 */
10public class FullBackupDataOutput {
11    // Currently a name-scoping shim around BackupDataOutput
12    private final BackupDataOutput mData;
13    private final long mQuota;
14    private final int mTransportFlags;
15    private long mSize;
16
17    /**
18     * Returns the quota in bytes for the application's current backup operation.  The
19     * value can vary for each operation.
20     *
21     * @see BackupDataOutput#getQuota()
22     */
23    public long getQuota() {
24        return mQuota;
25    }
26
27    /**
28     * Returns flags with additional information about the backup transport. For supported flags see
29     * {@link android.app.backup.BackupAgent}
30     *
31     * @see BackupDataOutput#getTransportFlags()
32     */
33    public int getTransportFlags() {
34        return mTransportFlags;
35    }
36
37    /** @hide - used only in measure operation */
38    public FullBackupDataOutput(long quota) {
39        mData = null;
40        mQuota = quota;
41        mSize = 0;
42        mTransportFlags = 0;
43    }
44
45    /** @hide - used only in measure operation */
46    public FullBackupDataOutput(long quota, int transportFlags) {
47        mData = null;
48        mQuota = quota;
49        mSize = 0;
50        mTransportFlags = transportFlags;
51    }
52
53    /** @hide */
54    public FullBackupDataOutput(ParcelFileDescriptor fd, long quota) {
55        mData = new BackupDataOutput(fd.getFileDescriptor(), quota, 0);
56        mQuota = quota;
57        mTransportFlags = 0;
58    }
59
60    /** @hide */
61    public FullBackupDataOutput(ParcelFileDescriptor fd, long quota, int transportFlags) {
62        mData = new BackupDataOutput(fd.getFileDescriptor(), quota, transportFlags);
63        mQuota = quota;
64        mTransportFlags = transportFlags;
65    }
66
67    /** @hide - used only internally to the backup manager service's stream construction */
68    public FullBackupDataOutput(ParcelFileDescriptor fd) {
69        this(fd, /*quota=*/ -1, /*transportFlags=*/ 0);
70    }
71
72    /** @hide */
73    public BackupDataOutput getData() { return mData; }
74
75    /** @hide - used for measurement pass */
76    public void addSize(long size) {
77        if (size > 0) {
78            mSize += size;
79        }
80    }
81
82    /** @hide - used for measurement pass */
83    public long getSize() { return mSize; }
84}
85