rpc_blob 2.3.0 copy "rpc_blob: ^2.3.0" to clipboard
rpc_blob: ^2.3.0 copied to clipboard

Streamed blob storage contract and RPC wiring for rpc_dart (binary/object storage alongside rpc_data).

example/README.md

InMemoryBlobRepository Example #

Этот пример демонстрирует использование InMemoryBlobRepository — реализации IBlobRepository для хранения бинарных данных в памяти.

Особенности #

  • In-Memory хранение: Данные хранятся в памяти без использования файловой системы или БД
  • Полная реализация IBlobRepository: Поддержка всех операций blob-хранилища
  • Оптимистическая блокировка: Поддержка версионирования через expectedVersion
  • Потоковая передача: Данные передаются потоками для эффективности
  • Проверка контрольных сумм: SHA256 валидация данных
  • Pagination и фильтрация: Поддержка пагинации и префиксной фильтрации при листинге
  • Range-запросы: Чтение части данных blob

Использование #

Базовый пример #

import 'dart:convert';
import 'dart:typed_data';
import 'package:rpc_blob/rpc_blob.dart';

final repository = InMemoryBlobRepository();

// Запись blob
final data = Uint8List.fromList(utf8.encode('Hello, World!'));
final result = await repository.writeBlob(
  BlobWriteRequest(
    collection: 'documents',
    id: 'hello.txt',
    bytes: Stream.value(data),
    contentType: 'text/plain',
  ),
);

// Чтение метаданных
final descriptor = await repository.headBlob('documents', 'hello.txt');

// Чтение данных
final readResult = await repository.readBlob(
  BlobReadRequest(collection: 'documents', id: 'hello.txt'),
);
final content = await readResult!.bytes.collectBytes();

// Удаление
await repository.deleteBlob('documents', 'hello.txt');

// Закрытие
await repository.dispose();

Запуск примера #

cd packages/rpc_blob
dart run example/in_memory_example.dart

Тестирование #

cd packages/rpc_blob
dart test test/in_memory_blob_repository_test.dart

Сравнение с другими реализациями #

Реализация Хранилище Использование Персистентность
InMemoryBlobRepository RAM Тестирование, временное хранение Нет
SqliteBlobRepository SQLite DB Локальное хранение, embedded Да
S3BlobRepository S3/MinIO Production, распределенное хранилище Да

Параметры конструктора #

  • maxBlobBytes: Максимальный размер одного blob (optional)
  • readChunkBytes: Размер чанка при потоковом чтении (default: 256KB)
  • clock: Функция для получения времени (для тестирования)
final repository = InMemoryBlobRepository(
  maxBlobBytes: 10 * 1024 * 1024, // 10MB лимит
  readChunkBytes: 512 * 1024,      // 512KB чанки
);
0
likes
160
points
184
downloads

Documentation

API reference

Publisher

verified publisherrpc.nogipx.dev

Weekly Downloads

Streamed blob storage contract and RPC wiring for rpc_dart (binary/object storage alongside rpc_data).

Homepage
Repository (GitHub)
View/report issues

Topics

#rpc #storage #blob

License

MIT (license)

Dependencies

async, crypto, equatable, meta, rpc_dart

More

Packages that depend on rpc_blob