コード例 #1
0
        public GetResponse Get(ByteSequence key, GetOption option)
        {
            Etcdserverpb.RangeRequest request = new Etcdserverpb.RangeRequest();
            request.Key          = key.GetByteString();
            request.KeysOnly     = option.IsCountOnly();
            request.Limit        = option.GetLimit();
            request.Revision     = option.GetRevision();
            request.KeysOnly     = option.IsKeysOnly();
            request.Serializable = option.isSerializable();
            request.SortOrder    = OptionsUtil.ToRangeRequestSortOrder(option.GetSortOrder());
            request.SortTarget   = OptionsUtil.ToRangeRequestSortTarget(option.GetSortField());
            if (option.GetEndKey() != null)
            {
                request.RangeEnd = option.GetEndKey().GetByteString();
            }
            var         rsp      = kVClient.Range(request);
            GetResponse response = new GetResponse(rsp);

            return(response);
            //return Util.ToCompletableFutureWithRetry(
            //    stub.Range(request),
            //     new FunctionResponse<Etcdserverpb.RangeRequest, GetResponse>(),
            //    Util.IsRetriable
            //);
        }
コード例 #2
0
        public string GetServer(string ServiceName, bool needWatch = true)
        {
            Google.Protobuf.ByteString key = Google.Protobuf.ByteString.CopyFromUtf8($"/EtcdDiscovery/{ServiceName}");

            var req = new Etcdserverpb.RangeRequest()
            {
                Key = key
            };
            var result = _client.GetAsync(ServiceName).Result;

            if (result.Kvs != null && result.Kvs.Count > 0)
            {
                lock (klst)
                {
                    if (needWatch && klst.Contains(key))
                    {
                        klst.Add(key);
                    }
                }
                return(result.Kvs[0].Value.ToStringUtf8());
            }
            else
            {
                return(null);
            }
        }