Revize e6a01bd8
Přidáno uživatelem Pultak před více než 2 roky(ů)
ld_client/LDClient/detection/T32RemFetcher.cs | ||
---|---|---|
1 |
using System.Diagnostics; |
|
2 |
using LDClient.utils; |
|
3 |
using LDClient.utils.loggers; |
|
1 |
namespace LDClient.detection; |
|
4 | 2 |
|
5 |
namespace LDClient.detection {
|
|
3 |
public class T32RemFetcher : AInfoFetcher{
|
|
6 | 4 |
|
7 |
public class T32RemFetcher : AInfoFetcher{ |
|
5 |
/// <summary> |
|
6 |
/// Path to the t32rem.exe file which is used to send commands to the debugger. |
|
7 |
/// </summary> |
|
8 |
private readonly string _f32RemExecutable; |
|
8 | 9 |
|
9 |
/// <summary> |
|
10 |
/// Path to the t32rem.exe file which is used to send commands to the debugger. |
|
11 |
/// </summary> |
|
12 |
private readonly string _f32RemExecutable; |
|
10 |
/// <summary> |
|
11 |
/// Arguments (commands) sent to the debugger in order to generate a .txt file |
|
12 |
/// containing all the desired information. |
|
13 |
/// </summary> |
|
14 |
private readonly string[] _f32RemArguments; |
|
13 | 15 |
|
14 |
/// <summary> |
|
15 |
/// Arguments (commands) sent to the debugger in order to generate a .txt file |
|
16 |
/// containing all the desired information. |
|
17 |
/// </summary> |
|
18 |
private readonly string[] _f32RemArguments; |
|
16 |
/// <summary> |
|
17 |
/// Status code indicating a successful termination of t32rem.exe |
|
18 |
/// </summary> |
|
19 |
private readonly int _f32SuccessExitCode; |
|
19 | 20 |
|
20 |
/// <summary> |
|
21 |
/// Status code indicating a successful termination of t32rem.exe |
|
22 |
/// </summary> |
|
23 |
private readonly int _f32SuccessExitCode; |
|
24 | 21 |
|
22 |
/// <summary> |
|
23 |
/// Timeout used when waiting for the t32rem.exe to finish. |
|
24 |
/// </summary> |
|
25 |
private readonly int _f32WaitTimeoutMs; |
|
25 | 26 |
|
26 |
/// <summary> |
|
27 |
/// Timeout used when waiting for the t32rem.exe to finish. |
|
28 |
/// </summary> |
|
29 |
private readonly int _f32WaitTimeoutMs; |
|
27 |
/// <summary> |
|
28 |
/// Instance of ProcessUtils which encapsulates common functionality |
|
29 |
/// when it comes to dealing with processes (limited by the needs of this application). |
|
30 |
/// </summary> |
|
31 |
public IProcessUtils ProcessUtils; |
|
30 | 32 |
|
31 |
/// <summary> |
|
32 |
/// Instance of ProcessUtils which encapsulates common functionality |
|
33 |
/// when it comes to dealing with processes (limited by the needs of this application). |
|
34 |
/// </summary> |
|
35 |
public IProcessUtils ProcessUtils; |
|
33 |
/// <summary> |
|
34 |
/// Creates an instance of this class. |
|
35 |
/// </summary> |
|
36 |
/// <param name="maxAttempts">Maximum number of attempts to locate and parse the .txt file</param> |
|
37 |
/// <param name="waitPeriodMs">Period (how often) the application tries to locate and parse the .txt file</param> |
|
38 |
/// <param name="infoFilePath">Path to the .txt file which is generated from the debugger</param> |
|
39 |
/// <param name="f32RemExecutable">Path to the t32rem.exe file which is used to send commands to the debugger</param> |
|
40 |
/// <param name="f32RemArguments">Arguments (commands) sent to the debugger in order to generate a .txt file containing all the desired information.</param> |
|
41 |
/// <param name="f32SuccessExitCode">Status code indicating a successful termination of t32rem.exe</param> |
|
42 |
/// <param name="f32WaitTimeoutMs">Timeout used when waiting for the t32rem.exe to finish</param> |
|
43 |
public T32RemFetcher(uint maxAttempts, uint waitPeriodMs, string infoFilePath, string f32RemExecutable, |
|
44 |
string[] f32RemArguments, int f32SuccessExitCode, int f32WaitTimeoutMs) : base(maxAttempts, waitPeriodMs, infoFilePath) { |
|
45 |
_f32RemExecutable = f32RemExecutable; |
|
46 |
_f32RemArguments = f32RemArguments; |
|
47 |
_f32SuccessExitCode = f32SuccessExitCode; |
|
48 |
_f32WaitTimeoutMs = f32WaitTimeoutMs; |
|
49 |
ProcessUtils = new ProcessUtils(); |
|
36 | 50 |
|
37 |
/// <summary> |
|
38 |
/// Creates an instance of this class. |
|
39 |
/// </summary> |
|
40 |
/// <param name="maxAttempts">Maximum number of attempts to locate and parse the .txt file</param> |
|
41 |
/// <param name="waitPeriodMs">Period (how often) the application tries to locate and parse the .txt file</param> |
|
42 |
/// <param name="infoFilePath">Path to the .txt file which is generated from the debugger</param> |
|
43 |
/// <param name="f32RemExecutable">Path to the t32rem.exe file which is used to send commands to the debugger</param> |
|
44 |
/// <param name="f32RemArguments">Arguments (commands) sent to the debugger in order to generate a .txt file containing all the desired information.</param> |
|
45 |
/// <param name="f32SuccessExitCode">Status code indicating a successful termination of t32rem.exe</param> |
|
46 |
/// <param name="f32WaitTimeoutMs">Timeout used when waiting for the t32rem.exe to finish</param> |
|
47 |
|
|
48 |
public T32RemFetcher(uint maxAttempts, uint waitPeriodMs, string infoFilePath, string f32RemExecutable, |
|
49 |
string[] f32RemArguments, int f32SuccessExitCode, int f32WaitTimeoutMs) : base(maxAttempts, waitPeriodMs, infoFilePath) { |
|
50 |
_f32RemExecutable = f32RemExecutable; |
|
51 |
_f32RemArguments = f32RemArguments; |
|
52 |
_f32SuccessExitCode = f32SuccessExitCode; |
|
53 |
_f32WaitTimeoutMs = f32WaitTimeoutMs; |
|
54 |
ProcessUtils = new ProcessUtils(); |
|
51 |
} |
|
55 | 52 |
|
53 |
/// <summary> |
|
54 |
/// Method tries to fetch the data from the trace32 application |
|
55 |
/// via defined executable |
|
56 |
/// </summary> |
|
57 |
/// <returns>true upon success</returns> |
|
58 |
protected override bool FetchData() { |
|
59 |
if (_f32RemArguments == null) { |
|
60 |
Program.DefaultLogger.Error($"Failed to run {_f32RemExecutable} - no parameters were given"); |
|
61 |
return false; |
|
56 | 62 |
} |
57 |
|
|
58 |
protected override bool FetchData() { |
|
59 |
if (_f32RemArguments == null) { |
|
60 |
Program.DefaultLogger.Error($"Failed to run {_f32RemExecutable} - no parameters were given"); |
|
63 |
// Execute one all arguments (commands) one by one. |
|
64 |
foreach (var argument in _f32RemArguments) { |
|
65 |
if (!ProcessUtils.ExecuteNewProcess(_f32RemExecutable, argument, _f32WaitTimeoutMs, _f32SuccessExitCode)) { |
|
61 | 66 |
return false; |
62 | 67 |
} |
63 |
// Execute one all arguments (commands) one by one. |
|
64 |
foreach (var argument in _f32RemArguments) { |
|
65 |
if (!ProcessUtils.ExecuteNewProcess(_f32RemExecutable, argument, _f32WaitTimeoutMs, _f32SuccessExitCode)) { |
|
66 |
return false; |
|
67 |
} |
|
68 |
} |
|
69 |
return true; |
|
70 | 68 |
} |
69 |
return true; |
|
71 | 70 |
} |
72 | 71 |
} |
Také k dispozici: Unified diff
re #9712 Added documentation of the newly implemented methods + refactoring