Accepteert verbindingen en maakt het verzenden en ontvangen van binaire datastromen voor gemodelleerde poorten mogelijk.
Context
De klasse ara::rds::RawDataStreamServer vormt in het AUTOSAR Adaptive Platform (module rds) de serverzijde-tegenhanger voor stroomgeoriënteerde gegevensoverdrachten SWS RawDataStream p. 1. Haar hoofdtaak bestaat uit het accepteren van inkomende clientverbindingen op een gemodelleerde communicatiepoort en het afhandelen van de daaropvolgende bidirectionele uitwisseling van ongestructureerde ruwe data via binaire datastromen.
Tot de centrale interactiepartners behoren:
- de bovenliggende serverapplicatie, die de instantie aanmaakt, op verbindingen wacht en de gegevensoverdracht initieert,
- het AUTOSAR-runtimesysteem, waaraan de server via een
ara::core::InstanceSpecifier voor een gemodelleerde poort wordt gekoppeld [SWS_RDS_11312],
- de externe client, die een verbinding met de server opbouwt [SWS_RDS_11318] en payload uitwisselt [SWS_RDS_11322], [SWS_RDS_11324].
Levenscyclus
Het instantiëren van een RawDataStreamServer vindt niet plaats via gewone constructors, maar uitsluitend via de statische factory-methode Create [SWS_RDS_11312]. Deze bindt de server aan de via ara::core::InstanceSpecifier opgegeven poort.
Wat de eigendomsverhoudingen betreft, dwingt de klasse een strikte move-only semantiek af. De copy constructor [SWS_RDS_11316] en de copy assignment operator [SWS_RDS_11317] zijn expliciet verwijderd (delete). Overdracht van resources naar andere geldigheidsbereiken is daarom alleen mogelijk via de move constructor [SWS_RDS_11314] of de move assignment operator [SWS_RDS_11315].
Interpretatie: na succesvolle creatie bevindt de serverinstantie zich in een initiële staat van gereedheid waarin nog geen actieve verbinding bestaat. Vraag Q-5d536f7c10a62342 (open) Via WaitForConnection [SWS_RDS_11318] of de tijdbewaakte variant WaitForConnection(timeout) [SWS_RDS_11319] wacht de server op een client en schakelt bij succes over naar de status van een actieve verbinding. De verbinding kan tijdens runtime doelgericht worden gesloten door het aanroepen van Shutdown [SWS_RDS_11320].
Bij het vernietigen van de serverinstantie waarborgt de destructor ~RawDataStreamServer dat een nog openstaande verbinding automatisch correct wordt afgesloten en beëindigd [SWS_RDS_11313].
Met betrekking tot gelijktijdigheid is de creatiemethode Create gespecificeerd als thread-veilig [SWS_RDS_11312]. De verplaatsingsoperaties [SWS_RDS_11314], [SWS_RDS_11315] evenals de destructor [SWS_RDS_11313] zijn daarentegen expliciet aangeduid als niet-thread-veilig (not thread-safe) en vereisen externe synchronisatiebescherming bij gelijktijdige toegang vanuit meerdere threads.
Toestandsdiagram: fasen van een serverinstantie vanaf creatie via verbindingsacceptatie tot verbindingsafbraak. Bronnen: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11320], [SWS_RDS_11313]
Gebruikspad
Het typische gebruikspad van een serverapplicatie omvat de stappen initialisatie, wachten op verbindingen, bidirectionele gegevensoverdracht en verbindingsafbraak:
- Server aanmaken: De applicatie instantieert de server via
ara::rds::RawDataStreamServer::Create(instance) voor de geconfigureerde poort [SWS_RDS_11312].
- Op verbinding wachten: De applicatie blokkeert middels
WaitForConnection() [SWS_RDS_11318] of met een geconfigureerde maximale duur via WaitForConnection(timeout) [SWS_RDS_11319], totdat een client de verbinding tot stand heeft gebracht.
- Gegevens ontvangen en verzenden: Na een succesvolle verbinding leest de applicatie binaire gegevens uit middels
ReadData(maxLength) [SWS_RDS_11322] of tijdbewaking via ReadData(maxLength, timeout) [SWS_RDS_11323]. Voor het verzenden van binaire gegevens wordt WriteData aangeroepen, naar keuze zonder wachttijdbegrenzing [SWS_RDS_11324] of met tijdbewaking [SWS_RDS_11325]. Het verzenden via WriteData draagt vermoedelijk het eigendom van de gereedgestelde bytebuffer (std::unique_ptr<ara::core::Byte[]>) over aan de server. Vraag Q-eec0fea4a5ffaf40 (open)
- Verbinding verbreken: Wanneer de gegevensoverdracht is voltooid, beëindigt de applicatie de sessie expliciet via
Shutdown() [SWS_RDS_11320].
Sequentiediagram: Verloop van aanmaken, acceptatie van de verbinding, gegevensuitwisseling en sluiting van de verbinding. Bronnen: [SWS_RDS_11312], [SWS_RDS_11318], [SWS_RDS_11322], [SWS_RDS_11324], [SWS_RDS_11320]
Foutscenario's
De foutafhandeling van RawDataStreamServer volgt de grondbeginselen van het AUTOSAR Adaptive Platform voor foutveilige interfaces:
Geen van de methoden genereert C++-excepties; alle functies zijn als noexcept gedeclareerd SWS RawDataStream p. 1. Foutgevallen worden in plaats daarvan via het retourtype ara::core::Result aan de aanroeper gecommuniceerd.
Typische foutscenario's omvatten:
- Time-outs: Bij de methoden
WaitForConnection [SWS_RDS_11319], ReadData [SWS_RDS_11323] en WriteData [SWS_RDS_11325] met time-out leidt het verstrijken van de opgegeven tijdsduur tot een foutstatus in de geretourneerde ara::core::Result.
- Verbindingsfouten en ongeldige statussen: De methoden
ReadData, WriteData en WaitForConnection leveren in het geval van een fout (bijvoorbeeld bij een voortijdig verbroken verbinding of interne communicatiefouten) vermoedelijk overeenkomstige foutcodes op in de ara::core::Result. Vraag Q-0c6815ddde412d81 (open)
- Pre- en postcondities: Aanroepers moeten de geretourneerde
ara::core::Result vóór toegang tot gegevenswaarden altijd op geldigheid controleren om de foutvrije toestand van de operatie te waarborgen.
Deze handleiding is gebaseerd op de specificatie AUTOSAR Adaptive R25-11 en is geautomatiseerd gegenereerd.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel