shutdown function
Sends a shutdown request over a channel.
On the remote side, the corresponding channel must have been passed to DriftServer.serve for this setup to work. Also, the DriftServer must have been configured to allow remote-shutdowns.
Implementation
Future<void> shutdown(StreamChannel<Object?> channel, {bool serialize = true}) {
final comm = DriftCommunication(channel, serialize: serialize);
return comm
.request<void>(NoArgsRequest.terminateAll)
// Sending a terminate request will stop the server, so we won't get a
// response. This is expected and not an error we should throw.
.onError<ConnectionClosedException>((error, stackTrace) => null)
.whenComplete(comm.close);
}