23 explicit IoCache(uint64_t cache_size);
32 uint64_t
Read(
void* buffer, uint64_t size);
41 uint64_t
Write(
const void* buffer, uint64_t size);
68 uint64_t BytesCachedInternal();
69 uint64_t BytesFreeInternal();
71 const uint64_t cache_size_;
73 absl::CondVar read_event_ ABSL_GUARDED_BY(mutex_);
74 absl::CondVar write_event_ ABSL_GUARDED_BY(mutex_);
75 std::vector<uint8_t> circular_buffer_ ABSL_GUARDED_BY(mutex_);
76 const uint8_t* end_ptr_ ABSL_GUARDED_BY(mutex_);
77 uint8_t* r_ptr_ ABSL_GUARDED_BY(mutex_);
78 uint8_t* w_ptr_ ABSL_GUARDED_BY(mutex_);
79 bool closed_ ABSL_GUARDED_BY(mutex_);
81 DISALLOW_COPY_AND_ASSIGN(
IoCache);