GruntChannel constructor

GruntChannel({
  1. DuplexChannel? boss,
  2. Grunt? grunt,
})

Implementation

GruntChannel({
  this.boss,
  this.grunt,
}) {
  _sub = boss!.inbound.listen(
      (decodedMessage) {
        try {
          print("got from supervisor: ${decodedMessage.messageCodeInfo}");
          if (decodedMessage.payload != null) {
            print("  > payload: ${decodedMessage.payload}");
          }

          switch (decodedMessage.messageCode) {
            case SupervisorMessages.kInitialize:
              print("  > initialize");
              // grunt!.initialize(this);
              break;
            case SupervisorMessages.kStart:
              print("  > start");
              grunt!.start(decodedMessage.payload);
              break;
            case SupervisorMessages.kStop:
              print("  > stop");
              grunt!.stop();
              break;
            case SupervisorMessages.kAck:
              if (!_ready.isCompleted) {
                _ready.complete();
              }
              print("  > ack");
              break;
            default:
              log.info("Invalid message: ${decodedMessage.messageCodeInfo}");
          }
        } catch (e, stack) {
          print("ERROR!: $e");
          print(stack);
        }
      },
      cancelOnError: false,
      onDone: () {
        print("Boss stream is done!");
      },
      onError: (err, stac) {
        print("Error with boss $err");
        print(stac);
      });

  startupPing();
  grunt!.initialize(this);
}