open static method

AsyncReply<bool> open()
Open the warehouse. This function issues the initialize trigger to all stores and resources.

Implementation

static AsyncReply<bool> open() {
  var bag = new AsyncBag<bool>();

  for (var s in _stores) bag.add(s.trigger(ResourceTrigger.Initialize));

  bag.seal();

  var rt = new AsyncReply<bool>();
  bag.then((x) {
    for (var b in x)
      if (b == null || b == false) {
        rt.trigger(false);
        return;
      }

    var rBag = new AsyncBag<bool>();
    for (var rk in _resources.keys)
      rBag.add((_resources[rk] as IResource)
          .trigger(ResourceTrigger.SystemInitialized));

    rBag.seal();

    rBag.then((y) {
      for (var b in y)
        if (b == null || b == false) {
          rt.trigger(false);
          return;
        }

      rt.trigger(true);
      _warehouseIsOpen = true;
    });
  });

  return rt;
}