buildWorkerErrorResponse function
Response sent when a worker WorkerRequest fails with an exception.
Isolated for unit tests — production path uses _sendErrorResponse.
Implementation
@visibleForTesting
WorkerResponse buildWorkerErrorResponse(WorkerRequest request, String error) {
final id = request.requestId;
switch (request) {
case InitializeRequest():
return InitializeResponse(id, success: false);
case ValidateConnectionStringRequest():
return ValidateConnectionStringResponse(
id,
isValid: false,
errorMessage: error,
);
case ConnectRequest():
return ConnectResponse(id, 0, error: error);
case DisconnectRequest():
case CancelStatementRequest():
case CloseStatementRequest():
case PoolReleaseConnectionRequest():
case PoolHealthCheckRequest():
case PoolSetSizeRequest():
case PoolCloseRequest():
case SetLogLevelRequest():
case CommitTransactionRequest():
case RollbackTransactionRequest():
case SavepointCreateRequest():
case SavepointRollbackRequest():
case SavepointReleaseRequest():
case AuditEnableRequest():
case AuditClearRequest():
case AsyncCancelRequest():
case AsyncFreeRequest():
case StreamCancelRequest():
case MetadataCacheEnableRequest():
case MetadataCacheClearRequest():
return BoolResponse(id, value: false);
case ExecuteQueryParamsRequest():
case ExecuteQueryMultiRequest():
case ExecuteQueryMultiParamsRequest():
case ExecutePreparedRequest():
case CatalogTablesRequest():
case CatalogColumnsRequest():
case CatalogTypeInfoRequest():
case CatalogPrimaryKeysRequest():
case CatalogForeignKeysRequest():
case CatalogIndexesRequest():
case AsyncGetResultRequest():
return QueryResponse(id, error: error);
case BeginTransactionRequest():
case PrepareRequest():
case PoolCreateRequest():
case PoolGetConnectionRequest():
case StreamStartRequest():
case StreamStartBatchedRequest():
case StreamStartAsyncRequest():
case StreamMultiStartBatchedRequest():
case StreamMultiStartAsyncRequest():
case ClearAllStatementsRequest():
case ExecuteAsyncStartRequest():
case AsyncPollRequest():
case StreamPollAsyncRequest():
return IntResponse(id, 0);
case StreamFetchRequest():
return StreamFetchResponse(
id,
success: false,
error: error,
);
case StreamCloseRequest():
return BoolResponse(id, value: false);
case BulkInsertArrayRequest():
case BulkInsertParallelRequest():
return IntResponse(id, -1);
case PoolGetStateRequest():
return PoolStateResponse(id, error: error);
case GetDriverCapabilitiesRequest():
case GetConnectionDbmsInfoRequest():
case PoolGetStateJsonRequest():
return AuditPayloadResponse(id, error: error);
case GetVersionRequest():
return VersionResponse(id);
case GetMetricsRequest():
return MetricsResponse(id, error: error);
case GetErrorRequest():
return GetErrorResponse(id, error);
case GetStructuredErrorRequest():
case GetStructuredErrorForConnectionRequest():
return StructuredErrorResponse(id, message: error, error: error);
case DetectDriverRequest():
return DetectDriverResponse(id, null);
case AuditGetEventsRequest():
case AuditGetStatusRequest():
case MetadataCacheStatsRequest():
return AuditPayloadResponse(id, error: error);
case GetCacheMetricsRequest():
return CacheMetricsResponse(id, error: error);
case ClearCacheRequest():
return ClearCacheResponse(id, error: error);
}
}