@@ -55,9 +55,9 @@ field-collection!
5555## Event related datastructures in LoLa binding
5656
5757Here we provide insight, how event communication is realized within our ` LoLa ` (shared memory based) binding. The
58- following class diagram shows LooLa specific binding implementation and its relationship with binding independent parts:
58+ following class diagram shows LoLa specific binding implementation and its relationship with binding independent parts:
5959
60- ![ Structural View ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/event_lola_model.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
60+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/event_lola_model.puml " >
6161
6262The referenced class ` SubscriptionStateMachine ` within this model is further detailed (including its dependent entities)
6363further [ below] ( #event-subscription ) .
@@ -188,37 +188,37 @@ The API entry point to events on the server/skeleton side is
188188In any case a memory-allocation (rather a free event slot search) needs to be done. The general activity to be done in
189189this case is pictured in the following activity diagram:
190190
191- ![ Activity Allocate Sample Slot ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_event_allocate_activity.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
191+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_event_allocate_activity.puml " >
192192
193193In case of a mixed criticality setup with an ASIL-B provider/skeleton and both - ASIL-B and ASIL-QM consumers, where
194194discrete control structures are needed to separate ASIL-B/QM, the activities to be taken by the ASIL-B skeleton are as
195195follows:
196196
197- ![ Activity Allocate Mixed Criticality ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_event_allocate_mixed_critical_activity.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
197+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_event_allocate_mixed_critical_activity.puml " >
198198
199199During this activity a more complex sub-activity is executed/referenced, to achieve a coherent change of slot states in
200200both control structures (containing a rollback mechanism). This activity is modeled separately here:
201201
202- ![ Coherent Status Update ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_coherent_set_writing_activity.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
202+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_coherent_set_writing_activity.puml " >
203203
204204### Proxy side Activities for Event Access
205205
206206The central API entry point at proxy/consumer side to access event samples (after a successful subscription) is the
207207` GetNewSamples() ` method of an event instance. The activities taken by the proxy side implementation are as follows:
208208
209- ![ Activity GetNewSamples ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/get_new_samples_activity.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
209+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/get_new_samples_activity.puml " >
210210
211211The activity shown above thereby relies on activity ` ReferenceNextEvent ` , which is shown here:
212212
213- ![ Activity GetNewSamples ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_reference_next_event_activity.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
213+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_reference_next_event_activity.puml " >
214214
215215The main proxy algorithm above the shared memory data structures is broken into three entities:
216- ` score::mw::com::impl::lola::ProxyEvent ` , ` score::mw::com::impl::lola::ProxyEventCommon ` and ` score::mw::com::impl::lola::SlotCollector ` .
216+ ` score::mw::com::impl::lola::ProxyEvent ` , ` score::mw::com::impl::lola::ProxyEventCommon ` and ` score::mw::com::impl::lola::SlotCollector ` .
217217While ` ProxyEvent ` is a type-aware templated class, ` ProxyEventCommon ` and ` SlotCollector ` are both type-agnostic. All ProxyEvent
218- functionality that doesn't require awareness of the type or direct interaction with shared memory are dispatched from ` ProxyEvent `
219- to ` ProxyEventCommon ` . ` SlotCollector ` operates on the shared memory control structure without knowledge of the actual type.
220- ` ProxyEvent ` implements the functionality (including direct interaction with shared memory) that require awareness of the type.
221- Making ` ProxyEventCommon ` and ` SlotCollector ` type-agnostic results in a slight build time benefit since type-agnostic code doesn't
218+ functionality that doesn't require awareness of the type or direct interaction with shared memory are dispatched from ` ProxyEvent `
219+ to ` ProxyEventCommon ` . ` SlotCollector ` operates on the shared memory control structure without knowledge of the actual type.
220+ ` ProxyEvent ` implements the functionality (including direct interaction with shared memory) that require awareness of the type.
221+ Making ` ProxyEventCommon ` and ` SlotCollector ` type-agnostic results in a slight build time benefit since type-agnostic code doesn't
222222need to be instantiated-then-merged by the build toolchain as this would be the case if that code was part of the templated class.
223223
224224## Notifications between skeleton and proxy
@@ -280,7 +280,7 @@ once we resort back to sideband channel communication for `Subscribe` and `Unsub
280280We encapsulate the low-level mechanisms provided by ` score::mw::com::message_passing ` via
281281class ` lola::MessagePassingFacade ` , which is shown in the following class model:
282282
283- ![ Structural View_MessagePassing ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_message_passing_model.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
283+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_message_passing_model.puml " >
284284
285285### ` lola::MessagePassingFacade ` is a Smart Proxy
286286
@@ -299,7 +299,7 @@ same event, which is provided by a skeleton instance in LoLa Process 2, then the
299299** So the general idea is:**
300300Since we have made the decision, to route the entire message-passing of a LoLa enabled process over one (or two in case
301301of ASIL) messaging channel to get more flexibility/control over the amount of receiver/listener threads to be used, we
302- also shall take a further benefit!
302+ also shall take a further benefit!
303303That is: This central entity (` lola::MessagePassingFacade ` ), which cares for the routing, has total overview of the
304304messaging requirements of its local proxy/skeleton instances and should remove all potential redundancies and thereby
305305** minimizing the IPC** over ` score::mw::com::message_passing ` to a bare minimum! Therefore, the notion of ** Smart Proxy** .
@@ -313,7 +313,7 @@ The `score::mw::com::message_passing::Receiver`s used by `lola::MessagePassingFa
313313initialization of our ` mw::com ` runtime. Depending on the ` ara::com ` /` mw::com ` deployment info for the
314314executable/process, it can be decided, whether only QM (ASIL-QM) or QM and ASIL (ASIL-B) Receivers are needed.
315315
316- ![ Sequence Message Passing Init ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_msg_pass_initialize_seq.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
316+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_msg_pass_initialize_seq.puml " >
317317
318318### Event subscription
319319
@@ -340,18 +340,18 @@ instance has been described [here](../skeleton_proxy/README.md#proxy-auto-reconn
340340
341341The structure and transitions of the state machine are shown in:
342342
343- ![ Proxy Event Subscription State Machine ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/proxy_event_state_machine.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
343+ ![ LOLA_MSG_PASS_PROXY_EVENT_STATE_MACHINEINITIALIZE_SEQ ] ( broken_link_k/swh/safe-posix-platform/score/ mw/com/design/events_fields/lola_msg_pass_proxy_event_state_machineinitialize_seq.puml )
344344
345345The structural model of the state machine design is as follows:
346346
347- ![ Structural View Proxy Event Subscription State Machine ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/proxy_event_state_machine_model.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
347+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/proxy_event_state_machine_model.puml " >
348348
349349### Event Update Notification
350350
351351Event Notification is a good showcase for the "smart" behavior of ` lola::MessagePassingFacade ` as already mentioned (see
352352example above). Here event notification registrations are aggregated and related messages are only sent once:
353353
354- ![ Sequence Message Passing Event Notify ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/lola_msg_pass_event_notify.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
354+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/lola_msg_pass_event_notify.puml " >
355355
356356#### Managing user provided EventReceiveHandlers
357357
@@ -438,7 +438,7 @@ looks like! This sequence builds on message passing concepts/sequences already d
438438[ Notifications between skeleton and proxy] ( #notifications-between-skeleton-and-proxy ) and the design of data-structures
439439placed in shared memory discussed [ here] ( #event-related-datastructures-in-lola-binding )
440440
441- ![ Sequence Update Event and Access via Polling ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/event_poll_lola_seq.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
441+ < img src = " https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/event_poll_lola_seq.puml " >
442442
443443# General implementation details of score::mw::com
444444
@@ -471,4 +471,4 @@ central counter buried inside `SampleReferenceTracker` is atomic.
471471
472472This sequence diagram depicts the mechanics behind the reference counting on proxy side:
473473
474- ![ Sequence during sample reception on proxy side ] ( broken_link_k/swh/ddad_score/ mw/com/design/events_fields/sampleptr_ref_counting.uxf?ref=18c835c8d7b01056dd48f257c14f435795a48b7d )
474+ < img src = " https://www.plantuml.com/plantuml/ proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/ mw/com/design/events_fields/sampleptr_ref_counting.puml " >
0 commit comments