initialize method
Initializes the worker isolate and ODBC environment.
- Spawns a new isolate via Isolate.spawn.
- Loads the ODBC driver in the worker.
- Initializes the ODBC environment there.
- Returns when the worker is ready to accept requests.
One-time cost is typically ~50–100 ms. Safe to call multiple times; later calls return immediately if already initialized.
Returns true if initialization succeeds, false otherwise.
Implementation
Future<bool> initialize() {
if (_isInitialized) return Future.value(true);
final existing = _initialization;
if (existing != null) {
return _observeInitialization(existing, _initializationContext!);
}
_isShuttingDown = false;
final generation = _generation;
late NativeCallContext context;
final future = NativeCallContext.capture(() {
context = NativeCallContext.current!;
return _initializeGeneration(generation);
});
_initialization = future;
_initializationContext = context;
return _observeInitialization(future, context);
}