23 std::shared_ptr<io::serialize::DictionaryValue>
serialize()
const;
38 [[nodiscard]]
virtual bool read(
const BlobSlice &slice,
void *r_data)
const = 0;
84 struct StoredByRuntimeValue {
94 std::shared_ptr<io::serialize::DictionaryValue> io_data;
121 FunctionRef<std::shared_ptr<io::serialize::DictionaryValue>()> write_fn);
140 mutable std::mutex mutex_;
154 [[nodiscard]] std::optional<ImplicitSharingInfoAndData>
read_shared(
156 FunctionRef<std::optional<ImplicitSharingInfoAndData>()> read_fn)
const;
164 const std::string blobs_dir_;
165 mutable std::mutex mutex_;
170 [[nodiscard]]
bool read(
const BlobSlice &slice,
void *r_data)
const override;
179 std::string blob_dir_;
181 std::string base_name_;
182 std::string blob_name_;
184 std::fstream blob_stream_;
188 int independent_file_count_ = 0;
205 std::unique_ptr<std::ostringstream>
stream;
210 std::string base_name_;
211 std::string blob_name_;
213 int independent_file_count_ = 0;
225 return stream_by_name_;
239 [[nodiscard]]
bool read(
const BlobSlice &slice,
void *r_data)
const override;
245 std::ostream &r_stream);
File and directory operations.
std::optional< ImplicitSharingInfoAndData > read_shared(const io::serialize::DictionaryValue &io_data, FunctionRef< std::optional< ImplicitSharingInfoAndData >()> read_fn) const
virtual bool read_as_stream(const BlobSlice &slice, FunctionRef< bool(std::istream &)> fn) const
virtual ~BlobReader()=default
virtual bool read(const BlobSlice &slice, void *r_data) const =0
std::shared_ptr< io::serialize::DictionaryValue > write_implicitly_shared(const ImplicitSharingInfo *sharing_info, FunctionRef< std::shared_ptr< io::serialize::DictionaryValue >()> write_fn)
std::shared_ptr< io::serialize::DictionaryValue > write_deduplicated(BlobWriter &writer, const void *data, int64_t size_in_bytes)
virtual BlobSlice write(const void *data, int64_t size)=0
virtual BlobSlice write_as_stream(StringRef file_extension, FunctionRef< void(std::ostream &)> fn)
int64_t total_written_size_
virtual ~BlobWriter()=default
int64_t written_size() const
bool read(const BlobSlice &slice, void *r_data) const override
DiskBlobReader(std::string blobs_dir)
DiskBlobWriter(std::string blob_dir, std::string base_name)
BlobSlice write_as_stream(StringRef file_extension, FunctionRef< void(std::ostream &)> fn) override
BlobSlice write(const void *data, int64_t size) override
void add(StringRef name, Span< std::byte > blob)
bool read(const BlobSlice &slice, void *r_data) const override
const Map< std::string, OutputStream > & get_stream_by_name() const
MemoryBlobWriter(std::string base_name)
BlobSlice write(const void *data, int64_t size) override
BlobSlice write_as_stream(StringRef file_extension, FunctionRef< void(std::ostream &)> fn) override
void serialize_bake(const BakeState &bake_state, BlobWriter &blob_writer, BlobWriteSharing &blob_sharing, std::ostream &r_stream)
std::optional< BakeState > deserialize_bake(std::istream &stream, const BlobReader &blob_reader, const BlobReadSharing &blob_sharing)
std::shared_ptr< io::serialize::DictionaryValue > serialize() const
static std::optional< BlobSlice > deserialize(const io::serialize::DictionaryValue &io_slice)
std::unique_ptr< std::ostringstream > stream