-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkuksa-sdk_class-diagram.puml
126 lines (100 loc) · 3.45 KB
/
kuksa-sdk_class-diagram.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
@startuml
'https://plantuml.com/class-diagram
package grpc {
ManagedChannelBuilder --> ManagedChannel
class ManagedChannel
class ManagedChannelBuilder
}
package kuksa {
package proto {
class Field
class Datapoint
class DataEntry
class SetResponse
class GetResponse
class DataEntryError
class EntryUpdate
}
DataBrokerConnector -down-> DataBrokerException
DataBrokerConnector -down-> DataBrokerConnection
DataBrokerConnection -down-> DataBrokerTransporter
DataBrokerConnection -down-> DataBrokerSubscriber
DataBrokerConnection -down-> VssPathListener
DataBrokerConnection -left-> DataBrokerException
DataBrokerConnection -up-> MultiListener
DataBrokerSubscriber -up-> DataBrokerTransporter
MultiListener -right-> DisconnectListener
TimeoutConfig -left-* DataBrokerConnector
JsonWebToken -right-* DataBrokerConnector
class DataBrokerConnector {
+ connect(): DataBrokerConnection
}
class TimeoutConfig {
+ timeout: Long
+ timeUnit: TimeUnit
}
class DataBrokerTransporter {
+ jsonWebToken: JsonWebToken
+ fetch(vssPath: String, Collection<Field>): GetResponse
+ update(vssPath: String, Collection<Field>, Types.Datapoint): SetResponse
+ subscribe(vssPath: String, Field): Subscription
}
class DataBrokerSubscriber {
+ subscribe(vssPath: String, Field, VssPathListener)
+ subscribe<T : VssNode>(T, Field, VssNodeListener<T>)
+ unsubscribe(vssPath: String, Field, VssPathListener)
+ unsubscribe<T : VssNode>(T, Field, VssNodeListener<T>)
}
class DataBrokerConnection {
+ disconnectListeners: MultiListener<DisconnectListener>
+ jsonWebToken: JsonWebToken
+ subscribe(SubscribeRequest, VssPathListener)
+ subscribe<T : VssNode>(VssNodeSubscribeRequest, VssNodeListener<T>)
+ unsubscribe(SubscribeRequest, VssPathListener)
+ unsubscribe<T : VssNode>(VssNodeSubscribeRequest<T>, VssNodeListener<T>)
+ fetch(FetchRequest): GetResponse
+ fetch<T : VssNode>(VssNodeFetchRequest<T>)
+ update(UpdateRequest): SetResponse
+ update(VssNodeUpdateRequest): SetResponse
+ disconnect()
}
interface VssPathListener {
+ onEntryChanged(List<EntryUpdate>)
+ onError(Throwable)
}
package request {
interface DataBrokerRequest {
+ vssPath: String
+ fields: Array<out Field>
}
class UpdateRequest {
+ dataPoint: Datapoint
}
class VssNodeDataBrokerRequest<T : VssNode> {
+ vssNode: T
}
DataBrokerRequest <|-- FetchRequest
DataBrokerRequest <|-- SubscribeRequest
DataBrokerRequest <|-- UpdateRequest
DataBrokerRequest <|-- VssNodeDataBrokerRequest
VssNodeDataBrokerRequest <|-- VssNodeFetchRequest
VssNodeDataBrokerRequest <|-- VssNodeSubscribeRequest
VssNodeDataBrokerRequest <|-- VssNodeUpdateRequest
}
class DataBrokerException
abstract class MultiListener<T> {
+ register(T)
+ unregister(T)
}
interface DisconnectListener {
+ onDisconnect()
}
class JsonWebToken {
+ authScheme: String
+ authParameters: String
}
}
DataBrokerConnector -up-> ManagedChannel
DataBrokerConnection -right-> proto
DataBrokerConnection -right-> request
@enduml