#647 add to ElectronNET.API Process member interfaces for various fields

This commit is contained in:
Todd Schavey
2022-01-02 22:46:53 -05:00
parent 562cccbfae
commit ba82b9a600
6 changed files with 317 additions and 71 deletions

View File

@@ -37,92 +37,145 @@ namespace ElectronNET.API
private static readonly object _syncRoot = new();
/// <summary>
/// The process.execPath property returns the absolute pathname of the executable that started the Node.js process. Symbolic links, if any, are resolved.
/// </summary>
/// <example>
/// <code>
/// var path = await Electron.Process.ExecPathAsync;
/// </code>
/// </example>
/// The process.execPath property returns the absolute pathname of the executable that
/// started the Node.js process. Symbolic links, if any, are resolved.
/// </summary>
public Task<string> ExecPathAsync
{
get
{
CancellationToken cancellationToken = new();
cancellationToken.ThrowIfCancellationRequested();
var taskCompletionSource = new TaskCompletionSource<string>();
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
BridgeConnector.Socket.On("process-execPathCompleted", (text) =>
{
BridgeConnector.Socket.Off("process-execPathCompleted");
taskCompletionSource.SetResult((string) text);
});
BridgeConnector.Socket.Emit("process-execPath");
return taskCompletionSource.Task;
}
return BridgeConnector.GetValueOverSocketAsync<string>(
"process-execPath", "process-execPath-Completed");
}
}
/// <summary>
/// TBD
/// The process.argv property returns an array containing the command-line arguments passed
/// when the Node.js process was launched. The first element will be process.execPath. See
/// process.argv0 if access to the original value of argv[0] is needed. The second element
/// will be the path to the JavaScript file being executed. The remaining elements will be
/// any additional command-line arguments
/// </summary>
/// <value></value>
public Task<string[]> ArgvAsync
{
get
{
CancellationToken cancellationToken = new();
cancellationToken.ThrowIfCancellationRequested();
var taskCompletionSource = new TaskCompletionSource<string[]>();
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
BridgeConnector.Socket.On("process-argvCompleted", (value) =>
{
BridgeConnector.Socket.Off("process-argvCompleted");
taskCompletionSource.SetResult( ((JArray)value).ToObject<string[]>() );
});
BridgeConnector.Socket.Emit("process-argv");
return taskCompletionSource.Task;
}
return BridgeConnector.GetArrayOverSocketAsync<string[]>(
"process-argv", "process-argv-Completed");
}
}
/// <summary>
/// The process.execPath property returns the absolute pathname of the executable that started the Node.js process. Symbolic links, if any, are resolved.
/// The process.execPath property returns the absolute pathname of the executable that
/// started the Node.js process. Symbolic links, if any, are resolved.
/// </summary>
/// <example>
/// <code>
/// var path = await Electron.Process.ExecPathAsync;
/// </code>
/// </example>
public Task<string> TypeAsync
{
get
{
CancellationToken cancellationToken = new();
cancellationToken.ThrowIfCancellationRequested();
var taskCompletionSource = new TaskCompletionSource<string>();
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
{
BridgeConnector.Socket.On("process-typeCompleted", (text) =>
{
BridgeConnector.Socket.Off("process-typeCompleted");
taskCompletionSource.SetResult((string) text);
});
BridgeConnector.Socket.Emit("process-type");
return taskCompletionSource.Task;
}
return BridgeConnector.GetValueOverSocketAsync<string>(
"process-type", "process-type-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<Versions> VersionsAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<Versions>(
"process-versions", "process-versions-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<bool> DefaultAppAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<bool>(
"process-defaultApp", "process-defaultApp-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<bool> IsMainFrameAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<bool>(
"process-isMainFrame", "process-isMainFrame-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<string> ResourcesPathAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<string>(
"process-resourcesPath", "process-resourcesPath-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<double> UpTimeAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<double>(
"process-uptime", "process-uptime-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<int> PidAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<int>(
"process-pid", "process-pid-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<string> ArchAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<string>(
"process-arch", "process-arch-Completed");
}
}
/// <summary>
///
/// </summary>
public Task<string> PlatformAsync
{
get
{
return BridgeConnector.GetValueOverSocketAsync<string>(
"process-platform", "process-platform-Completed");
}
}
}
}