90 lines
1.8 KiB
Plaintext
90 lines
1.8 KiB
Plaintext
@startuml
|
|
skinparam backgroundColor #FFFFFF
|
|
skinparam defaultFontName Arial
|
|
skinparam defaultFontSize 14
|
|
skinparam shadowing false
|
|
title Tessera — managed identity versus published values
|
|
hide empty methods
|
|
class ReplSession {
|
|
id: u64
|
|
faulted: bool
|
|
}
|
|
class Candidate {
|
|
vm: Vm
|
|
roots: ObjectRef[]
|
|
globals: ObjectRef
|
|
}
|
|
class UiBridge
|
|
class Presentation {
|
|
desktop: ObjectRef
|
|
active: ObjectRef
|
|
render_cache: RenderCache
|
|
}
|
|
class ManagedWindow {
|
|
id: u64
|
|
pages: ObjectRef[]
|
|
closed: bool
|
|
}
|
|
class Block {
|
|
state: ObjectRef
|
|
page: bool
|
|
}
|
|
class Cell
|
|
class Data {
|
|
kind: Kind
|
|
children: Child[]
|
|
bindings: ObjectRef[]
|
|
}
|
|
class Child {
|
|
slot: u64
|
|
block: ObjectRef
|
|
}
|
|
class Mount {
|
|
block: ObjectRef
|
|
page: WeakObjectRef
|
|
parent: WeakObjectRef
|
|
geometry: MountGeometry
|
|
}
|
|
class MountTable {
|
|
active: Map<u64, WeakObjectRef>
|
|
}
|
|
class UiNode {
|
|
block_id: String
|
|
slots: u64[]
|
|
kind: UiKind
|
|
}
|
|
class Frame {
|
|
session: u64
|
|
layout_version: u64
|
|
commands: RenderCommand[]
|
|
tabs: Tab[]
|
|
}
|
|
class RenderDocument {
|
|
source: String
|
|
ui_root: Arc<UiNode>
|
|
windows: Map
|
|
}
|
|
ReplSession *-- Candidate
|
|
ReplSession *-- UiBridge
|
|
UiBridge *-- Presentation : shared Session
|
|
ManagedWindow --> Block : open Pages retained
|
|
Block --> Cell : state
|
|
Cell --> Data : ordinary content
|
|
Cell --> Block : shared assignment forwarding
|
|
Data *-- Child
|
|
Child --> Block
|
|
Mount --> Block : strong
|
|
Mount ..> Mount : weak reverse/sibling links
|
|
Presentation *-- MountTable
|
|
MountTable ..> Mount : weak index
|
|
Presentation ..> UiNode : cached derivation
|
|
RenderDocument o-- UiNode
|
|
RenderDocument *-- Frame
|
|
RenderDocument *-- RenderDocument : secondary windows
|
|
note bottom of Block
|
|
Page is a managed Block kind/nominal type.
|
|
This omits type tables, service dictionaries,
|
|
captured roots and many fields: not a full GC graph.
|
|
end note
|
|
@enduml
|