/// <summary>
        /// MemberUpdateAsync updates the member configuration in async
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <MemberUpdateResponse> MemberUpdateAsync(MemberUpdateRequest request, Grpc.Core.Metadata headers = null)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();
            bool success    = false;
            int  retryCount = 0;

            while (!success)
            {
                try
                {
                    response = await _balancer.GetConnection().clusterClient.MemberUpdateAsync(request, headers);

                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw ex;
                    }
                }
            }
            return(response);
        }
Esempio n. 2
0
        /// <summary>
        /// MemberUpdate updates the member configuration
        /// </summary>
        /// <param name="request">The request to send to the server.</param>
        /// <param name="headers">The initial metadata to send with the call. This parameter is optional.</param>
        /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
        /// <param name="cancellationToken">An optional token for canceling the call.</param>
        /// <returns>The response received from the server.</returns>
        public MemberUpdateResponse MemberUpdate(MemberUpdateRequest request, Grpc.Core.Metadata headers = null,
                                                 DateTime?deadline = null,
                                                 CancellationToken cancellationToken = default)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();
            bool success    = false;
            int  retryCount = 0;

            while (!success)
            {
                try
                {
                    response = _balancer.GetConnection().clusterClient
                               .MemberUpdate(request, headers, deadline, cancellationToken);
                    success = true;
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Unavailable)
                {
                    retryCount++;
                    if (retryCount >= _balancer._numNodes)
                    {
                        throw;
                    }
                }
            }

            return(response);
        }
Esempio n. 3
0
        /// <summary>
        /// MemberUpdateAsync updates the member configuration in async
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <MemberUpdateResponse> MemberUpdateAsync(MemberUpdateRequest request, Metadata headers = null)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();

            response = await _balancer.GetConnection().clusterClient.MemberUpdateAsync(request, headers);

            return(response);
        }
Esempio n. 4
0
        /// <summary>
        /// MemberUpdate updates the member configuration
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public MemberUpdateResponse MemberUpdate(MemberUpdateRequest request, Metadata headers = null)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();

            response = _balancer.GetConnection().clusterClient.MemberUpdate(request, headers);

            return(response);
        }
Esempio n. 5
0
        public static Entity.MemberUpdateResponse FromProto(this MemberUpdateResponse response)
        {
            var tmp = new Entity.MemberUpdateResponse()
            {
                Header = response.Header.FromProto(),

                Members = response.Members.FromProto()
            };

            return(tmp);
        }
Esempio n. 6
0
        /**
         * update peer addresses of the member.
         *
         * @param memberID the id of member to update
         * @param peerAddrs the new endpoints for the member
         */

        public MemberUpdateResponse UpdateMember(
            ulong memberID, List <Uri> peerAddrs)
        {
            Etcdserverpb.MemberUpdateRequest memberUpdateRequest = new Etcdserverpb.MemberUpdateRequest();
            memberUpdateRequest.ID = memberID;
            foreach (Uri uri in peerAddrs)
            {
                memberUpdateRequest.PeerURLs.Add(uri.Host);
            }
            var rsp = clusterClient.MemberUpdate(memberUpdateRequest);
            MemberUpdateResponse response = new MemberUpdateResponse(rsp);

            return(response);
            //return Util.ToCompletableFuture(
            //    memberUpdateRequest,
            //    new FunctionResponse<Etcdserverpb.MemberUpdateRequest, MemberUpdateResponse>()
            //);
        }
Esempio n. 7
0
        /// <summary>
        /// MemberUpdateAsync updates the member configuration in async
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <MemberUpdateResponse> MemberUpdateAsync(MemberUpdateRequest request)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();

            try
            {
                response = await _clusterClient.MemberUpdateAsync(request, _headers);
            }
            catch (RpcException ex)
            {
                ResetConnection(ex);
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }
Esempio n. 8
0
        /// <summary>
        /// MemberUpdate updates the member configuration
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public MemberUpdateResponse MemberUpdate(MemberUpdateRequest request)
        {
            MemberUpdateResponse response = new MemberUpdateResponse();

            try
            {
                response = _clusterClient.MemberUpdate(request, _headers);
            }
            catch (RpcException ex)
            {
                ResetConnection(ex);
                throw;
            }
            catch
            {
                throw;
            }
            return(response);
        }