AcpHttpClientTransport constructor
AcpHttpClientTransport(
- Uri endpoint, {
- AcpHttpAdapter? adapter,
- AcpHttpHeaders headers = const AcpHttpHeaders(),
- AcpHttpCookiePolicy cookiePolicy = AcpHttpCookiePolicy.include,
- AcpAffinityCookieStore? cookieStore,
- AcpHttpClientLimits limits = const AcpHttpClientLimits(),
- JsonRpcCodec codec = const JsonRpcCodec(),
- AcpRemoteDiagnosticHandler? onDiagnostic,
Creates a lazy transport for endpoint.
Supplying adapter or cookieStore keeps ownership with the caller.
Implementation
AcpHttpClientTransport(
this.endpoint, {
AcpHttpAdapter? adapter,
AcpHttpHeaders headers = const AcpHttpHeaders(),
AcpHttpCookiePolicy cookiePolicy = AcpHttpCookiePolicy.include,
AcpAffinityCookieStore? cookieStore,
AcpHttpClientLimits limits = const AcpHttpClientLimits(),
JsonRpcCodec codec = const JsonRpcCodec(),
AcpRemoteDiagnosticHandler? onDiagnostic,
}) : _adapter = adapter ?? createPlatformHttpAdapter(),
_ownsAdapter = adapter == null,
_headers = headers,
_cookiePolicy = cookiePolicy,
_cookieStore = cookieStore ?? AcpAffinityCookieStore(),
_ownsCookieStore = cookieStore == null,
_limits = limits,
_codec = codec,
_onDiagnostic = onDiagnostic {
if (endpoint.scheme != 'http' && endpoint.scheme != 'https') {
throw ArgumentError.value(endpoint, 'endpoint', 'must use http or https');
}
limits.validate();
// The controller is an owned field and is closed by [close] or [_fail].
// ignore: close_sinks
late final StreamController<JsonRpcWireMessage> incoming;
incoming = StreamController<JsonRpcWireMessage>(onCancel: _cancelReadable);
_incoming = incoming;
stream = AcpDuplexStream<JsonRpcWireMessage>(
readable: incoming.stream,
writable: AcpWritable<JsonRpcWireMessage>(
write: _enqueueWrite,
close: close,
),
);
}