using System; namespace MECF.Framework.Common.Communications.Tcp.Buffer { public class BufferValidator { public static void ValidateBuffer(byte[] buffer, int offset, int count, string bufferParameterName = null, string offsetParameterName = null, string countParameterName = null) { if (buffer == null) { throw new ArgumentNullException(!string.IsNullOrEmpty(bufferParameterName) ? bufferParameterName : "buffer"); } if (offset < 0 || offset > buffer.Length) { throw new ArgumentOutOfRangeException(!string.IsNullOrEmpty(offsetParameterName) ? offsetParameterName : "offset"); } if (count < 0 || count > (buffer.Length - offset)) { throw new ArgumentOutOfRangeException(!string.IsNullOrEmpty(countParameterName) ? countParameterName : "count"); } } public static void ValidateArraySegment(ArraySegment arraySegment, string arraySegmentParameterName = null) { if (arraySegment.Array == null) { throw new ArgumentNullException((!string.IsNullOrEmpty(arraySegmentParameterName) ? arraySegmentParameterName : "arraySegment") + ".Array"); } if (arraySegment.Offset < 0 || arraySegment.Offset > arraySegment.Array.Length) { throw new ArgumentOutOfRangeException((!string.IsNullOrEmpty(arraySegmentParameterName) ? arraySegmentParameterName : "arraySegment") + ".Offset"); } if (arraySegment.Count < 0 || arraySegment.Count > (arraySegment.Array.Length - arraySegment.Offset)) { throw new ArgumentOutOfRangeException((!string.IsNullOrEmpty(arraySegmentParameterName) ? arraySegmentParameterName : "arraySegment") + ".Count"); } } } }