dispatchFetchConnection function

Future<void> dispatchFetchConnection(
  1. Engine engine,
  2. FetchRequestView request,
  3. ResponseAdapter response, {
  4. required RoutedNodeRuntimeInfo runtime,
  5. Uri? baseUri,
  6. Future<FetchWebSocketUpgrade> acceptWebSocket()?,
})

Dispatches a Fetch-style request through the streaming adapter path.

Hosts can implement ResponseAdapter over a native response stream to preserve progressive writes. This path does not buffer the full response.

Implementation

Future<void> dispatchFetchConnection(
  Engine engine,
  FetchRequestView request,
  ResponseAdapter response, {
  required RoutedNodeRuntimeInfo runtime,
  Uri? baseUri,
  Future<FetchWebSocketUpgrade> Function()? acceptWebSocket,
}) async {
  publishRoutedNodeLifecycle(
    engine,
    RoutedNodeLifecycleEvent(
      phase: RoutedNodeLifecyclePhase.requestStarted,
      info: runtime,
    ),
  );

  try {
    await engine.handleConnection(
      HttpConnection(
        _FetchRequestAdapter(
          request,
          baseUri: baseUri,
          accept: acceptWebSocket,
        ),
        response,
      ),
    );
    publishRoutedNodeLifecycle(
      engine,
      RoutedNodeLifecycleEvent(
        phase: RoutedNodeLifecyclePhase.requestFinished,
        info: runtime,
      ),
    );
  } catch (error, stackTrace) {
    publishRoutedNodeLifecycle(
      engine,
      RoutedNodeLifecycleEvent(
        phase: RoutedNodeLifecyclePhase.requestFailed,
        info: runtime,
        error: error,
        stackTrace: stackTrace,
      ),
    );
    rethrow;
  }
}