ISegment ISegmentFactory.TryAllocate(Message message, int words) { if (words <= 0) { throw new ArgumentOutOfRangeException("words"); } int suggested = SuggestAvailable(message, wordOffset, words, Math.Max(words, defaultSegmentWords)); if (suggested < words) { return(null); } // k, we're doing ok! ISegment seg = CreateEmptySegment(); if (seg != null && InitializeSegment(seg, wordOffset, suggested, 0)) { message.AddSegment(seg); wordOffset += suggested; return(seg); } if (seg != null) { seg.Dispose(); } return(null); }