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

Added state getter for socket

This commit is contained in:
JKorf 2018-09-07 12:12:56 +02:00
parent 43df283761
commit 9e8ccd6a0f
4 changed files with 12 additions and 99 deletions

View File

@ -39,6 +39,16 @@ namespace CryptoExchange.Net.Implementation
set => socket.AutoSendPingInterval = (int) Math.Round(value.TotalSeconds);
}
public WebSocketState SocketState
{
get
{
if (socket == null)
return WebSocketState.None;
return socket.State;
}
}
public BaseSocket(Log log, string url):this(log, url, new Dictionary<string, string>(), new Dictionary<string, string>())
{
}

View File

@ -1,86 +0,0 @@
using System;
using System.Collections.Generic;
using System.Security.Authentication;
using System.Threading.Tasks;
using CryptoExchange.Net.Interfaces;
namespace CryptoExchange.Net.Implementation
{
public class TestWebsocket: IWebsocket
{
public List<string> MessagesSend = new List<string>();
public void Dispose()
{
}
public void SetEnabledSslProtocols(SslProtocols protocols)
{
}
public void SetProxy(string host, int port)
{
}
public event Action OnClose;
public event Action<string> OnMessage;
public event Action<Exception> OnError;
public event Action OnOpen;
public bool IsClosed { get; private set; } = true;
public bool IsOpen { get; private set; }
public bool PingConnection { get; set; }
public TimeSpan PingInterval { get; set; }
public bool HasConnection = true;
public Task<bool> Connect()
{
if (!HasConnection)
{
OnError?.Invoke(new Exception("No connection"));
return Task.FromResult(false);
}
IsClosed = false;
IsOpen = true;
OnOpen?.Invoke();
return Task.FromResult(true);
}
public void Send(string data)
{
if (!HasConnection)
{
OnError?.Invoke(new Exception("No connection"));
Close();
return;
}
MessagesSend.Add(data);
}
public async Task EnqueueMessage(string data, int wait)
{
await Task.Delay(wait);
OnMessage?.Invoke(data);
}
public async Task InvokeError(Exception ex, bool closeConnection)
{
await Task.Delay(10);
OnError?.Invoke(ex);
if (closeConnection)
await Close();
}
public Task Close()
{
IsClosed = true;
IsOpen = false;
OnClose?.Invoke();
return Task.FromResult(0);
}
}
}

View File

@ -1,13 +0,0 @@
using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Logging;
namespace CryptoExchange.Net.Implementation
{
public class TestWebsocketFactory : IWebsocketFactory
{
public IWebsocket CreateWebsocket(Log log, string url)
{
return new TestWebsocket();
}
}
}

View File

@ -1,6 +1,7 @@
using System;
using System.Security.Authentication;
using System.Threading.Tasks;
using WebSocket4Net;
namespace CryptoExchange.Net.Interfaces
{
@ -13,6 +14,7 @@ namespace CryptoExchange.Net.Interfaces
event Action<Exception> OnError;
event Action OnOpen;
WebSocketState SocketState { get; }
bool IsClosed { get; }
bool IsOpen { get; }
bool PingConnection { get; set; }