private async Task ZMessagesFetchAsync(cMethodControl pMC, cSession pSession, cMessageHandleList pMessageHandles, cMessageCacheItems pItems, cMessageFetchConfiguration pConfiguration, cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cIMAPClient), nameof(ZMessagesFetchAsync), pMC, pMessageHandles, pItems); if (pMessageHandles.Count == 0) { return; } if (pItems.IsEmpty) { return; } if (pMessageHandles.TrueForAll(h => h.Contains(pItems))) { return; } cProgress lProgress; if (pConfiguration == null) { lProgress = new cProgress(); } else { mSynchroniser.InvokeActionInt(pConfiguration.SetCount, pMessageHandles.Count, lContext); lProgress = new cProgress(mSynchroniser, pConfiguration.Increment); } await pSession.FetchCacheItemsAsync(pMC, pMessageHandles, pItems, lProgress, lContext).ConfigureAwait(false); }
public Task <cCopyFeedback> CopyAsync(cMethodControl pMC, cMessageHandleList pSourceMessageHandles, iMailboxHandle pDestinationMailboxHandle, cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cSession), nameof(CopyAsync), pMC, pSourceMessageHandles, pDestinationMailboxHandle); if (mDisposed) { throw new ObjectDisposedException(nameof(cSession)); } if (_ConnectionState != eConnectionState.selected) { throw new InvalidOperationException(kInvalidOperationExceptionMessage.NotSelected); } if (pSourceMessageHandles == null) { throw new ArgumentNullException(nameof(pSourceMessageHandles)); } if (pDestinationMailboxHandle == null) { throw new ArgumentNullException(nameof(pDestinationMailboxHandle)); } if (pSourceMessageHandles.Count == 0) { throw new ArgumentOutOfRangeException(nameof(pSourceMessageHandles)); } cSelectedMailbox lSelectedMailbox = mMailboxCache.CheckInSelectedMailbox(pSourceMessageHandles); // to be repeated inside the select lock var lDestinationItem = mMailboxCache.CheckHandle(pDestinationMailboxHandle); if (pSourceMessageHandles.TrueForAll(h => h.UID != null)) { var lMessageHandle = pSourceMessageHandles.Find(h => h.Expunged); if (lMessageHandle != null) { throw new cMessageExpungedException(lMessageHandle); } return(ZUIDCopyAsync(pMC, lSelectedMailbox.MailboxHandle, pSourceMessageHandles[0].UID.UIDValidity, new cUIntList(from h in pSourceMessageHandles select h.UID.UID), lDestinationItem, lContext)); } else { return(ZCopyAsync(pMC, pSourceMessageHandles, lDestinationItem, lContext)); } }