onCommandResult method
void
onCommandResult(
- ImapResponse imapResponse
Processes the command result response from the server.
Implementation
void onCommandResult(ImapResponse imapResponse) {
final line = imapResponse.parseText;
final spaceIndex = line.indexOf(' ');
if (spaceIndex != -1) {
final commandId = line.substring(0, spaceIndex);
final task = _tasks[commandId];
if (task != null) {
if (task == _currentCommandTask) {
_currentCommandTask = null;
}
imapResponse.parseText = line.substring(spaceIndex + 1);
final response = task.parse(imapResponse);
try {
if (!task.completer.isCompleted) {
if (response.isOkStatus) {
task.completer.complete(response.result);
} else {
task.completer
.completeError(ImapException(this, response.details));
}
}
} catch (e, s) {
print('Unable to complete task ${task.command.logText}: $e $s');
print('response: ${imapResponse.parseText}');
print('result: ${response.result}');
try {
task.completer.completeError(ImapException(this, response.details));
} on Exception {
// ignore
}
}
} else {
log('ERROR: no task found for command [$commandId]');
}
} else {
log('unexpected SERVER response: [$imapResponse]');
}
}