OxL Справочник OxL
РусскийEnglish

fn lockFenced

Like lock; body receives the fencing token.

Example:

oxl✓ проверяется в CI
use std.cluster

fn main() io, net, time {
  let r = cluster.lockFenced("report") { fence => fence.valid() }
  match r {
    bool ok => print("valid: {ok}")
    LockTimeout _ => print("busy")
    NetError _ => print("unavailable")
  }
}
Вывод
valid: true
pub(api) fn lockFenced<T, effect F>(key: str, ttl: Duration = 30s, wait: Duration = 60s, body: fn(Fence) -> T F) -> T | LockTimeout | NetError  net, time, F

С версии. 1.0.0-beta

Параметры

ИмяТип
keystr
ttlDuration = 30s
waitDuration = 60s
bodyfn(Fence) -> T F

Возвращает

T

Ошибки

  • LockTimeout
  • NetError net, time, F
  • `LockTimeout` when the lock is not free within `wait`; `NetError` (`Unavailable`) when the lock service cannot be reached.

Эффекты

не объявлены (чистая, пока тело не говорит иное)

Определено в: std/cluster/cluster.oxl:224

См. также