// 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_SINK_FILE_H_
#define _BSDIFF_SINK_FILE_H_

#include <stdint.h>

#include <functional>

#include "file_interface.h"

using sink_func = std::function<size_t(const uint8_t*, size_t)>;

namespace bsdiff {

class SinkFile : public FileInterface {
 public:
  // Creates a SinkFile based on the underlying |sink| function passed.
  // The SinkFile will call |sink| function upon write.
  // Read, Seek and GetSize are not supported.
  explicit SinkFile(const sink_func& sink);

  ~SinkFile() = default;

  // 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 sink() function used to write data.
  const sink_func& sink_;
};

}  // namespace bsdiff

#endif  // _BSDIFF_SINK_FILE_H_
