/// <summary> /// 尝试检查当前剩余的可用数据长度是否满足指定数据长度的需求 /// </summary> /// <param name="length">需要检查的数据长度</param> /// <param name="result">返回数据检测结果</param> /// <returns>如果返回False, 则证明内部还没有足够的可用数据以供读取</returns> private bool InnerCheckEnoughSize(int length, out NetworkDataCheckResult result) { result.SegmentCount = 0; if (_curUsedHead == null) { return(false); } int avaSize = _curUsedHead.RemainingSize - _curUsedCount; if (avaSize >= length) { result.SegmentCount = 1; return(true); } result.SegmentCount++; SegmentNode usedNode = _curUsedHead; SegmentNode nextNode = usedNode.Next; do { if (nextNode == null) { return(false); } avaSize += nextNode.RemainingSize; result.SegmentCount++; if (avaSize >= length) { return(true); } } while ((nextNode = nextNode.Next) != null); return(false); }
/// <summary> /// ���Լ�鵱ǰʣ��Ŀ������ݳ����Ƿ�����ָ�����ݳ��ȵ����� /// </summary> /// <param name="length">��Ҫ�������ݳ���</param> /// <param name="result">�������ݼ����</param> /// <returns>�������False, ��֤���ڲ���û���㹻�Ŀ��������Թ���ȡ</returns> private bool InnerCheckEnoughSize(int length, out NetworkDataCheckResult result) { result.SegmentCount = 0; if (_curUsedHead == null) return false; int avaSize = _curUsedHead.RemainingSize - _curUsedCount; if (avaSize >= length) { result.SegmentCount = 1; return true; } result.SegmentCount++; SegmentNode usedNode = _curUsedHead; SegmentNode nextNode = usedNode.Next; do { if (nextNode == null) return false; avaSize += nextNode.RemainingSize; result.SegmentCount++; if (avaSize >= length) return true; } while ((nextNode = nextNode.Next) != null); return false; }