Files
bsdiff/buffer_file.h
Alex Deymo ddf9db5293 Update Makefile to build shared libraries.
The Makefile didn't build libbspatch and libbsdiff. This patch includes
those libraries in the Makefile and moves the header files exposed by
those to an include/bsdiff subdirectory following the Android
convention so calling program can include "bsdiff/bspatch.h" avoiding
any collision with other libraries.

The Android.mk is updated to export the new include path while keeping
the old style until calling programs are updated.

The new Makefile allows Chromium OS to build the new libraries.

Bug: None
Test: FEATURES=test emerge-link bsdiff; sudo emerge bsdiff
Test: mmma external/bsdiff

Change-Id: I2ea9251eb224e9418fe236e4c4c9c5621853f590
2017-05-03 18:29:10 -07:00

42 lines
1.2 KiB
C++

// Copyright 2016 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_BUFFER_FILE_H_
#define _BSDIFF_BUFFER_FILE_H_
#include <memory>
#include <vector>
#include "bsdiff/file_interface.h"
namespace bsdiff {
class BufferFile : public FileInterface {
public:
// Creates a write only BufferFile based on the underlying |file| passed.
// The BufferFile will cache all the write in a buffer and write everything
// to |file| at once upon closing. Read and Seek are not supported.
// |size| should be the estimated total file size, it is used to reserve
// buffer space.
BufferFile(std::unique_ptr<FileInterface> file, size_t size);
~BufferFile() override;
// FileInterface overrides.
bool Read(void* buf, size_t count, size_t* bytes_read) override;
bool Write(const void* buf, size_t count, size_t* bytes_written) override;
bool Seek(off_t pos) override;
bool Close() override;
bool GetSize(uint64_t* size) override;
private:
// The underlying FileInterace instance.
std::unique_ptr<FileInterface> file_ = nullptr;
std::vector<uint8_t> buffer_;
};
} // namespace bsdiff
#endif // _BSDIFF_BUFFER_FILE_H_