Main Scrubber interfaces:
-┌──────────────────────────────────────────────┬────┐
-│ │ │
-│ │ │
-│ PG │ │
-│ │ │
-│ │ │
-├──────────────────────────────────────────────┘ │
-│ │
-│ PrimaryLogPG │
-└────────────────────────────────┬──────────────────┘
- │
- │
- │ owns & uses
- │
- │
- │
-┌────────────────────────────────▼──────────────────┐
-│ <<ScrubPgIF>> │
-└───────────────────────────▲───────────────────────┘
- │
- │
- │implements
- │
- │
- │
-┌───────────────────────────┴───────────────┬───────┐
-│ │ │
-│ PgScrubber │ │
-│ │ │
-│ │ ├───────┐
-├───────────────────────────────────────────┘ │ │
-│ │ │
-│ PrimaryLogScrub │ │
-└─────┬───────────────────┬─────────────────────────┘ │
- │ │ implements
- │ owns & uses │ │
- │ │ ┌─────────────────────────▼──────┐
- │ │ │ <<ScrubMachineListener>> │
- │ │ └─────────▲──────────────────────┘
- │ │ │
- │ │ │
- │ ▼ │
- │ ┌────────────────────────────────┴───────┐
- │ │ │
- │ │ ScrubMachine │
- │ │ │
- │ └────────────────────────────────────────┘
+┌──────────────────────────────────────────────────┬────┐
+│ │ │
+│ PG │ │
+│ (implements <<PgScrubBeListener>>) │ │
+│ │ │
+├──────────────────────────────────────────────────┘ │
+│ │
+│ PrimaryLogPG │
+└──────────────────────────┬────────────────────────────┘
+ │
+ │ owns & uses
+ │
+┌──────────────────────────▼────────────────────────────┐
+│ <<ScrubPgIF>> │
+└──────────────────────────▲────────────────────────────┘
+ │
+ │ implements
+ │
+┌──────────────────────────┴──────────────┬──────┐ ┌──────────────────────────────────┐
+│ │ │ │ │
+│ PgScrubber │ ├───────►│ <<ScrubMachineListener>> │
+│ │ │ │ │
+│ │ │ └──────────────────────────────▲───┘
+│ │ │implements │
+│ │ │ ┌──────────────────────────┐ │
+│ │ ├───────►│ <<ScrubBeListener>> │ │
+│ │ │ │ │ │
+├─────────────────────────────────────────┘ │ └─────────────────▲────────┘ │
+│ │ │ │
+│ PrimaryLogScrub │ uses │ uses │
+│ │ │ │
+└─────┬──────────────────┬──────────────┬────────┘ │ │
+ │ │ │ │ │
+ │ owns & uses │ owns & uses │ owns & uses │ │
+ │ │ │ │ │
+ │ │ ┌─────▼──────────────────────────┐ │ │
+ │ │ │ ├────────┘ │
+ │ │ │ ScrubBackend │ │
+ │ │ │ (also uses │ │
+ │ │ │ <<PgScrubBeListener>>) │ │
+ │ │ │ │ │
+ │ │ └────────────────────────────────┘ │
+ │ │ │
+ │ ┌─────────────▼─────────────────────────────┐ │
+ │ │ <<ScrubFsmIf>> │ │
+ │ └────────────────────▲──────────────────────┘ │
+ │ │ │
+ │ │ implements │
+ │ │ │
+ │ ┌────────────────────┴──────────────────────┐ │
+ │ │ ├─────────────────────────────────┘
+ │ │ ScrubMachine │
+ │ │ │
+ │ └───────────────────────────────────────────┘
│
┌───▼─────────────────────────────────┐
│ │
- │ ScrubStore │
+ │ Scrub::Store │
│ │
└─────────────────────────────────────┘