Skip to content

Commit

Permalink
Add async_store_encoded_chunk
Browse files Browse the repository at this point in the history
  • Loading branch information
sk1p committed Aug 30, 2024
1 parent 16992cc commit f592eae
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions src/array/array_async_writable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -225,27 +225,38 @@ impl<TStorage: ?Sized + AsyncWritableStorageTraits + 'static> Array<TStorage> {
if is_fill_value {
self.async_erase_chunk(chunk_indices).await?;
} else {
let storage_handle = Arc::new(StorageHandle::new(self.storage.clone()));
let storage_transformer = self
.storage_transformers()
.create_async_writable_transformer(storage_handle);
let chunk_encoded = self
.codecs()
.encode(chunk_bytes, &chunk_array_representation, options)
.map_err(ArrayError::CodecError)?;
let chunk_encoded = AsyncBytes::from(chunk_encoded.to_vec());
crate::storage::async_store_chunk(
&*storage_transformer,
self.path(),
chunk_indices,
self.chunk_key_encoding(),
chunk_encoded,
)
.await?;
unsafe { self.async_store_encoded_chunk(chunk_indices, chunk_encoded) }.await?;
}
Ok(())
}

/// Async variant of [`store_encoded_chunk`](Array::store_encoded_chunk)0
#[allow(clippy::missing_errors_doc)]
pub async unsafe fn async_store_encoded_chunk(
&self,
chunk_indices: &[u64],
encoded_chunk_bytes: AsyncBytes,
) -> Result<(), ArrayError> {
let storage_handle = Arc::new(StorageHandle::new(self.storage.clone()));
let storage_transformer = self
.storage_transformers()
.create_async_writable_transformer(storage_handle);
crate::storage::async_store_chunk(
&*storage_transformer,
self.path(),
chunk_indices,
self.chunk_key_encoding(),
encoded_chunk_bytes,
)
.await?;

Check warning on line 256 in src/array/array_async_writable.rs

View check run for this annotation

Codecov / codecov/patch

src/array/array_async_writable.rs#L256

Added line #L256 was not covered by tests
Ok(())
}

/// Async variant of [`store_chunk_elements_opt`](Array::store_chunk_elements_opt).
#[allow(clippy::missing_errors_doc)]
pub async fn async_store_chunk_elements_opt<T: Element + Send + Sync>(
Expand Down

0 comments on commit f592eae

Please sign in to comment.