From 5645e8e7f388d04b0a84354797349688dd5d7438 Mon Sep 17 00:00:00 2001 From: Jan Korf Date: Mon, 26 Nov 2018 07:22:01 +0100 Subject: [PATCH] added sub/unsub methods, added waiting for id event --- CryptoExchange.Net/SocketClient.cs | 16 ++++++++++++++++ CryptoExchange.Net/Sockets/SocketEvent.cs | 1 + CryptoExchange.Net/Sockets/SocketSubscription.cs | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/CryptoExchange.Net/SocketClient.cs b/CryptoExchange.Net/SocketClient.cs index c79efc3..c200c5f 100644 --- a/CryptoExchange.Net/SocketClient.cs +++ b/CryptoExchange.Net/SocketClient.cs @@ -155,6 +155,22 @@ namespace CryptoExchange.Net socket.Send(data); } + public virtual async Task Unsubscribe(UpdateSubscription sub) + { + await sub.Close(); + } + + public virtual async Task UnsubscribeAll() + { + await Task.Run(() => + { + var tasks = new List(); + foreach (var sub in new List(sockets)) + tasks.Add(sub.Close()); + Task.WaitAll(tasks.ToArray()); + }); + } + public override void Dispose() { lock(sockets) diff --git a/CryptoExchange.Net/Sockets/SocketEvent.cs b/CryptoExchange.Net/Sockets/SocketEvent.cs index eb8a650..3585cd0 100644 --- a/CryptoExchange.Net/Sockets/SocketEvent.cs +++ b/CryptoExchange.Net/Sockets/SocketEvent.cs @@ -6,6 +6,7 @@ namespace CryptoExchange.Net.Sockets public class SocketEvent { public string Name { get; set; } + public int Id { get; set; } private CallResult result; private ManualResetEvent setEvnt; diff --git a/CryptoExchange.Net/Sockets/SocketSubscription.cs b/CryptoExchange.Net/Sockets/SocketSubscription.cs index b6364ac..de80738 100644 --- a/CryptoExchange.Net/Sockets/SocketSubscription.cs +++ b/CryptoExchange.Net/Sockets/SocketSubscription.cs @@ -64,6 +64,13 @@ namespace CryptoExchange.Net.Sockets return Events.Single(e => e.Name == name).Wait(); } + public CallResult WaitForEvent(string name, int id) + { + var evnt = Events.Single(e => e.Name == name); + evnt.Id = id; + return evnt.Wait(); + } + public async Task Close() { Socket.ShouldReconnect = false;