Перейти к содержанию

PROTOCOL

StorageDriver

public protocol StorageDriver: AnyObject

Abstract Storage Driver API

Describes both permanent (database, filesystem) and temporary (cache, memory) storage methods. SDK actively uses both storage strategies distinguished by name: * storage - permanent storage * cache - temporary storage

Example

 await write(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"), data: try serialize([ "foo": "boo" ]))

 let supperTry1 = await read(driver: storage, meta: StorageMeta(room: "323", topic: "supper"))

 XCTAssertEqual(supperTry1.flatMap({ try? deserialize([String : String].self, $0) }), [ "boo": "woo" ])

 let supperTry2 = await read(driver: storage, meta: StorageMeta(room: "323", topic: "supper"))

 XCTAssertEqual(supperTry2.flatMap({ try? deserialize([String : String].self, $0) }), [ "boo": "woo" ])

 let dinnerTry1 = await take(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"))

 XCTAssertEqual(dinnerTry1.flatMap({ try? deserialize([String : String].self, $0) }), [ "foo": "boo" ])

 let dinnerTry2 = await take(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"))

 XCTAssertEqual(dinnerTry2.flatMap({ try? deserialize([String : String].self, $0) }), nil)

Methods

write(meta:data:)

func write(meta: StorageMeta, data: StorageData) async

Write a unit of data into storage, uniquely identified by meta

If such unit of data already exists it is silently overwritten

Parameters

Name Description
meta StorageMeta composite identifier
data StorageData unit of data to insert

Returns

void

read(meta:)

func read(meta: StorageMeta) async -> StorageData?

Read data stored under provided meta

This method is typically used in permanent storage strategy

Parameters

Name Description
meta StorageMeta composite identifier

Returns

StorageData

stored data (StorageData), or null if not found

take(meta:)

func take(meta: StorageMeta) async -> StorageData?

Take data stored under provided meta and remove original

This method is typically used in temporary storage strategy and as a mean to delete stored entry

Parameters

Name Description
meta StorageMeta composite identifier

Returns

StorageData

stored data (StorageData), or null if not found