Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

- Use the legacy meter to report measurements.

Diagrams

Legacy Meter Structure

PlantUML
titleLegacy Meter Structure
@startuml
skinparam dpi 300

hide footbox

MeterRegistry *-- Counter

class InstrumentationClass {
MeterRegistry registry
Statistics statistics
}
note right of InstrumentationClass: e.g. CacheServerStats

class LegacyCounterBuilder {
intStatistic(statistics, id)
longStatistic(statistics, id)
register(registry)
}

class LegacyCounter {
LegacyCounter(counter, binding)
increment(amount)
count()
Counter counter
StatisticsBinding binding
}

class Counter {
increment(amount)
count()
}

class StatisticsBinding {
Statistics statistics
int statId
increment(amount)
long longValue()
double doubleValue()
}

InstrumentedCode --> InstrumentationClass

InstrumentationClass --> LegacyCounterBuilder
InstrumentationClass --> LegacyCounter : increment(amount)
InstrumentationClass *-- Statistics

LegacyCounterBuilder --> MeterRegistry
LegacyCounterBuilder --> LegacyCounter

LegacyCounter --> StatisticsBinding : increment(amount)
LegacyCounter --> Counter : increment(amount)

StatisticsBinding --> Statistics : incInt(id, amount)

note right of LegacyCounterBuilder : New class
note right of LegacyCounter : New class (implements Counter)
note right of StatisticsBinding : New class

@enduml

Legacy Meter Information Flow

PlantUML
titleLegacy Meter Information Flow
@startuml
skinparam dpi 300

hide footbox

actor InstrumentedCode

create MyStatistics
InstrumentedCode -> MyStatistics : new(registry, …)
create statistics
MyStatistics -> statistics : new

== Creating a Legacy Meter ==
create LegacyCounter.Builder
MyStatistics -> LegacyCounter.Builder : new(name)
MyStatistics -> LegacyCounter.Builder : …
MyStatistics -> LegacyCounter.Builder : intStatistic(statistics, statId)
MyStatistics -> LegacyCounter.Builder : register(registry)

participant legacyCounter
participant statisticsBinding
participant statistics

LegacyCounter.Builder -> registry : counter(id, …)
create counter
registry -> counter : new(id, …)
registry --> LegacyCounter.Builder : counter

create statisticsBinding
LegacyCounter.Builder -> statisticsBinding : new(statistics, statId)

create legacyCounter
LegacyCounter.Builder -> legacyCounter : new(counter, statisticsBinding)
LegacyCounter.Builder --> MyStatistics : legacyCounter
MyStatistics --> InstrumentedCode

== Updating a Legacy Meter ==

InstrumentedCode -> MyStatistics : myEventJustHappened()
MyStatistics -> legacyCounter : increment()
legacyCounter -> statisticsBinding : increment()
statisticsBinding -> statistics : incInt(statId, 1)
legacyCounter -> counter : increment()
legacyCounter --> MyStatistics
MyStatistics --> InstrumentedCode

== Reading a Legacy Meter ==
InstrumentedCode -> MyStatistics : getMyEventCount()
MyStatistics -> legacyCounter : count()
legacyCounter -> statistics : getInt(statId)
statistics --> legacyCounter : stat value
legacyCounter --> MyStatistics : stat value
MyStatistics --> InstrumentedCode : stat value

== Deleting a Legacy Meter ==
InstrumentedCode -> MyStatistics : close()
MyStatistics -> registry : remove(legacyCounter)
note left
  Note: legacyCounter has
  the same Id as counter
end note
registry -> counter !!:
registry --> MyStatistics
MyStatistics--> InstrumentedCode

@enduml

...