Projekt

Obecné

Profil

Stáhnout (3.03 KB) Statistiky
| Větev: | Tag: | Revize:
1
namespace LDClient.detection; 
2

    
3
public class T32RemFetcher : AInfoFetcher{
4

    
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;
9

    
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;
15

    
16
    /// <summary>
17
    /// Status code indicating a successful termination of t32rem.exe
18
    /// </summary>
19
    private readonly int _f32SuccessExitCode;
20

    
21

    
22
    /// <summary>
23
    /// Timeout used when waiting for the t32rem.exe to finish.
24
    /// </summary>
25
    private readonly int _f32WaitTimeoutMs;
26

    
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;
32

    
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();
50

    
51
    }
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;
62
        }
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
    }
71
}
(10-10/10)