public cMailboxCache(cCallbackSynchroniser pSynchroniser, fMailboxCacheDataItems pMailboxCacheDataItems, cCommandPartFactory pCommandPartFactory, cCapabilities pCapabilities, Action <eConnectionState, cTrace.cContext> pSetState) { mSynchroniser = pSynchroniser ?? throw new ArgumentNullException(nameof(pSynchroniser)); mMailboxCacheDataItems = pMailboxCacheDataItems; mCommandPartFactory = pCommandPartFactory ?? throw new ArgumentNullException(nameof(pCommandPartFactory)); mCapabilities = pCapabilities ?? throw new ArgumentNullException(nameof(pCapabilities)); mSetState = pSetState ?? throw new ArgumentNullException(nameof(pSetState)); }
public void SetEnabled(cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cSession), nameof(SetEnabled)); if (mDisposed) { throw new ObjectDisposedException(nameof(cSession)); } if (_ConnectionState != eConnectionState.authenticated) { throw new InvalidOperationException(kInvalidOperationExceptionMessage.NotAuthenticated); } bool lUTF8Enabled = (EnabledExtensions & fEnableableExtensions.utf8) != 0; if (lUTF8Enabled) { mCommandPartFactory = new cCommandPartFactory(true, null); mEncodingPartFactory = mCommandPartFactory; } mStatusAttributes = mMailboxCacheDataItems & fMailboxCacheDataItems.allstatus; if (!_Capabilities.CondStore) { mStatusAttributes &= ~fMailboxCacheDataItems.highestmodseq; } mMailboxCache = new cMailboxCache(mSynchroniser, mMailboxCacheDataItems, mCommandPartFactory, _Capabilities, ZSetState); mPipeline.Install(new cResponseTextCodeParserSelect(_Capabilities)); mPipeline.Install(new cResponseDataParserSelect()); mPipeline.Install(new cResponseDataParserFetch()); mPipeline.Install(new cResponseDataParserList(lUTF8Enabled)); mPipeline.Install(new cResponseDataParserLSub(lUTF8Enabled)); if (_Capabilities.ESearch || _Capabilities.ESort) { mPipeline.Install(new cResponseDataParserESearch()); } mPipeline.Enable(mMailboxCache, _Capabilities, lContext); ZSetState(eConnectionState.enabled, lContext); }
// (note for when adding more: they need to be disposed) public cSession(cCallbackSynchroniser pSynchroniser, fCapabilities pIgnoreCapabilities, fMailboxCacheDataItems pMailboxCacheDataItems, cBatchSizerConfiguration pNetworkWriteConfiguration, cIdleConfiguration pIdleConfiguration, cBatchSizerConfiguration pFetchCacheItemsConfiguration, cBatchSizerConfiguration pFetchBodyReadConfiguration, Encoding pEncoding, cTrace.cContext pParentContext) { var lContext = pParentContext.NewObject(nameof(cSession), pIgnoreCapabilities, pMailboxCacheDataItems, pNetworkWriteConfiguration, pIdleConfiguration, pFetchCacheItemsConfiguration, pFetchBodyReadConfiguration); mSynchroniser = pSynchroniser ?? throw new ArgumentNullException(nameof(pSynchroniser)); mIgnoreCapabilities = pIgnoreCapabilities; mMailboxCacheDataItems = pMailboxCacheDataItems; mPipeline = new cCommandPipeline(pSynchroniser, ZDisconnected, pNetworkWriteConfiguration, pIdleConfiguration, lContext); mFetchCacheItemsSizer = new cBatchSizer(pFetchCacheItemsConfiguration); mFetchBodyReadSizer = new cBatchSizer(pFetchBodyReadConfiguration); mCommandPartFactory = new cCommandPartFactory(false, null); if (pEncoding == null) { mEncodingPartFactory = mCommandPartFactory; } else { mEncodingPartFactory = new cCommandPartFactory(false, pEncoding); } }
private async void cmdConnect_Click(object sender, EventArgs e) { if (!ValidateChildren(ValidationConstraints.Enabled)) { return; } try { mClient.SetServer(txtHost.Text.Trim(), int.Parse(txtPort.Text), chkSSL.Checked); if (rdoCredNone.Checked) { mClient.SetNoCredentials(); } else { eTLSRequirement lTLSRequirement; if (rdoTLSIndifferent.Checked) { lTLSRequirement = eTLSRequirement.indifferent; } else if (rdoTLSRequired.Checked) { lTLSRequirement = eTLSRequirement.required; } else { lTLSRequirement = eTLSRequirement.disallowed; } if (rdoCredAnon.Checked) { mClient.SetAnonymousCredentials(txtTrace.Text.Trim(), lTLSRequirement, chkTryIfNotAdvertised.Checked); } else { mClient.SetPlainCredentials(txtUserId.Text.Trim(), txtPassword.Text.Trim(), lTLSRequirement, chkTryIfNotAdvertised.Checked); } } fMailboxCacheDataItems lMailboxCacheData = 0; if (chkCacheSubscribed.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.subscribed; } if (chkCacheChildren.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.children; } if (chkCacheSpecialUse.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.specialuse; } if (chkCacheMessageCount.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.messagecount; } if (chkCacheRecentCount.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.recentcount; } if (chkCacheUIDNext.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.uidnext; } if (chkCacheUIDValidity.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.uidvalidity; } if (chkCacheUnseenCount.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.unseencount; } if (chkCacheHighestModSeq.Checked) { lMailboxCacheData |= fMailboxCacheDataItems.highestmodseq; } mClient.MailboxCacheDataItems = lMailboxCacheData; fCapabilities lKnownCapabilities = 0; if (chkIgnoreStartTLS.Checked) { lKnownCapabilities |= fCapabilities.starttls; } if (chkIgnoreEnable.Checked) { lKnownCapabilities |= fCapabilities.enable; } if (chkIgnoreUTF8.Checked) { lKnownCapabilities |= fCapabilities.utf8accept | fCapabilities.utf8only; } if (chkIgnoreId.Checked) { lKnownCapabilities |= fCapabilities.id; } if (chkIgnoreNamespace.Checked) { lKnownCapabilities |= fCapabilities.namespaces; } if (chkIgnoreMailboxReferrals.Checked) { lKnownCapabilities |= fCapabilities.mailboxreferrals; } if (chkIgnoreListExtended.Checked) { lKnownCapabilities |= fCapabilities.listextended; } if (chkIgnoreListStatus.Checked) { lKnownCapabilities |= fCapabilities.liststatus; } if (chkIgnoreSpecialUse.Checked) { lKnownCapabilities |= fCapabilities.specialuse; } if (chkIgnoreCondStore.Checked) { lKnownCapabilities |= fCapabilities.condstore; } if (chkIgnoreQResync.Checked) { lKnownCapabilities |= fCapabilities.qresync; } if (chkIgnoreLiteralPlus.Checked) { lKnownCapabilities |= fCapabilities.literalplus | fCapabilities.literalminus; } if (chkIgnoreBinary.Checked) { lKnownCapabilities |= fCapabilities.binary; } if (chkIgnoreIdle.Checked) { lKnownCapabilities |= fCapabilities.idle; } if (chkIgnoreSASLIR.Checked) { lKnownCapabilities |= fCapabilities.sasl_ir; } if (chkIgnoreESearch.Checked) { lKnownCapabilities |= fCapabilities.esearch; } if (chkIgnoreSort.Checked) { lKnownCapabilities |= fCapabilities.sort; } if (chkIgnoreSortDisplay.Checked) { lKnownCapabilities |= fCapabilities.sortdisplay; } //if (chkIgnoreThreadOrderedSubject.Checked) lKnownCapabilities |= fCapabilities.threadorderedsubject; //if (chkIgnoreThreadReferences.Checked) lKnownCapabilities |= fCapabilities.threadreferences; if (chkIgnoreESort.Checked) { lKnownCapabilities |= fCapabilities.esort; } mClient.IgnoreCapabilities = lKnownCapabilities; mClient.MailboxReferrals = chkMailboxReferrals.Checked; mClient.NetworkWriteConfiguration = new cBatchSizerConfiguration(int.Parse(txtNWMin.Text), int.Parse(txtNWMax.Text), int.Parse(txtNWMaxTime.Text), int.Parse(txtNWInitial.Text)); await mClient.ConnectAsync(); } catch (Exception ex) { if (!IsDisposed) { MessageBox.Show(this, $"Connect error\n{ex}"); } } }