getStreamOptions function
Implementation
StreamOptions getStreamOptions(StreamSettings stream) {
final options = StreamOptions(type: stream.network);
switch (stream.network) {
case StreamNetwork.raw:
final raw = stream.rawSettings ?? RawSettings();
final header = raw.header;
if (header is HttpSettingsHeaders) {
options.path = header.request.path.firstOrNull;
options.host = searchHost(header.request.headers);
options.headerType = 'http';
}
break;
case StreamNetwork.kcp:
final kcp = stream.kcpSettings ?? KcpSettings();
final header = kcp.header ?? KcpHeaders();
options.headerType = $KcpHeaderTypeEnum.encode(header.type);
options.seed = kcp.seed;
break;
case StreamNetwork.ws:
final ws = stream.wsSettings ?? WsSettings();
options.path = ws.path;
options.host = ws.host ?? searchHost(ws.headers);
break;
case StreamNetwork.grpc:
final grpc = stream.grpcSettings ?? GrpcSettings();
options.serviceName = grpc.serviceName;
options.authority = grpc.authority;
if (grpc.multiMode) {
options.mode = 'multi';
}
break;
case StreamNetwork.httpUpgrade:
final http = stream.httpUpgradeSettings ?? HttpUpgradeSettings();
options.path = http.path;
options.host = http.host ?? searchHost(http.headers);
break;
case StreamNetwork.xhttp:
final xhttp = stream.xhttpSettings ?? XHttpSettings();
options.path = xhttp.path;
options.host = xhttp.host ?? searchHost(xhttp.headers);
options.mode = $XHttpModeEnum.encode(xhttp.mode);
break;
default:
break;
}
return options;
}