28 std::shared_ptr<io::serialize::DictionaryValue>
serialize()
const;
43 [[nodiscard]]
virtual bool read(
const BlobSlice &slice,
void *r_data)
const = 0;
89 struct StoredByRuntimeValue {
99 std::shared_ptr<io::serialize::DictionaryValue> io_data;
126 FunctionRef<std::shared_ptr<io::serialize::DictionaryValue>()> write_fn);
145 mutable Mutex mutex_;
159 [[nodiscard]] std::optional<ImplicitSharingInfoAndData>
read_shared(
161 FunctionRef<std::optional<ImplicitSharingInfoAndData>()> read_fn)
const;
169 const std::string blobs_dir_;
170 mutable Mutex mutex_;
175 [[nodiscard]]
bool read(
const BlobSlice &slice,
void *r_data)
const override;
184 std::string blob_dir_;
186 std::string base_name_;
187 std::string blob_name_;
189 std::fstream blob_stream_;
193 int independent_file_count_ = 0;
210 std::unique_ptr<std::ostringstream>
stream;
215 std::string base_name_;
216 std::string blob_name_;
218 int independent_file_count_ = 0;
230 return stream_by_name_;
244 [[nodiscard]]
bool read(
const BlobSlice &slice,
void *r_data)
const override;
250 std::ostream &r_stream);
File and directory operations.
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
NonCopyable(const NonCopyable &other)=delete
NonMovable(NonMovable &&other)=delete
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
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)
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