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)); }
private static void _Tests_MailboxName(string pMailboxPath, bool pExpectFail, cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cMailboxName), nameof(_Tests_MailboxName), pMailboxPath); cCommandPartFactory lFactory; cCommandPart lCommandPart; cBytesCursor lCursor; IList <byte> lEncodedMailboxPath; cMailboxName lMailboxName; lFactory = new cCommandPartFactory(false, null); if (!lFactory.TryAsMailbox(pMailboxPath, '/', out lCommandPart, out _)) { throw new cTestsException($"mailboxname conversion failed on '{pMailboxPath}'"); } cTextCommandPart lTCP = lCommandPart as cTextCommandPart; lCursor = new cBytesCursor(lTCP.Bytes); lCursor.GetAString(out lEncodedMailboxPath); if (cMailboxName.TryConstruct(lEncodedMailboxPath, cASCII.SLASH, false, out lMailboxName)) { if (pExpectFail) { throw new cTestsException($"mailboxname construction succeeded on '{pMailboxPath}' and it shouldn't have"); } } else { if (!pExpectFail) { throw new cTestsException($"mailboxname construction failed on '{pMailboxPath}' and it shouldn't have"); } return; } if (lMailboxName.Path != pMailboxPath) { throw new cTestsException($"mailboxname conversion failed on '{pMailboxPath}' -> {lTCP.Bytes} -> '{lMailboxName}'", lContext); } lFactory = new cCommandPartFactory(true, null); lFactory.TryAsMailbox(pMailboxPath, '/', out lCommandPart, out _); lTCP = lCommandPart as cTextCommandPart; lCursor = new cBytesCursor(lTCP.Bytes); lCursor.GetAString(out lEncodedMailboxPath); cMailboxName.TryConstruct(lEncodedMailboxPath, cASCII.SLASH, true, out lMailboxName); if (lMailboxName.Path != pMailboxPath) { throw new cTestsException($"mailboxname conversion failed on '{pMailboxPath}' -> {lTCP.Bytes} -> '{lMailboxName}'", lContext); } }
public void SetEncoding(Encoding pEncoding, cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cSession), nameof(SetEncoding), pEncoding.WebName); if ((EnabledExtensions & fEnableableExtensions.utf8) != 0 || pEncoding == null) { mEncodingPartFactory = mCommandPartFactory; } else { mEncodingPartFactory = new cCommandPartFactory(false, pEncoding); } }
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); } }