singletonFw<T> method

Future<Fw<T>> singletonFw<T>({
  1. required int id,
  2. required BiDi<List<byte>, T> bidi,
  3. required T defaultValue,
  4. required DspReg disposers,
})

Implementation

Future<Fw<T>> singletonFw<T>({
  required int id,
  required BiDi<List<byte>, T> bidi,
  required T defaultValue,
  required DspReg disposers,
}) async {
  return singletonRecords.blobRecordFw(
    id: id,
    createRecord: SingletonRecord.new,
    bidi: bidi,
    defaultValue: defaultValue,
    disposers: disposers,
  );

  //
  // T parse(SingletonRecord? record) =>
  //     record?.blob.let(bidi.forward) ?? defaultValue;
  //
  // final result = fw(
  //   parse(
  //     await singletonRecords.get(id),
  //   ),
  // );
  //
  // final listening = singletonRecords
  //     .watchObject(
  //   id,
  //   fireImmediately: true,
  // )
  //     .map(parse)
  //     .listen(result.set);
  //
  // final updates = StreamController<T>()
  //   ..closeBy(disposers);
  //
  // updates.stream.asyncForEach((value) async {
  //   await writeTxn(() async {
  //     await singletonRecords.put(
  //       SingletonRecord()
  //         ..id = id
  //         ..blob = bidi.backward(value),
  //     );
  //   });
  // }).awaitBy(disposers);
  //
  // disposers.add(() async {
  //   await listening.cancel();
  //   await result.dispose();
  // });
  //
  // return mk.Fwi.fromFr(
  //   fr: result,
  //   set: (value) {
  //     updates.add(value);
  //     result.set(value);
  //   },
  // );
}