namespace ElectronNET.API
{
using System;
using System.Diagnostics;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using ElectronNET.Serialization;
///
/// Communicate asynchronously from the main process to renderer processes.
///
public sealed class IpcMain
{
private static IpcMain _ipcMain;
private static object _syncRoot = new object();
private static readonly JsonSerializerOptions BoxedObjectSerializationOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
WriteIndented = false,
Converters =
{
new JsonStringEnumConverter(JsonNamingPolicy.CamelCase),
new JsonToBoxedPrimitivesConverter(),
}
};
internal IpcMain()
{
}
internal static IpcMain Instance
{
get
{
if (_ipcMain == null)
{
lock (_syncRoot)
{
if (_ipcMain == null)
{
_ipcMain = new IpcMain();
}
}
}
return _ipcMain;
}
}
///
/// Listens to channel, when a new message arrives listener would be called with
/// listener(event, args...).
///
/// Channelname.
/// Callback Method.
public async Task On(string channel, Action