コード例 #1
0
                public cSelectedMailboxCache(cSelectedMailboxCache pOldCache, uint pUIDValidity, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewObject(nameof(cSelectedMailboxCache), pOldCache, pUIDValidity);

                    mSynchroniser     = pOldCache.mSynchroniser;
                    mMailboxCacheItem = pOldCache.mMailboxCacheItem;
                    mUIDValidity      = pUIDValidity;
                    mNoModSeq         = pOldCache.mNoModSeq;

                    int lMessageCount = pOldCache.mItems.Count;

                    mItems = new List <cItem>(lMessageCount);
                    for (int i = 0; i < lMessageCount; i++)
                    {
                        mItems.Add(new cItem(this, mCacheSequence++));
                    }

                    mRecentCount = pOldCache.mRecentCount;

                    mUIDNext             = 0;
                    mUIDNextMessageCount = 0;
                    mUIDNextUnknownCount = lMessageCount;

                    mUnseenCount        = 0;
                    mUnseenUnknownCount = lMessageCount;

                    mHighestModSeq = 0;

                    ZSetMailboxStatus(lContext);
                }
コード例 #2
0
ファイル: processing.cs プロジェクト: bacome/imapclient
                public void ProcessTextCode(eResponseTextContext pTextContext, cResponseData pData, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cSelectedMailbox), nameof(ProcessTextCode), pTextContext, pData);

                    switch (pData)
                    {
                    case cResponseDataPermanentFlags lPermanentFlags:

                        mMailboxCacheItem.SetPermanentFlags(mSelectedForUpdate, lPermanentFlags.Flags, lContext);
                        return;

                    case cResponseDataUIDValidity lUIDValidity:

                        mCache = new cSelectedMailboxCache(mCache, lUIDValidity.UIDValidity, lContext);
                        return;

                    case cResponseDataAccess lAccess:

                        if (lAccess.ReadOnly != mAccessReadOnly)
                        {
                            mAccessReadOnly = lAccess.ReadOnly;
                            mSynchroniser.InvokeMailboxPropertiesChanged(mMailboxCacheItem, fMailboxProperties.isaccessreadonly, lContext);
                        }

                        return;
                    }

                    mCache.ProcessTextCode(pTextContext, pData, lContext);
                }
コード例 #3
0
                public cSelectedMailbox(cCallbackSynchroniser pSynchroniser, cMailboxCacheItem pMailboxCacheItem, bool pSelectedForUpdate, bool pAccessReadOnly, int pExists, int pRecent, uint pUIDNext, uint pUIDValidity, uint pHighestModSeq, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewObject(nameof(cSelectedMailbox), pMailboxCacheItem, pSelectedForUpdate, pAccessReadOnly, pExists, pRecent, pUIDNext, pUIDValidity, pHighestModSeq);

                    mSynchroniser      = pSynchroniser ?? throw new ArgumentNullException(nameof(pSynchroniser));
                    mMailboxCacheItem  = pMailboxCacheItem ?? throw new ArgumentNullException(nameof(pMailboxCacheItem));
                    mSelectedForUpdate = pSelectedForUpdate;
                    mAccessReadOnly    = pAccessReadOnly;
                    mCache             = new cSelectedMailboxCache(pSynchroniser, pMailboxCacheItem, pUIDValidity, pExists, pRecent, pUIDNext, pHighestModSeq, lContext);
                }
コード例 #4
0
                    public bool?Unseen = null;                               // is this message unseen (null = don't know)

                    public cItem(cSelectedMailboxCache pCache, int pCacheSequence) : base(pCache, pCacheSequence)
                    {
                    }