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>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||||
<PackageReference Include="WebSocket4Net" Version="0.15.2" />
|
<PackageReference Include="WebSocket4Net" Version="0.15.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -67,6 +67,9 @@ namespace CryptoExchange.Net
|
|||||||
socket.DataInterpreter = dataInterpreter;
|
socket.DataInterpreter = dataInterpreter;
|
||||||
socket.OnClose += () =>
|
socket.OnClose += () =>
|
||||||
{
|
{
|
||||||
|
foreach (var sub in sockets)
|
||||||
|
sub.ResetEvents();
|
||||||
|
|
||||||
SocketOnClose(socket);
|
SocketOnClose(socket);
|
||||||
};
|
};
|
||||||
socket.OnError += (e) =>
|
socket.OnError += (e) =>
|
||||||
|
@ -65,7 +65,12 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
|
|
||||||
public void SetEvent(string name, bool success, Error error)
|
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)
|
public void SetEvent(int id, bool success, Error error)
|
||||||
@ -85,23 +90,24 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
|
|
||||||
public Task<CallResult<bool>> WaitForEvent(string name, int timeout)
|
public Task<CallResult<bool>> WaitForEvent(string name, int timeout)
|
||||||
{
|
{
|
||||||
return Task.Run(() =>
|
var evnt = Events.Single(e => e.Name == name);
|
||||||
{
|
waitingForEvents.Add(evnt);
|
||||||
var evnt = Events.Single(e => e.Name == name);
|
return Task.Run(() => evnt.Wait(timeout));
|
||||||
waitingForEvents.Add(evnt);
|
|
||||||
return evnt.Wait(timeout);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<CallResult<bool>> WaitForEvent(string name, int id, int 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;
|
||||||
var evnt = Events.Single(e => e.Name == name);
|
waitingForEvents.Add(evnt);
|
||||||
evnt.WaitingId = id;
|
return Task.Run(() => evnt.Wait(timeout));
|
||||||
waitingForEvents.Add(evnt);
|
}
|
||||||
return 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()
|
public async Task Close()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user