pub trait File {
fn read(
&mut self,
offset: usize,
out_buf: *mut u8,
out_buf_size: usize,
option: FileReadOption
) -> Result<usize>;
fn write(
&mut self,
offset: usize,
buf: *const u8,
buf_size: usize,
option: FileWriteOption
) -> Result<()>;
fn flush(&mut self) -> Result<()>;
fn set_size(&mut self, size: usize) -> Result<()>;
fn get_size(&mut self) -> Result<usize>;
fn operate_range(
&mut self,
operation_id: OperationId,
offset: usize,
size: usize
) -> Result<FileQueryRangeInfo>;
fn operate_range_with_buffer(
&mut self,
operation_id: OperationId,
offset: usize,
size: usize,
in_buf: *const u8,
in_buf_size: usize,
out_buf: *mut u8,
out_buf_size: usize
) -> Result<()>;
}