コード例 #1
0
                public void Unselect(cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cMailboxCache), nameof(Unselect));

                    if (mSelectedMailbox == null)
                    {
                        return;
                    }

                    var lMailboxHandle = mSelectedMailbox.MailboxHandle;

                    fMailboxProperties lProperties = fMailboxProperties.isselected;

                    if (mSelectedMailbox.SelectedForUpdate)
                    {
                        lProperties |= fMailboxProperties.isselectedforupdate;
                    }
                    if (mSelectedMailbox.AccessReadOnly)
                    {
                        lProperties |= fMailboxProperties.isaccessreadonly;
                    }

                    mSelectedMailbox = null;

                    mSetState(eConnectionState.notselected, lContext);
                    mSynchroniser.InvokeMailboxPropertiesChanged(lMailboxHandle, lProperties, lContext);
                    mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.SelectedMailbox), lContext);
                }
コード例 #2
0
                public override eProcessDataResult ProcessData(cBytesCursor pCursor, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cNamespaceDataProcessor), nameof(ProcessData));

                    if (!pCursor.SkipBytes(kNamespaceSpace))
                    {
                        return(eProcessDataResult.notprocessed);
                    }

                    if (ZProcessData(pCursor, out var lPersonal, lContext) &&
                        pCursor.SkipByte(cASCII.SPACE) &&
                        ZProcessData(pCursor, out var lOtherUsers, lContext) &&
                        pCursor.SkipByte(cASCII.SPACE) &&
                        ZProcessData(pCursor, out var lShared, lContext) &&
                        pCursor.Position.AtEnd
                        )
                    {
                        lContext.TraceVerbose("got namespaces");
                        NamespaceNames = new cNamespaceNames(lPersonal, lOtherUsers, lShared);
                        mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.Namespaces), lContext);
                        return(eProcessDataResult.processed);
                    }

                    lContext.TraceWarning("likely malformed namespace");
                    return(eProcessDataResult.notprocessed);
                }
コード例 #3
0
                public override eProcessDataResult ProcessData(cBytesCursor pCursor, cTrace.cContext pParentContext)
                {
                    var lContext = pParentContext.NewMethod(nameof(cIdDataProcessor), nameof(ProcessData));

                    if (pCursor.SkipBytes(kIdSpace))
                    {
                        if (ZGetId(pCursor, out var lServerId, lContext) && pCursor.Position.AtEnd)
                        {
                            lContext.TraceVerbose("got id: {0}", lServerId);
                            mServerId = lServerId;
                            mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.ServerId), lContext);
                            return(eProcessDataResult.processed);
                        }

                        lContext.TraceWarning("likely malformed id response");
                    }

                    return(eProcessDataResult.notprocessed);
                }
コード例 #4
0
ファイル: base.cs プロジェクト: bacome/imapclient
            private void ZSetState(eConnectionState pConnectionState, cTrace.cContext pParentContext)
            {
                var lContext = pParentContext.NewMethod(nameof(cSession), nameof(ZSetState), pConnectionState);

                bool lIsUnconnected;
                bool lIsConnected;

                // the lock is required because state can be changed by;
                //  the user's thread (via calls to Connect or Disconnect), and by
                //  the command pipeline's thread (via a response from the server)
                //  (note that a unilateral bye which can arrive at any time (e.g. during connect) will disconnect)
                //  (note that the user may call Disconnect at any time (e.g. during connectasync))
                //
                lock (mConnectionStateLock)
                {
                    if (pConnectionState == _ConnectionState)
                    {
                        return;
                    }
                    if (_ConnectionState == eConnectionState.disconnected)
                    {
                        return;
                    }

                    lIsUnconnected = IsUnconnected;
                    lIsConnected   = IsConnected;

                    _ConnectionState = pConnectionState;
                }

                mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.ConnectionState), lContext);
                if (IsConnected != lIsConnected)
                {
                    mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.IsConnected), lContext);
                }
                if (IsUnconnected != lIsUnconnected)
                {
                    mSynchroniser.InvokePropertyChanged(nameof(cIMAPClient.IsUnconnected), lContext);
                }
            }