classifyUDXException static method

UDXTransportException classifyUDXException(
  1. dynamic error,
  2. String context,
  3. StackTrace stackTrace
)

Classifies UDX exceptions into appropriate exception types

Implementation

static UDXTransportException classifyUDXException(
  dynamic error,
  String context,
  StackTrace stackTrace,
) {
  if (error is UDXTransportException) {
    return error; // Already classified
  }

  if (error is StateError) {
    final message = error.message;
    if (message.contains('permanently lost') || message.contains('packet.*lost')) {
      return UDXPacketLossException(context, error);
    }
    return UDXConnectionException(
      'UDX state error: $message',
      context,
      error,
      isTransient: false,
    );
  }

  if (error is SocketException) {
    return UDXConnectionException(
      'UDX socket error: ${error.message}',
      context,
      error,
      isTransient: _isTransientSocketError(error),
    );
  }

  if (error is TimeoutException) {
    return UDXTimeoutException(
      context,
      error.duration ?? const Duration(seconds: 30),
      error,
    );
  }

  if (error is OSError) {
    return UDXConnectionException(
      'UDX OS error: ${error.message}',
      context,
      error,
      isTransient: _isTransientOSError(error),
    );
  }

  // Generic UDX error
  return UDXTransportException(
    'UDX operation failed: $error',
    context,
    error,
    isTransient: false,
  );
}