Skip to content

Commit 979cf72

Browse files
authored
Merge pull request #920 from Denny09310/feature/using-once
feat: Add "Once" socket listener registration for one-time handlers
2 parents 14bf7fd + 9a0a494 commit 979cf72

24 files changed

+310
-750
lines changed

src/ElectronNET.API/API/ApiBase.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,8 @@ public PropertyGetter(ApiBase apiBase, string callerName, int timeoutMs)
152152

153153
var messageName = apiBase.propertyMessageNames.GetOrAdd(callerName, s => apiBase.objectName + s.StripAsync());
154154

155-
BridgeConnector.Socket.On<T>(eventName, (result) =>
155+
BridgeConnector.Socket.Once<T>(eventName, (result) =>
156156
{
157-
BridgeConnector.Socket.Off(eventName);
158-
159157
lock (this)
160158
{
161159
try

src/ElectronNET.API/API/App.cs

Lines changed: 11 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -547,13 +547,7 @@ public async Task<string> GetPathAsync(PathName pathName, CancellationToken canc
547547
var taskCompletionSource = new TaskCompletionSource<string>();
548548
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
549549
{
550-
BridgeConnector.Socket.On<string>("appGetPathCompleted", (path) =>
551-
{
552-
BridgeConnector.Socket.Off("appGetPathCompleted");
553-
554-
taskCompletionSource.SetResult(path);
555-
});
556-
550+
BridgeConnector.Socket.Once<string>("appGetPathCompleted", taskCompletionSource.SetResult);
557551
BridgeConnector.Socket.Emit("appGetPath", pathName.GetDescription());
558552

559553
return await taskCompletionSource.Task
@@ -716,12 +710,7 @@ public async Task<bool> SetAsDefaultProtocolClientAsync(string protocol, string
716710
var taskCompletionSource = new TaskCompletionSource<bool>();
717711
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
718712
{
719-
BridgeConnector.Socket.On<bool>("appSetAsDefaultProtocolClientCompleted", (success) =>
720-
{
721-
BridgeConnector.Socket.Off("appSetAsDefaultProtocolClientCompleted");
722-
taskCompletionSource.SetResult(success);
723-
});
724-
713+
BridgeConnector.Socket.Once<bool>("appSetAsDefaultProtocolClientCompleted", taskCompletionSource.SetResult);
725714
BridgeConnector.Socket.Emit("appSetAsDefaultProtocolClient", protocol, path, args);
726715

727716
return await taskCompletionSource.Task
@@ -770,12 +759,7 @@ public async Task<bool> RemoveAsDefaultProtocolClientAsync(string protocol, stri
770759
var taskCompletionSource = new TaskCompletionSource<bool>();
771760
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
772761
{
773-
BridgeConnector.Socket.On<bool>("appRemoveAsDefaultProtocolClientCompleted", (success) =>
774-
{
775-
BridgeConnector.Socket.Off("appRemoveAsDefaultProtocolClientCompleted");
776-
taskCompletionSource.SetResult(success);
777-
});
778-
762+
BridgeConnector.Socket.Once<bool>("appRemoveAsDefaultProtocolClientCompleted", taskCompletionSource.SetResult);
779763
BridgeConnector.Socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path, args);
780764

781765
return await taskCompletionSource.Task
@@ -842,12 +826,7 @@ public async Task<bool> IsDefaultProtocolClientAsync(string protocol, string pat
842826
var taskCompletionSource = new TaskCompletionSource<bool>();
843827
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
844828
{
845-
BridgeConnector.Socket.On<bool>("appIsDefaultProtocolClientCompleted", (success) =>
846-
{
847-
BridgeConnector.Socket.Off("appIsDefaultProtocolClientCompleted");
848-
taskCompletionSource.SetResult(success);
849-
});
850-
829+
BridgeConnector.Socket.Once<bool>("appIsDefaultProtocolClientCompleted", taskCompletionSource.SetResult);
851830
BridgeConnector.Socket.Emit("appIsDefaultProtocolClient", protocol, path, args);
852831

853832
return await taskCompletionSource.Task
@@ -870,12 +849,7 @@ public async Task<bool> SetUserTasksAsync(UserTask[] userTasks, CancellationToke
870849
var taskCompletionSource = new TaskCompletionSource<bool>();
871850
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
872851
{
873-
BridgeConnector.Socket.On<bool>("appSetUserTasksCompleted", (success) =>
874-
{
875-
BridgeConnector.Socket.Off("appSetUserTasksCompleted");
876-
taskCompletionSource.SetResult(success);
877-
});
878-
852+
BridgeConnector.Socket.Once<bool>("appSetUserTasksCompleted", taskCompletionSource.SetResult);
879853
BridgeConnector.Socket.Emit("appSetUserTasks", userTasks);
880854

881855
return await taskCompletionSource.Task
@@ -943,11 +917,7 @@ public async Task<bool> RequestSingleInstanceLockAsync(Action<string[], string>
943917
var taskCompletionSource = new TaskCompletionSource<bool>();
944918
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
945919
{
946-
BridgeConnector.Socket.On<bool>("appRequestSingleInstanceLockCompleted", (success) =>
947-
{
948-
BridgeConnector.Socket.Off("appRequestSingleInstanceLockCompleted");
949-
taskCompletionSource.SetResult(success);
950-
});
920+
BridgeConnector.Socket.Once<bool>("appRequestSingleInstanceLockCompleted", taskCompletionSource.SetResult);
951921

952922
BridgeConnector.Socket.Off("secondInstance");
953923
BridgeConnector.Socket.On<JsonElement>("secondInstance", (result) =>
@@ -1069,12 +1039,7 @@ public async Task<int> ImportCertificateAsync(ImportCertificateOptions options,
10691039
var taskCompletionSource = new TaskCompletionSource<int>();
10701040
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
10711041
{
1072-
BridgeConnector.Socket.On<int>("appImportCertificateCompleted", (result) =>
1073-
{
1074-
BridgeConnector.Socket.Off("appImportCertificateCompleted");
1075-
taskCompletionSource.SetResult(result);
1076-
});
1077-
1042+
BridgeConnector.Socket.Once<int>("appImportCertificateCompleted", taskCompletionSource.SetResult);
10781043
BridgeConnector.Socket.Emit("appImportCertificate", options);
10791044

10801045
return await taskCompletionSource.Task
@@ -1125,12 +1090,7 @@ public async Task<bool> SetBadgeCountAsync(int count, CancellationToken cancella
11251090
var taskCompletionSource = new TaskCompletionSource<bool>();
11261091
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
11271092
{
1128-
BridgeConnector.Socket.On<bool>("appSetBadgeCountCompleted", (success) =>
1129-
{
1130-
BridgeConnector.Socket.Off("appSetBadgeCountCompleted");
1131-
taskCompletionSource.SetResult(success);
1132-
});
1133-
1093+
BridgeConnector.Socket.Once<bool>("appSetBadgeCountCompleted", taskCompletionSource.SetResult);
11341094
BridgeConnector.Socket.Emit("appSetBadgeCount", count);
11351095

11361096
return await taskCompletionSource.Task
@@ -1185,11 +1145,7 @@ public async Task<LoginItemSettings> GetLoginItemSettingsAsync(LoginItemSettings
11851145
var taskCompletionSource = new TaskCompletionSource<LoginItemSettings>();
11861146
using (cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()))
11871147
{
1188-
BridgeConnector.Socket.On<LoginItemSettings>("appGetLoginItemSettingsCompleted", (result) =>
1189-
{
1190-
BridgeConnector.Socket.Off("appGetLoginItemSettingsCompleted");
1191-
taskCompletionSource.SetResult(result);
1192-
});
1148+
BridgeConnector.Socket.Once<LoginItemSettings>("appGetLoginItemSettingsCompleted", taskCompletionSource.SetResult);
11931149

11941150
if (options == null)
11951151
{
@@ -1304,13 +1260,8 @@ public Task<string> UserAgentFallbackAsync
13041260
return Task.Run(() =>
13051261
{
13061262
var taskCompletionSource = new TaskCompletionSource<string>();
1307-
1308-
BridgeConnector.Socket.On<string>("appGetUserAgentFallbackCompleted", (result) =>
1309-
{
1310-
BridgeConnector.Socket.Off("appGetUserAgentFallbackCompleted");
1311-
taskCompletionSource.SetResult(result);
1312-
});
1313-
1263+
1264+
BridgeConnector.Socket.Once<string>("appGetUserAgentFallbackCompleted", taskCompletionSource.SetResult);
13141265
BridgeConnector.Socket.Emit("appGetUserAgentFallback");
13151266

13161267
return taskCompletionSource.Task;

0 commit comments

Comments
 (0)