| Предыдущий | Следующий |
| EDESTADDRREQ | ENOSYS |
ECANCELED
Отмена — это переход состояния
ECANCELED означает, что операция завершилась отменой, а не обычным успехом, отказом другой стороны или истечением срока. Сам код не сообщает, были ли переданы данные, дошёл ли запрос до внешней системы и выполнились ли уже обратные вызовы завершения.
Безопасное восстановление зависит от машины состояний операции. Зафиксируйте инициатора отмены, достигнутый этап и владение буферами, дескрипторами и обратными вызовами. Повторение неидемпотентного запроса без знания о том, стал ли исходный запрос видимым, может продублировать работу.
Вопросы, на которые нужно ответить до повторной попытки
- Была ли операция поставлена в очередь, запущена, частично завершена или уже зафиксирована в момент запроса отмены?
- Кому теперь принадлежат связанные буферы и объекты завершения и возможны ли поздние завершения?
- Есть ли у высокоуровневого протокола ключ идемпотентности или другой способ обнаружить предыдущий эффект?
Ссылки
- Apple XNU: определения errno Darwin
- POSIX: aio_cancel()
- Apple: справочник системных вызовов ECANCELED
Нужно найти другой код? Найти другой код состояния или ошибки.
