using System; namespace ScreenConnect; public abstract class CaptureStreamManager : IDisposable { private Type boundaryMessageType; protected Proc StreamStateDisposer { get; set; } protected CaptureStreamManager(Proc streamStateDisposer) { StreamStateDisposer = streamStateDisposer; } public bool IsBoundaryMessage(CaptureStreamMessage message) { Type type = message.GetType(); if ((object)boundaryMessageType == null && type.GetCustomAttribute() != null) { boundaryMessageType = type; } return (object)type == boundaryMessageType; } public bool AreFromSameStream(CaptureStreamMessage x, CaptureStreamMessage y) { return x.StreamID == y.StreamID; } public abstract TStreamState GetStreamState(CaptureStreamMessage message); public abstract void Dispose(); }