1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-07 16:06:15 +00:00

Update socket Close to return Task, removed eventhandlers after opening socket

This commit is contained in:
JKorf 2018-03-09 11:39:47 +01:00
parent e5f5125f8f
commit 7996fa4c20
4 changed files with 19 additions and 8 deletions

View File

@ -7,7 +7,7 @@
<PropertyGroup> <PropertyGroup>
<PackageId>CryptoExchange.Net</PackageId> <PackageId>CryptoExchange.Net</PackageId>
<Authors>JKorf</Authors> <Authors>JKorf</Authors>
<PackageVersion>0.0.9</PackageVersion> <PackageVersion>0.0.10</PackageVersion>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance> <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl> <PackageProjectUrl>https://github.com/JKorf/CryptoExchange.Net</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl> <PackageLicenseUrl>https://github.com/JKorf/CryptoExchange.Net/blob/master/LICENSE</PackageLicenseUrl>

View File

@ -9,7 +9,7 @@ using CryptoExchange.Net.Interfaces;
using SuperSocket.ClientEngine.Proxy; using SuperSocket.ClientEngine.Proxy;
using WebSocket4Net; using WebSocket4Net;
namespace CryptoExchange.Net namespace CryptoExchange.Net.Implementation
{ {
public class BaseSocket: IWebsocket public class BaseSocket: IWebsocket
{ {
@ -69,9 +69,17 @@ namespace CryptoExchange.Net
handle(data); handle(data);
} }
public void Close() public async Task Close()
{ {
socket.Close(); await Task.Run(() =>
{
ManualResetEvent evnt = new ManualResetEvent(false);
var handler = new EventHandler((o, a) => evnt.Set());
socket.Closed += handler;
socket.Close();
evnt.WaitOne();
socket.Closed -= handler;
});
} }
public void Send(string data) public void Send(string data)
@ -84,10 +92,13 @@ namespace CryptoExchange.Net
return await Task.Run(() => return await Task.Run(() =>
{ {
ManualResetEvent evnt = new ManualResetEvent(false); ManualResetEvent evnt = new ManualResetEvent(false);
socket.Opened += (o, s) => evnt.Set(); var handler = new EventHandler((o, a) => evnt.Set());
socket.Closed += (o, s) => evnt.Set(); socket.Opened += handler;
socket.Closed += handler;
socket.Open(); socket.Open();
evnt.WaitOne(); evnt.WaitOne();
socket.Opened -= handler;
socket.Closed -= handler;
return socket.State == WebSocketState.Open; return socket.State == WebSocketState.Open;
}); });
} }

View File

@ -1,6 +1,6 @@
using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Interfaces;
namespace CryptoExchange.Net namespace CryptoExchange.Net.Implementation
{ {
public class WebsocketFactory : IWebsocketFactory public class WebsocketFactory : IWebsocketFactory
{ {

View File

@ -18,7 +18,7 @@ namespace CryptoExchange.Net.Interfaces
Task<bool> Connect(); Task<bool> Connect();
void Send(string data); void Send(string data);
void Close(); Task Close();
void SetProxy(string host, int port); void SetProxy(string host, int port);
} }
} }