-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProcessCollectOutputMonitor.cs
54 lines (45 loc) · 1.48 KB
/
ProcessCollectOutputMonitor.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using Commander.Events;
using JetBrains.Annotations;
namespace Commander.Monitors
{
[PublicAPI]
public class ProcessCollectOutputMonitor : IProcessMonitor
{
[NotNull]
private readonly List<ProcessEvent> _Events = new List<ProcessEvent>();
[PublicAPI]
public ProcessCollectOutputMonitor()
{
}
void IProcessMonitor.Started(IProcess process)
{
_Events.Add(new ProcessStartedEvent(process.ExecutionDuration, DateTime.Now));
}
void IProcessMonitor.Exited(IProcess process, int exitCode)
{
_Events.Add(new ProcessExitedEvent(process.ExecutionDuration, DateTime.Now, exitCode));
}
void IProcessMonitor.Error(IProcess process, string line)
{
if (line == null)
throw new ArgumentNullException(nameof(line));
_Events.Add(new ProcessErrorOutputEvent(process.ExecutionDuration, DateTime.Now, line));
}
void IProcessMonitor.Output(IProcess process, string line)
{
if (line == null)
throw new ArgumentNullException(nameof(line));
_Events.Add(new ProcessStandardOutputEvent(process.ExecutionDuration, DateTime.Now, line));
}
[PublicAPI, NotNull, ItemNotNull]
public List<ProcessEvent> Events
{
get
{
return _Events;
}
}
}
}