mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-08 16:36:15 +00:00
Updated json.net, some fixes in socket events
This commit is contained in:
parent
596b28dd47
commit
850a0a91b6
@ -16,7 +16,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
<PackageReference Include="WebSocket4Net" Version="0.15.2" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@ -67,6 +67,9 @@ namespace CryptoExchange.Net
|
||||
socket.DataInterpreter = dataInterpreter;
|
||||
socket.OnClose += () =>
|
||||
{
|
||||
foreach (var sub in sockets)
|
||||
sub.ResetEvents();
|
||||
|
||||
SocketOnClose(socket);
|
||||
};
|
||||
socket.OnError += (e) =>
|
||||
|
@ -65,7 +65,12 @@ namespace CryptoExchange.Net.Sockets
|
||||
|
||||
public void SetEvent(string name, bool success, Error error)
|
||||
{
|
||||
Events.SingleOrDefault(e => e.Name == name)?.Set(success, error);
|
||||
var waitingEvent = waitingForEvents.SingleOrDefault(e => e.Name == name);
|
||||
if (waitingEvent != null)
|
||||
{
|
||||
waitingEvent.Set(success, error);
|
||||
waitingForEvents.Remove(waitingEvent);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetEvent(int id, bool success, Error error)
|
||||
@ -84,24 +89,25 @@ namespace CryptoExchange.Net.Sockets
|
||||
}
|
||||
|
||||
public Task<CallResult<bool>> WaitForEvent(string name, int timeout)
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
var evnt = Events.Single(e => e.Name == name);
|
||||
waitingForEvents.Add(evnt);
|
||||
return evnt.Wait(timeout);
|
||||
});
|
||||
return Task.Run(() => evnt.Wait(timeout));
|
||||
}
|
||||
|
||||
public Task<CallResult<bool>> WaitForEvent(string name, int id, int timeout)
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
var evnt = Events.Single(e => e.Name == name);
|
||||
evnt.WaitingId = id;
|
||||
waitingForEvents.Add(evnt);
|
||||
return evnt.Wait(timeout);
|
||||
});
|
||||
return Task.Run(() => evnt.Wait(timeout));
|
||||
}
|
||||
|
||||
public void ResetEvents()
|
||||
{
|
||||
foreach (var waiting in new List<SocketEvent>(waitingForEvents))
|
||||
waiting.Set(false, new UnknownError("Connection reset"));
|
||||
waitingForEvents.Clear();
|
||||
}
|
||||
|
||||
public async Task Close()
|
||||
|
Loading…
x
Reference in New Issue
Block a user