Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 7b6b75a3

Přidáno uživatelem Jakub Šilhavý před téměř 3 roky(ů)

re #9573 Added a sequence and UML diagram

Zobrazit rozdíly:

ld_client/doc/sequence_diagram/ASWI_SequenceDiagram.drawio
1
<mxfile host="Electron" modified="2022-04-27T08:58:36.177Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="pkxSyWU8jUEetNVYmsDH" version="16.5.1" type="device"><diagram id="kgpKYQtTHZ0yAKxKKP6v" name="Page-1">7Vxtd9o4Fv41nDP7AY5fwXwkkHRmNnuaJum0O98UI8BbYxFbNNBfv5Is27IkGwN2QqZlzpxaV7Js3/vovukqPXu63n2IwWb1HzSHYc8y5ruePetZljmyDfIPpew5xfCslLKMgzmnFYSH4AfMBnLqNpjDpDQQIxTiYFMm+iiKoI9LNBDH6KU8bIHC8lM3YAkVwoMPQpX6JZjjVUr1XKOg/w6D5Sp7smnwnjXIBnNCsgJz9CKQ7OuePY0RwunVejeFIeVexpf0vpuK3vzFYhjhJjfY0fbqZheP/f2tsYk+fnm0wIc+n+U7CLf8g3v25I9ogW4g9lcw5q+O9xk/yFds6OV2Hd4GCxgGEWldbWAcrCEm4+1ZyMl3Be2KSAcDQqP9JmuHIdgkwROb1iCUGPrbOAm+w3uYpCBgVLSN5nDOWzkHWQPH6FsuEzrpIgjDKQpRzN7UXrj0P0onDxfo6S+fQegZsh/pUVmb8QnGGO4EEmf1B4jIp8Z7MoT3WhnyOfA93nwpQGQ6bkpbCQByHD4QcOAu86kL2ZILLt4jRG2popaFu0FBhNlz3aueO5MEi2K8QksUgVAU7VEiUhlbi8rG3M44uZeYL3LbUJmdE89h9ifv+9/B1z+Hn5N4/tV//Ph9/6fTH2mYPQwxR2OJ68PnLco6+in2J2TAeLMr+sjVkv57B+KE8NoybgJyN5+RvGA6aTpGkSrhIaWv8DrkYigjP0JsDYvLh5NAGCwj0vSJuJiwqUQCohwnvGMdzOf0MVcvqwDDhw3w6TNfiC1QkFEh0qZoqBS9Vxa9Y6qiH2pE34bktW/r6jTqo22tsf+OlekcQG/ha5Wm78GnRTtK0zUPK03dOu5OaTrvR2m6R3O7zOzcczmgNE2rBWabt8Pdx7vnyI6//nux2n14TibP/WziOm7DOXHPeLPg7XVBlXhbjLlFaMM5+j+I8Z77mmCLUVk7wl2Av/Lb6fV/6fXAln68c7YTRs72QkOQt6AAm4oxQdvYhzXMMr10IGVIrbRjGAJMdEHZNdbIjt96R/FcoGRYgZJsBgziJcT8pgIAkzgGe2EYXyWVjzEd/XMKPKUzFujKP7ER4LznT/0H49sf7l+fruP+7y/26sdffVP1iaY8jrCM21mVJT3WfIZwgeuMZ0LsZhAtb9mwmVNQ7vmqoyREbl+ETE2syI0wooqmpHquCMemxsClSsiakrZZtFO9RBYD+T7y+iBgGIQgwS8wwWzVYIBBYUKoR8FXyKhDHTSWpF5jvdtXN6qTNkXrNYjmCYsyaVQZQ4Ahbe3wz4yGrsTfl7y3PFgWbZDOfbO7MviegokERtTjvgP7EIG5ggJZjk8IY7SmNiCaT2gCgtJC5H9jJPKKzLQMnLGVEVL7Yo4OewJseGFxWGsvtg7bHLOheeGOT6rdD4v8oBXKBG4MLIMYT3bTmZbJGpXBY8qaIv1IxTQpE7mWMtHAEH7Sm1VYvGLabCBaLBJYGnOC4dJyfayg9PH+8zWZ6mZy+3B9FkabQJBC2BwYrluG8HjYKkZF7NVh9Ajs2SN31Ar2XNkt8rzTsGcZ0kRuM/+qI7TpXU0FbWlIG8O1ArVfIW0ZdEPncEhr6Ayc15nbo0rzAkLaWuCdmgdsGtJanTHbVP2Jz0l9Wn3iYyTm2m7BEwzvUBLgAJWUt6zVMY1vxUAWbTFdaNN8a6RC3bbCeil1M27I+a4Yb+t01l2MfJjMCGJ9xsz3q7zednMjTwEdqdTcNtz2OlfgPSg1+1huS0pt1GxltZES1dsPldf3cEPi5B5FxZBAzaT82UY4oHNFiHbgmIxVlttLsA4BW2MrFAc/6DoKS+wV8Htz4xFXnPWAOEtNWHY5VTHuUAySgnNVMTgjjRxGLchBn7xSg4B/LOadhoa8DTuuZXaj1HQRTPkhSJLAL5vjMmOlBJuQGnCdnJDGVZ5ntxRY1cjmYLRl8oEHwy1BRq7OCHDauRFYeTk6w3F5hqYBWH94YKKKAKyt4EpNQv59Q9p98v/j/WR6bVvZPm+yAVFPt3Psp1qS7hrHyyfwm8E0MXkdQ3v1L3pJ4WGwLecFWAfhPr19jSKUsF3c0pBiV9rQ7Ur3iGGXSoBcwgFKZeUteSvjiMt4Qigzek1fzKVMcAlvD40187EZsk+axiqmSTmf99CrcgVMNjBlfD4wdRZpU3QXSVvQsbRXdRnpmMJppGNMTiscR0o1GFV2HoUerlAKCtfWAkHQ2MWDhI9PNXIT9uZdOWeLNe/S5VSMFERh7Au6J5Bf8ldKbzGEPq4t8k5b7CTLMu9YCi8gC541c+nXo8GuQ4Ne+tl+Vtp2KUtpol2Rvs7Gvr7s8u84KDtqeDWiG9WJrlpy5rhjyTmVkpsHRJGRFVwpwXL4TMk8sk55T5zM1JozKZLJGT238Ww8S5nmwx+y1emdJk9mWI+SZm61VSTrBZ3bXN1j6uSTT8ftYBk0ffMwasTZS7a5EgDCm5+ADOGNfvY17erVcUlNH7GovbbWNCOWPYRM9LIrkVe6pU5QRaVb2cPW1aQJ7vibpIMdTfRuZ1mRV0mMaWoePn+hnt5kE0zDAEbqRvc5bH3jRJUmSNdtJ3fHbW0esprVvzKQJyVj3j4Bab6jDKR5djpGk/zqKgepTcfY6pYkzTCSoHkI1lQhcftgBCSQ6/FinmzJpS1e1jEHGGQkvIKsI/6u2aG5jCpqIWtkHrObc7TEvfICczQrrKu6HH3WWVNXfV4CLivzzAsZ8lJPY+z1zq/u1FTa1J3LOJx/611S+s2WAKIU1DfNvznSQRmliqfj/Fv2+BaBJZTI2FIql2YXu6rj0mtKFV11KLwQdA1Hkvo5tbRrJO1UOjJMWypfrnpOp+XLqiffkko0BsNRSSNauYZ8I41Yh+0LwawtYdaWvZ/GmJWKoonj3JVGrGOrACvi1MCHfYLfV71XJQCP8IIanOLsrHpLK5zLDDNqcfQuqre0XzDsSsGaJe1ar1uFVHQeUpzuD4xU3Vq3K3wputVrSbfK3mZep/ZKulWt2ZjBp+1ySZYiiVTZ8V419LxgHdteUqhBZHusPrFPrL1t5TipvmanQbBxKep7fCy7JfVta9mtsZWd1eyo/vFDmvRJT8+nSZ8nmDKDnavX53x+hhNeB8/7tYORvnsYJGMNSNo4rq9fkZrDDefZ+JPtdV21/juLhUbSqRbFH258NEuaSCmnbCt+lx0Mr934XS9b1b902SsRqFA3wEggMeJUYQl1tcGi10FRbQvW1nIqfDQxZayrkDXbWNx6J1Zd3Nc7H27S4n+DTk6hjrdxlFsFvQkQVnvzdH5M3SpBx6qWnf7xAe56HbOjoJFWLb6ay3BcVs+6fZ6udqv1Nlw9P5OfyV7UyOuXyW4PFK4UM2nWtfeaJlutmL3PljCxvRQaubLsTa3ehJW+sotUYd4sQJj81MhpQdubkqbQFbboUNGZt685aVfnyHEpNkiFO45TytakB/dfKRWuOQpdtyYuxP2zRs7AUQ/Q53vJzmA0Fn7uab6hORwP3KNm7ji5Y7UeS1QfEnGUQyId7iyeBc3xRUHTlo2Z7Lo0ziRKJUi2PFF7YNP+hUFNYdl5WCs0nmlZJY3njU7UeJLMT8tYZ3xutoX9ZriSAlX31B1rWzrY5DbcsW4LVw02mE7FVbnKxnFP/Rtqx8KqeoPjrdBiynvFslvU+M+HyHmL1rRQj5dmC8OLomz7+v8=</diagram></mxfile>
ld_client/doc/uml/ld_uml.txt
1
@startuml
2
interface IProcessDection {
3
  + void RunPeriodicDetection()
4
}
5

  
6
class ProcessDetection {
7
   ____
8
  + ProcessProcessDetection(string processName,
9
                            uint detectionPeriodMs,
10
                            InfoFetcher infoFetcher,
11
                            IApiClient apiClient)
12
                            
13
  + async void RunPeriodicDetection()
14
}
15

  
16
interface IApiClient {
17
  + Task SendPayloadAsync(Payload payload)
18
  + void Run()
19
}
20

  
21
class ApiClient {
22
  ____
23
  + ApiClient(string url, uint port,
24
              string path, uint retryPeriod,
25
              uint maxEntries, uint maxRetries,
26
              string cacheFilename)
27
  
28
  + async Task SendPayloadAsync(Payload payload)
29
  + async void Run()
30
}
31

  
32
class InfoFetcher {
33
  ____
34
  + string HeadSerialNumber
35
  + string BodySerialNumber
36
  
37
  + InfoFetcher(uint maxAttempts, uint waitPeriodMs,
38
                string infoFilePath, string f32RemExecutable,
39
                string[] f32RemArguments, int f32SuccessExitCode,
40
                int f32WaitTimeoutMs)
41
  
42
  + async Task<bool> FetchDataAsync()
43
}
44

  
45
class DebuggerInfoParser {
46
  + {static} static (string headSerialNumber,
47
    {static} string bodySerialNumber) Parse(string dataTxt)
48
}
49

  
50
abstract class ALogger{
51
  + ALogger Current
52

  
53
  - LogVerbosity _verbosity
54
  - LogFlow _logFlow
55

  
56
  + void Info(string message)
57
  + void Debug(string message)
58
  + void Error(string message)
59
  + void Error(Exception e)
60
  
61
  # ALogger()
62
  
63
  {abstract} # CreateLog(string message)
64
}
65

  
66

  
67
class FileLogger{
68
  # CreateLog(string message)
69
  - void Rotate(string filePat)
70
  
71
}
72

  
73
class ConsoleLogger{
74
 # CreateLog(string message)
75
 
76
}
77

  
78
enum LogVerbosity{
79
  None
80
  Exceptions
81
  Full
82
}
83

  
84
enum LogFlow{
85
  Console
86
  File
87
}
88

  
89

  
90
class Payload{
91
  + string UserName
92
  + string HostName
93
  + string TimeStamp
94
  + DebuggerInfo HeadDevice
95
  + DebuggerInfo BodyDevice
96
  + ConnectionStatus Status
97
}
98

  
99
class DebuggerInfo{
100
  + string SerialNumber
101
}
102

  
103
enum ConnectionStatus{
104
  Connected
105
  Disconnected
106
}
107

  
108
LogVerbosity -[hidden] ALogger
109
ALogger -left[hidden] LogFlow
110

  
111
ALogger ---left[hidden] ProcessDetection
112

  
113
Payload -right[hidden] ApiClient
114

  
115
ALogger <|.. FileLogger
116
ALogger <|.. ConsoleLogger
117
ALogger .. LogVerbosity
118
ALogger .. LogFlow
119

  
120
Payload o- DebuggerInfo
121
Payload o- ConnectionStatus
122

  
123
IProcessDection <|.. ProcessDetection : implements
124
IApiClient <|.. ApiClient : implements
125
DebuggerInfoParser <.. InfoFetcher : calls (uses)
126
ProcessDetection o-- IApiClient : is held in
127
note on link: Uses ApiClient to send\ndatato the server
128
ProcessDetection o-- InfoFetcher : is held in
129
note on link: Calls FetchDataAsync,\nreads the status\ncode (true/false)
130

  
131
class DebuggerInfoParser
132
note left: Parses the content of a .txt file \n(throws an ArgumentException)
133

  
134
class InfoFetcher
135
note left: Sends commands to the\ndebugger, periodically attempts\nto parse the .txt file 
136

  
137
class ApiClient
138
note left: Sends data (payload) to the server,\nmanages a file-based cache.
139

  
140
class ProcessDetection
141
note top: Detects a running\nprocess (t32mtc)
142

  
143
note top of ALogger
144
  Wraps up common logging functions.
145
  Singleton design pattern
146
end note
147

  
148
note bottom of FileLogger
149
  Transfers logs into file. Upon reaching
150
  specified size starts logging into new file. 
151
  Full block of files are zipped.
152
end note
153

  
154
@enduml

Také k dispozici: Unified diff