using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; namespace CryptoExchange.Net.Sockets { /// /// A system subscription /// public abstract class SystemSubscription : Subscription { /// /// ctor /// /// /// public SystemSubscription(ILogger logger, bool authenticated = false) : base(logger, authenticated, false) { Confirmed = true; } /// public override Query? GetSubQuery(SocketConnection connection) => null; /// public override Query? GetUnsubQuery() => null; } /// public abstract class SystemSubscription : SystemSubscription { /// public override Type GetMessageType(IMessageAccessor message) => typeof(T); /// public override CallResult DoHandleMessage(SocketConnection connection, DataEvent message) => HandleMessage(connection, message.As((T)message.Data)); /// /// ctor /// /// /// protected SystemSubscription(ILogger logger, bool authenticated) : base(logger, authenticated) { } /// /// Handle an update message /// /// /// /// public abstract CallResult HandleMessage(SocketConnection connection, DataEvent message); } }