5#include "../Common/ResultErrorFormatter.h"
12inline ResultErrorFormat formatAwaitError(
AwaitError error, Span<char> output)
14 ResultErrorFormatter formatter(output);
17 case AwaitError::Cancelled: formatter.append(
"Awaited operation was cancelled");
break;
18 case AwaitError::WrongEventLoop: formatter.append(
"Task belongs to another event loop");
break;
19 case AwaitError::AllocatorAlreadyOpen: formatter.append(
"Allocator is already open");
break;
20 case AwaitError::AllocatorStorageEmpty: formatter.append(
"Allocator storage is empty");
break;
21 case AwaitError::AllocatorReservationEmpty: formatter.append(
"Allocator reservation size is zero");
break;
22 case AwaitError::AllocatorReservationFailed: formatter.append(
"Allocator memory could not be reserved");
break;
23 case AwaitError::AllocatorCommitFailed: formatter.append(
"Allocator memory could not be committed");
break;
24 case AwaitError::AllocatorHasLiveAllocations: formatter.append(
"Allocator still has live allocations");
break;
25 case AwaitError::InvalidTask: formatter.append(
"Task is invalid");
break;
26 case AwaitError::TaskNotCompleted: formatter.append(
"Task has not completed");
break;
27 case AwaitError::TaskNotStarted: formatter.append(
"Task has not started");
break;
28 case AwaitError::TaskAlreadyStarted: formatter.append(
"Task has already started");
break;
29 case AwaitError::TaskCancellationUnavailable: formatter.append(
"Task cannot be cancelled now");
break;
30 case AwaitError::UnhandledException: formatter.append(
"Task encountered an unhandled exception");
break;
31 case AwaitError::SocketSendNoProgress: formatter.append(
"Socket send made no progress");
break;
32 case AwaitError::SocketReceiveIncomplete:
33 formatter.append(
"Socket disconnected before the requested data arrived");
35 case AwaitError::SocketReceiveNoProgress: formatter.append(
"Socket receive made no progress");
break;
36 case AwaitError::EmptyReceiveBuffer: formatter.append(
"Receive buffer is empty");
break;
37 case AwaitError::ReceiveLineBufferExhausted:
38 formatter.append(
"Receive buffer filled before a newline arrived");
40 case AwaitError::FileReadNoProgress: formatter.append(
"File read made no progress");
break;
41 case AwaitError::OperationUnsupported: formatter.append(
"Operation is unsupported");
break;
42 case AwaitError::InvalidFileHandle: formatter.append(
"File handle is invalid");
break;
43 case AwaitError::MissingOutputFile: formatter.append(
"Output file is missing");
break;
44 case AwaitError::MissingFile: formatter.append(
"File is missing");
break;
45 case AwaitError::MissingReadResult: formatter.append(
"File read result is missing");
break;
46 case AwaitError::InvalidFileSystemOperation: formatter.append(
"File-system operation is invalid");
break;
47 case AwaitError::TaskGroupStorageFull: formatter.append(
"Task group storage is full");
break;
48 case AwaitError::TaskGroupResultStorageTooSmall: formatter.append(
"Task group result storage is too small");
break;
49 case AwaitError::InactiveTask: formatter.append(
"Task is inactive");
break;
50 case AwaitError::TaskGroupEmpty: formatter.append(
"Task group is empty");
break;
51 case AwaitError::TaskAlreadyAwaited: formatter.append(
"Task is already being awaited");
break;
52 case AwaitError::RegistryStorageFull: formatter.append(
"Task registry storage is full");
break;
53 case AwaitError::RegistryEmpty: formatter.append(
"Task registry is empty");
break;
54 case AwaitError::TaskTimedOut: formatter.append(
"Task timed out");
break;
55 case AwaitError::InvalidWorkCallback: formatter.append(
"Work callback is invalid");
break;
56 default:
return ResultErrorFormatter::failure(ResultErrorFormatStatus::UnknownError, output);
58 return formatter.finish();
61inline ResultErrorFormat formatAwaitError(Result result, Span<char> output)
64 return ResultErrorFormatter::failure(ResultErrorFormatStatus::NotAnError, output);
65 if (result.category() != AwaitResultCategory)
66 return ResultErrorFormatter::failure(ResultErrorFormatStatus::ForeignCategory, output);
67 return formatAwaitError(
static_cast<AwaitError>(result.errorValue()), output);
AwaitError
Stable portable failures owned by Await.
Definition AwaitError.h:15