private void OnConnected(IAsyncResult result) { if (IsClosed) { return; } try { Socket handler = (Socket)result.AsyncState; handler.EndConnect(result); _connecting = false; Construct(handler); } catch (SocketException se) { if (ReconnectErrors.Contains(se.SocketErrorCode)) { _reconnecting = true; } else { _notifier.Connected(new ConnectEventArgs(se)); _logger.Write(se); } } catch (Exception e) { _notifier.Connected(new ConnectEventArgs(e)); _logger.Write(e); } }
private void OnGetHostAddresses(IAsyncResult result) { if (IsClosed) { return; } try { var addresses = Dns.EndGetHostAddresses(result); if (addresses.Length > 0) { var address = addresses[0]; ConnectImpl(address); } else { throw new InvalidOperationException("Addresses are empty"); } } catch (SocketException se) { if (ReconnectErrors.Contains(se.SocketErrorCode)) { _reconnecting = true; } else { _notifier.Connected(new ConnectEventArgs(se)); _logger.Write(se); } } catch (Exception e) { _notifier.Connected(new ConnectEventArgs(e)); _logger.Write(e); } }