getStructuredErrorForConnection method
Gets structured error for a specific connection (per-connection isolation).
When connectionId != 0, returns only that connection's error.
Returns null when API is unavailable, no error for this connection,
or on FFI failure.
Implementation
StructuredError? getStructuredErrorForConnection(int connectionId) {
if (!_bindings.supportsStructuredErrorForConnection) {
return null;
}
var size = initialBufferSize;
const limit = maxBufferSize;
while (size <= limit) {
final buf = malloc<ffi.Uint8>(size);
final outWritten = malloc<ffi.Uint32>()..value = 0;
try {
final code = _bindings.odbc_get_structured_error_for_connection(
connectionId,
buf,
size,
outWritten,
);
if (code == null) return null;
if (code == 1) return null; // No structured error for this connection
if (code == -1) return null; // FFI error
if (code == -2) {
size *= 2;
continue;
}
if (code == 0) {
final n = outWritten.value;
if (n == 0) return null;
final data = Uint8List.fromList(buf.asTypedList(n));
return StructuredError.deserialize(data);
}
return null;
} finally {
malloc
..free(buf)
..free(outWritten);
}
}
return null;
}