aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Diagnostics')
-rw-r--r--MediaBrowser.Model/Diagnostics/IProcess.cs21
-rw-r--r--MediaBrowser.Model/Diagnostics/IProcessFactory.cs24
2 files changed, 45 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Diagnostics/IProcess.cs b/MediaBrowser.Model/Diagnostics/IProcess.cs
new file mode 100644
index 000000000..7cd26af00
--- /dev/null
+++ b/MediaBrowser.Model/Diagnostics/IProcess.cs
@@ -0,0 +1,21 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Model.Diagnostics
+{
+ public interface IProcess : IDisposable
+ {
+ event EventHandler Exited;
+
+ void Kill();
+ bool WaitForExit(int timeMs);
+ Task<bool> WaitForExitAsync(int timeMs);
+ int ExitCode { get; }
+ void Start();
+ StreamWriter StandardInput { get; }
+ StreamReader StandardError { get; }
+ StreamReader StandardOutput { get; }
+ ProcessOptions StartInfo { get; }
+ }
+}
diff --git a/MediaBrowser.Model/Diagnostics/IProcessFactory.cs b/MediaBrowser.Model/Diagnostics/IProcessFactory.cs
new file mode 100644
index 000000000..a60c4b4fb
--- /dev/null
+++ b/MediaBrowser.Model/Diagnostics/IProcessFactory.cs
@@ -0,0 +1,24 @@
+using System;
+
+namespace MediaBrowser.Model.Diagnostics
+{
+ public interface IProcessFactory
+ {
+ IProcess Create(ProcessOptions options);
+ }
+
+ public class ProcessOptions
+ {
+ public String FileName { get; set; }
+ public String Arguments { get; set; }
+ public String WorkingDirectory { get; set; }
+ public bool CreateNoWindow { get; set; }
+ public bool UseShellExecute { get; set; }
+ public bool EnableRaisingEvents { get; set; }
+ public bool ErrorDialog { get; set; }
+ public bool RedirectStandardError { get; set; }
+ public bool RedirectStandardInput { get; set; }
+ public bool RedirectStandardOutput { get; set; }
+ public bool IsHidden { get; set; }
+ }
+}