// Token: 0x0600075B RID: 1883 RVA: 0x00006338 File Offset: 0x00004538 public static ProcessResult Create(ProcessState state, string message) { return(ProcessResult.Create(state, message, null)); }
// Token: 0x0600075C RID: 1884 RVA: 0x00006342 File Offset: 0x00004542 public static ProcessResult Create(ProcessState state, IList <IPackageInfo> packages) { return(ProcessResult.Create(state, string.Empty, packages)); }
public virtual ProcessResult Process(ArraySegment <byte> segment) { BufferList bufferList = m_ReceiveCache; bufferList.Add(segment); int rest = 0; IReceiveFilter <TPackageInfo> receiveFilter = m_ReceiveFilter; SingleItemList <IPackageInfo> singleItemList = null; List <IPackageInfo> list = null; while (true) { int count = bufferList.Last.Count; TPackageInfo val = receiveFilter.Filter(bufferList, out rest); if (receiveFilter.State == FilterState.Error) { return(ProcessResult.Create(ProcessState.Error)); } if (m_MaxPackageLength > 0) { int total = bufferList.Total; if (total > m_MaxPackageLength) { return(ProcessResult.Create(ProcessState.Error, $"Max package length: {m_MaxPackageLength}, current processed length: {total}")); } } IReceiveFilter <TPackageInfo> nextReceiveFilter = receiveFilter.NextReceiveFilter; if (val != null) { receiveFilter.Reset(); } if (nextReceiveFilter != null) { receiveFilter = (m_ReceiveFilter = nextReceiveFilter); } if (val == null) { if (rest > 0) { ArraySegment <byte> last = bufferList.Last; if (rest != count) { PushResetData(segment, rest); } continue; } return(ProcessResult.Create(ProcessState.Cached, GetNotNullOne(list, singleItemList))); } if (list != null) { list.Add(val); } else if (singleItemList == null) { singleItemList = new SingleItemList <IPackageInfo>(val); } else { if (list == null) { list = new List <IPackageInfo>(); } list.Add(singleItemList[0]); list.Add(val); singleItemList = null; } if (val is IBufferedPackageInfo && (val as IBufferedPackageInfo).Data is BufferList) { bufferList = (m_ReceiveCache = new BufferList()); if (rest <= 0) { return(ProcessResult.Create(ProcessState.Cached, GetNotNullOne(list, singleItemList))); } } else { m_ReceiveCache.Clear(); if (rest <= 0) { break; } } PushResetData(segment, rest); } return(ProcessResult.Create(ProcessState.Completed, GetNotNullOne(list, singleItemList))); }