/// <summary> /// Sends AUTH command to POP3 server. /// </summary> /// <param name="sasl">SASL authentication.</param> /// <exception cref="ObjectDisposedException">Is raised when this object is disposed and this method is accessed.</exception> /// <exception cref="InvalidOperationException">Is raised when POP3 client is not connected or is already authenticated.</exception> /// <exception cref="POP3_ClientException">Is raised when POP3 server returns error.</exception> public void Auth(AUTH_SASL_Client sasl) { if(this.IsDisposed){ throw new ObjectDisposedException(this.GetType().Name); } if(!this.IsConnected){ throw new InvalidOperationException("You must connect first."); } if(this.IsAuthenticated){ throw new InvalidOperationException("Connection is already authenticated."); } if(sasl == null){ throw new ArgumentNullException("sasl"); } using(AuthAsyncOP op = new AuthAsyncOP(sasl)){ using(ManualResetEvent wait = new ManualResetEvent(false)){ op.CompletedAsync += delegate(object s1,EventArgs<AuthAsyncOP> e1){ wait.Set(); }; if(!this.AuthAsync(op)){ wait.Set(); } wait.WaitOne(); wait.Close(); if(op.Error != null){ throw op.Error; } } } }
/// <summary> /// Default constructor. /// </summary> /// <param name="sasl">SASL authentication.</param> /// <exception cref="ArgumentNullException">Is raised when <b>sasl</b> is null reference.</exception> public AuthAsyncOP(AUTH_SASL_Client sasl) { if(sasl == null){ throw new ArgumentNullException("sasl"); } m_pSASL = sasl; }