Принимает соединения и обеспечивает передачу и прием двоичных потоков данных для смоделированных портов.
Контекст
Класс ara::rds::RawDataStreamServer представляет в AUTOSAR Adaptive Platform (модуль rds) серверный эквивалент для потокоориентированной передачи данных SWS RawDataStream с. 1. Его основная задача состоит в том, чтобы принимать входящие клиентские соединения на смоделированном коммуникационном порту и выполнять последующий двунаправленный обмен неструктурированными необработанными данными через двоичные потоки данных.
К центральным партнерам по взаимодействию относятся:
- вышестоящее серверное приложение, которое создает экземпляр, ожидает соединения и инициирует передачу данных,
- система времени выполнения AUTOSAR, к которой сервер привязывается через
ara::core::InstanceSpecifier для смоделированного порта [SWS_RDS_11312],
- внешний клиент, который устанавливает соединение с сервером [SWS_RDS_11318] и обменивается полезными данными [SWS_RDS_11322], [SWS_RDS_11324].
Жизненный цикл
Инстанцирование RawDataStreamServer выполняется не через обычные конструкторы, а исключительно через статический фабричный метод Create [SWS_RDS_11312]. Он привязывает сервер к порту, указанному через ara::core::InstanceSpecifier.
Что касается отношений владения, класс принудительно задает строгую семантику только для перемещения (move-only). Конструктор копирования [SWS_RDS_11316] и оператор присваивания с копированием [SWS_RDS_11317] явно удалены (delete). Передача ресурсов в другие области видимости поэтому возможна только через конструктор перемещения [SWS_RDS_11314] или оператор присваивания с перемещением [SWS_RDS_11315].
Интерпретация: после успешного создания экземпляр сервера находится в начальном состоянии готовности, в котором еще нет активного соединения. Вопрос Q-5d536f7c10a62342 (открытый) Посредством WaitForConnection [SWS_RDS_11318] или варианта с контролем времени WaitForConnection(timeout) [SWS_RDS_11319] сервер ожидает клиента и при успешном исходе переходит в состояние активного соединения. Во время выполнения соединение может быть целенаправленно закрыто вызовом Shutdown [SWS_RDS_11320].
При уничтожении экземпляра сервера деструктор ~RawDataStreamServer гарантирует, что еще открытое соединение будет автоматически штатно остановлено и закрыто [SWS_RDS_11313].
В отношении конкурентности метод создания Create специфицирован как потокобезопасный [SWS_RDS_11312]. Операции перемещения [SWS_RDS_11314], [SWS_RDS_11315], а также деструктор [SWS_RDS_11313] напротив явно обозначены как непотокобезопасные (not thread-safe) и требуют внешней синхронизационной защиты при одновременном доступе из нескольких потоков.
Диаграмма состояний: фазы экземпляра сервера от создания через прием соединения до разрыва соединения. Источники: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11320], [SWS_RDS_11313]
Путь использования
Типичный путь использования серверного приложения охватывает шаги инициализации, ожидания соединений, двунаправленной передачи данных и разрыва соединения:
- Создание сервера: приложение инстанцирует сервер через
ara::rds::RawDataStreamServer::Create(instance) для сконфигурированного порта [SWS_RDS_11312].
- Ожидание соединения: приложение блокируется с помощью
WaitForConnection() [SWS_RDS_11318] или с сконфигурированной максимальной продолжительностью через WaitForConnection(timeout) [SWS_RDS_11319], пока клиент не установит соединение.
- Прием и отправка данных: после успешного соединения приложение считывает двоичные данные посредством
ReadData(maxLength) [SWS_RDS_11322] или с контролем времени через ReadData(maxLength, timeout) [SWS_RDS_11323]. Для отправки двоичных данных вызывается WriteData, по выбору без ограничения времени ожидания [SWS_RDS_11324] или с контролем времени [SWS_RDS_11325]. Отправка через WriteData, по всей видимости, передает владение предоставленным байтовым буфером (std::unique_ptr<ara::core::Byte[]>) серверу. Вопрос Q-eec0fea4a5ffaf40 (открытый)
- Отключение соединения: если передача данных завершена, приложение явно завершает сеанс через
Shutdown() [SWS_RDS_11320].
Диаграмма последовательности: последовательность создания, приема соединения, обмена данными и закрытия соединения. Источники: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11322], [SWS_RDS_11324], [SWS_RDS_11320]
Сценарии ошибок
Обработка ошибок в RawDataStreamServer следует принципам AUTOSAR Adaptive Platform для отказоустойчивых интерфейсов:
Ни один из методов не генерирует исключений C++; все функции объявлены как noexcept SWS RawDataStream с. 1. Ситуации ошибок вместо этого передаются вызывающей стороне через возвращаемый тип ara::core::Result.
Типичные сценарии ошибок охватывают:
- Таймауты: в методах
WaitForConnection [SWS_RDS_11319], ReadData [SWS_RDS_11323] и WriteData [SWS_RDS_11325] с таймаутом истечение указанного интервала времени приводит к состоянию ошибки в возвращаемом ara::core::Result.
- Ошибки соединения и недопустимые состояния: методы
ReadData, WriteData и WaitForConnection, по всей видимости, в случае ошибки (например, при преждевременно разорванном соединении или внутренних ошибках коммуникации) возвращают соответствующие коды ошибок в ara::core::Result. Вопрос Q-0c6815ddde412d81 (открытый)
- Предусловия и постусловия: вызывающие стороны всегда должны проверять возвращенный
ara::core::Result на валидность перед доступом к значениям данных, чтобы гарантировать безошибочное состояние операции.
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11 и создано автоматически.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал