// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import "dart:io";

void main(args) {
  int usr1Count = int.parse(args[0]);
  int usr2Count = int.parse(args[1]);
  var sub1;
  var sub2;
  void check() {
    if (usr1Count < 0 || usr2Count < 0) exit(1);
    if (usr1Count == 0 && usr2Count == 0) {
      sub1.cancel();
      sub2.cancel();
    }
    print("ready");
  }

  sub1 = ProcessSignal.sigusr1.watch().listen((signal) {
    if (signal != ProcessSignal.sigusr1) exit(1);
    usr1Count--;
    check();
  });
  sub2 = ProcessSignal.sigusr2.watch().listen((signal) {
    if (signal != ProcessSignal.sigusr2) exit(1);
    usr2Count--;
    check();
  });
  check();
}
