start method

Future<void> start({
  1. int preferredPort = 0,
})

Starts the proxy server on an available port

Implementation

Future<void> start({int preferredPort = 0}) async {
  if (_isRunning) return;

  await _cacheManager.emptyCache();

  try {
    if (preferredPort > 0) {
      // First try the preferred port
      try {
        _server = await HttpServer.bind(
          InternetAddress.loopbackIPv4,
          preferredPort,
        );
        _port = preferredPort;
      } catch (e) {
        log('Preferred port $preferredPort unavailable, trying alternatives');
        await _findAvailablePort();
      }
    } else {
      // Try to find an available port in the range or let system choose
      await _findAvailablePort();
    }

    _isRunning = true;
    log('Video proxy server started on port $_port');

    _server!.listen((HttpRequest request) async {
      try {
        await _handleRequest(request);
      } catch (e) {
        log('Error handling request: $e');
        request.response.statusCode = HttpStatus.internalServerError;
        await request.response.close();
      }
    });
  } catch (e) {
    log('Failed to start video proxy server: $e');
    _isRunning = false;
  }
}