close method

  1. @override
int close(
  1. int fd
)
override

close(2).

Implementation

@override
int close(int fd) {
  unawaited(_eventReaders.remove(fd)?.controller.close() ?? Future.value());
  final request = _requestFds.remove(fd);
  if (request != null) {
    request.offsets.forEach(request.chip.owners.remove);
    for (final offset in request.offsets) {
      _emitInfoChange(request.chip, offset, LineChangeKind.released.value);
    }
    return 0;
  }
  // A chip descriptor going away takes its watches with it.
  _watched.remove(fd);
  unawaited(_infoReaders.remove(fd)?.close() ?? Future.value());
  if (_chipFds.remove(fd) != null) return 0;
  _errno = Errno.ebadf;
  return -1;
}