release method

Future<void> release(
  1. String serverId,
  2. String holder
)

holder is done with serverId. The connection closes only when the last holder lets go.

Implementation

Future<void> release(String serverId, String holder) async {
  final holders = _holders[serverId];
  holders?.remove(holder);
  if (holders != null && holders.isNotEmpty) {
    _logger.debug('Released — still held', {
      'serverId': serverId,
      'holder': holder,
      'holders': holders.length,
    });
    return;
  }
  _holders.remove(serverId);
  await disconnect(serverId);
}