close static method

AsyncReply<bool> close()
Close the warehouse. This function issues terminate trigger to all resources and stores.

Implementation

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

  for (var resource in _resources.values)
    if (!(resource is IStore))
      bag.add(resource.trigger(ResourceTrigger.Terminate));

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

  for (var resource in _resources.values)
    if (!(resource is IStore))
      bag.add(resource.trigger(ResourceTrigger.SystemTerminated));

  for (var store in _stores)
    bag.add(store.trigger(ResourceTrigger.SystemTerminated));

  bag.seal();

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

    rt.trigger(true);
  });

  return rt;
}