using System; using System.Text; namespace Unosquare.Swan { /// /// The event arguments for connection failure events. /// /// public class ConnectionFailureEventArgs : EventArgs { /// /// Initializes a new instance of the class. /// /// The ex. public ConnectionFailureEventArgs(Exception ex) => this.Error = ex; /// /// Gets the error. /// /// /// The error. /// public Exception Error { get; } } /// /// Event arguments for when data is received. /// /// public class ConnectionDataReceivedEventArgs : EventArgs { /// /// Initializes a new instance of the class. /// /// The buffer. /// The trigger. /// if set to true [more available]. public ConnectionDataReceivedEventArgs(Byte[] buffer, ConnectionDataReceivedTrigger trigger, Boolean moreAvailable) { this.Buffer = buffer ?? throw new ArgumentNullException(nameof(buffer)); this.Trigger = trigger; this.HasMoreAvailable = moreAvailable; } /// /// Gets the buffer. /// /// /// The buffer. /// public Byte[] Buffer { get; } /// /// Gets the cause as to why this event was thrown. /// /// /// The trigger. /// public ConnectionDataReceivedTrigger Trigger { get; } /// /// Gets a value indicating whether the receive buffer has more bytes available. /// /// /// true if this instance has more available; otherwise, false. /// public Boolean HasMoreAvailable { get; } /// /// Gets the string from the given buffer. /// /// The buffer. /// The encoding. /// A that contains the results of decoding the specified sequence of bytes. public static String GetStringFromBuffer(Byte[] buffer, Encoding encoding) => encoding.GetString(buffer).TrimEnd('\r', '\n'); /// /// Gets the string from buffer. /// /// The encoding. /// A that contains the results of decoding the specified sequence of bytes. public String GetStringFromBuffer(Encoding encoding) => GetStringFromBuffer(this.Buffer, encoding); } }