Projekt

Obecné

Profil

Stáhnout (3.03 KB) Statistiky
| Větev: | Tag: | Revize:
1 e6a01bd8 Pultak
namespace LDClient.detection; 
2 6cde905f Pultak
3 e6a01bd8 Pultak
public class T32RemFetcher : AInfoFetcher{
4 6cde905f Pultak
5 e6a01bd8 Pultak
    /// <summary>
6
    /// Path to the t32rem.exe file which is used to send commands to the debugger.
7
    /// </summary>
8
    private readonly string _f32RemExecutable;
9 6cde905f Pultak
10 e6a01bd8 Pultak
    /// <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;
15 6cde905f Pultak
16 e6a01bd8 Pultak
    /// <summary>
17
    /// Status code indicating a successful termination of t32rem.exe
18
    /// </summary>
19
    private readonly int _f32SuccessExitCode;
20 6cde905f Pultak
21
22 e6a01bd8 Pultak
    /// <summary>
23
    /// Timeout used when waiting for the t32rem.exe to finish.
24
    /// </summary>
25
    private readonly int _f32WaitTimeoutMs;
26 6cde905f Pultak
27 e6a01bd8 Pultak
    /// <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;
32 6cde905f Pultak
33 e6a01bd8 Pultak
    /// <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();
50 6cde905f Pultak
51 e6a01bd8 Pultak
    }
52 6cde905f Pultak
53 e6a01bd8 Pultak
    /// <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;
62 6cde905f Pultak
        }
63 e6a01bd8 Pultak
        // Execute one all arguments (commands) one by one.
64
        foreach (var argument in _f32RemArguments) {
65
            if (!ProcessUtils.ExecuteNewProcess(_f32RemExecutable, argument, _f32WaitTimeoutMs, _f32SuccessExitCode)) {
66 6cde905f Pultak
                return false;
67
            }
68
        }
69 e6a01bd8 Pultak
        return true;
70 6cde905f Pultak
    }
71
}