Skip to content
62 changes: 62 additions & 0 deletions design/slot_drainer_sequence_design.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
@startuml slot_drainer_sequence_design
title "SlotDrainer Sequence Design"

participant "Backend" as Backend
participant "SlotDrainer" as SlotDrainer
participant "NonBlockingWriter" as NonBlockingWriter
participant "CircularBuffer" as CircularBuffer
participant "MessageBuilder" as MessageBuilder
participant "SlotAllocator<LogRecord>" as SlotAllocator

note over SlotDrainer : Slot Drainer Flush Sequence

activate SlotDrainer
activate Backend
activate NonBlockingWriter
activate CircularBuffer
activate SlotAllocator
activate MessageBuilder

group "First Slot"
Backend -> SlotDrainer : Flush()

SlotDrainer -> MessageBuilder : GetNextSpan(log_record)

SlotDrainer -> CircularBuffer : empty()
CircularBuffer -> SlotDrainer: false

SlotDrainer -> CircularBuffer : front()
SlotDrainer -> CircularBuffer : pop_front()

SlotDrainer -> CircularBuffer : empty()
CircularBuffer -> SlotDrainer: false
SlotDrainer -> CircularBuffer : front()

SlotDrainer -> SlotAllocator : GetUnderlyingBufferFor(slot)
SlotDrainer -> MessageBuilder : SetNextMessage(log_record)

SlotDrainer -> NonBlockingWriter : FlushIntoFile()
NonBlockingWriter -> SlotDrainer: kDone


SlotDrainer -> MessageBuilder : GetNextSpan()
end

group "Last Slot"

SlotDrainer -> MessageBuilder : GetNextSpan()

SlotDrainer -> NonBlockingWriter : FlushIntoFile()
NonBlockingWriter -> SlotDrainer: kDone

SlotDrainer -> MessageBuilder : GetNextSpan()

SlotDrainer -> CircularBuffer : empty()
CircularBuffer -> SlotDrainer: true

Backend <-- SlotDrainer


end

@enduml
43 changes: 43 additions & 0 deletions design/verbose_logging_ara_log_interaction.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
@startuml verbose_logging_ara_log_interaction
title "Score Logging ARA Log Interaction"

package "ara::log API" {
class "Free Functions" as AraLogFunctions {
+ ara::log::LogError(): ara::log::LogStream
+ ara::log::LogWarn(): ara::log::LogStream
+ ara::log::LogInfo(): ara::log::LogStream
+ ara::log::LogDebug(): ara::log::LogStream
}
}

package "score::mw Log Implementation" {
class "Free Functions" as ScoreMwLogFunctions {
+ score::mw::LogError(): score::mw::LogStream
+ score::mw::LogWarn(): score::mw::LogStream
+ score::mw::LogInfo(): score::mw::LogStream
+ score::mw::LogDebug(): score::mw::LogStream
}
}

AraLogFunctions --> ScoreMwLogFunctions : facade

note top of AraLogFunctions
AUTOSAR Adaptive Platform
Logging API - standardized
interface for automotive
applications
end note

note bottom of ScoreMwLogFunctions
Score Middleware logging
implementation providing
the actual logging functionality
end note

note on link
ara::log functions act as
a facade that delegates to
score::mw logging implementation
end note

@enduml
Loading