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); }
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); }
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); }
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); } }