Revize 7b6b75a3
Přidáno uživatelem Jakub Šilhavý před téměř 3 roky(ů)
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
re #9573 Added a sequence and UML diagram