示例#1
0
        /// <exception cref="System.Exception" />
        private bool Connect(ICollection <IPEndPoint> triedAddresses)
        {
            var addresses = GetPossibleMemberAddresses();

            foreach (var address in addresses)
            {
                var inetSocketAddress = address.GetInetSocketAddress();
                try
                {
                    triedAddresses.Add(inetSocketAddress);
                    if (Logger.IsFinestEnabled())
                    {
                        Logger.Finest("Trying to connect to " + address);
                    }
                    var connection = _connectionManager.GetOrConnect(address, ManagerAuthenticator);
                    // promote connection to owner if not already
                    if (!connection.IsOwner())
                    {
                        Logger.Finest("Promoting connection " + connection + " to owner.");
                        ManagerAuthenticator(connection);
                    }
                    FireConnectionEvent(LifecycleEvent.LifecycleState.ClientConnected);
                    OwnerConnectionAddress = connection.GetAddress();
                    return(true);
                }
                catch (Exception e)
                {
                    var level = e is AuthenticationException ? LogLevel.Warning : LogLevel.Finest;
                    Logger.Log(level, "Exception during initial connection to " + inetSocketAddress, e);
                }
            }
            return(false);
        }
示例#2
0
        /// <exception cref="System.Exception" />
        private bool ConnectAsOwner(ICollection <IPEndPoint> triedAddresses, IList <Exception> exceptions)
        {
            var addresses = GetPossibleMemberAddresses();

            foreach (var address in addresses)
            {
                IPEndPoint inetSocketAddress = null;
                try
                {
                    inetSocketAddress = address.GetInetSocketAddress();
                    triedAddresses.Add(inetSocketAddress);
                    if (Logger.IsFinestEnabled())
                    {
                        Logger.Finest("Trying to connect to " + address);
                    }
                    var ownerConnection = _connectionManager.GetOrConnect(address, isOwner: true);
                    FireConnectionEvent(LifecycleEvent.LifecycleState.ClientConnected);
                    OwnerConnectionAddress = ownerConnection.GetAddress();
                    return(true);
                }
                catch (Exception e)
                {
                    if (exceptions.Count == MaxExceptionCount)
                    {
                        exceptions.RemoveAt(0);
                    }
                    exceptions.Add(e);
                    var level = e is AuthenticationException ? LogLevel.Warning : LogLevel.Finest;
                    Logger.Log(level, "Exception during initial connection to " + inetSocketAddress ?? address.ToString(), e);
                }
            }
            return(false);
        }