You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
// Copyright 2017 The Chromium OS Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef _BSDIFF_PATCH_WRITER_INTERFACE_H_
|
|
#define _BSDIFF_PATCH_WRITER_INTERFACE_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "bsdiff/control_entry.h"
|
|
|
|
namespace bsdiff {
|
|
|
|
enum class BsdiffFormat {
|
|
kLegacy,
|
|
kBsdf2,
|
|
kEndsley,
|
|
};
|
|
|
|
class PatchWriterInterface {
|
|
public:
|
|
virtual ~PatchWriterInterface() = default;
|
|
|
|
// Initialize the patch writer for a patch where the new file will have
|
|
// |new_size| bytes.
|
|
virtual bool Init(size_t new_size) = 0;
|
|
|
|
// Write the passed |data| buffer of length |size| to the Diff or Extra
|
|
// streams respectively. Each method can be called independently from each
|
|
// other and calls don't need to be a correlation with the AddControlEntry()
|
|
// until Close() is called.
|
|
virtual bool WriteDiffStream(const uint8_t* data, size_t size) = 0;
|
|
virtual bool WriteExtraStream(const uint8_t* data, size_t size) = 0;
|
|
|
|
// Add a new control triplet entry to the patch. These triplets may be added
|
|
// at any point before calling Close(), regardless of whether the
|
|
// corresponding WriteDiffStream() and WriteExtraStream() have been called
|
|
// yet.
|
|
virtual bool AddControlEntry(const ControlEntry& entry) = 0;
|
|
|
|
// Finalize the patch writing process and close the file.
|
|
virtual bool Close() = 0;
|
|
|
|
protected:
|
|
PatchWriterInterface() = default;
|
|
};
|
|
|
|
} // namespace bsdiff
|
|
|
|
#endif // _BSDIFF_PATCH_WRITER_INTERFACE_H_
|