public IWatcher Watch(ByteSequence key, WatchOption watchOption) { if (IsClosed()) { throw new ClosedWatchClientException(); } WatcherImpl watcher = new WatcherImpl(key, watchOption, this); // this.pendingWatchers.Enqueue(watcher); Etcdserverpb.WatchRequest request = new Etcdserverpb.WatchRequest(); Etcdserverpb.WatchCreateRequest createRequest = new Etcdserverpb.WatchCreateRequest(); createRequest.Key = key.GetByteString(); createRequest.PrevKv = watchOption.isPrevKV(); createRequest.ProgressNotify = watchOption.isProgressNotify(); createRequest.RangeEnd = watchOption.getEndKey().GetByteString(); createRequest.StartRevision = watchOption.getRevision(); request.CreateRequest = createRequest; Grpc.Core.CallOptions callOptions = new Grpc.Core.CallOptions(); watchClient.Watch(callOptions); // watchClient.Watch() // watchClient.Watch() // if (this.pendingWatchers.Count == 1) { // head of the queue send watchCreate request. // WatchRequest request = this.toWatchCreateRequest(watcher); // this.getGrpcWatchStreamObserver().onNext(request); // } return(watcher); }
public WatcherImpl(ByteSequence key, WatchOption watchOption, WatchImpl owner) { this.key = key; this.watchOption = watchOption; this.revision = watchOption.getRevision(); this.owner = owner; }
public WatcherImpl(ByteSequence key, WatchOption watchOption, WatchImpl owner) { this.key = key; this.watchOption = watchOption; this.revision = watchOption.Revision; this.owner = owner; this.watchClient = owner.watchClient; }
public IWatcher Watch(ByteSequence key, WatchOption watchOption) { if (closed) { throw new ClosedWatchClientException(); } WatcherImpl watcher = null; lock (this) { watcher = new WatcherImpl(key, watchOption, this); watcher.Resume(); pendingWatchers.Enqueue(watcher); } return(watcher); }
private static Etcdserverpb.WatchRequest ToWatchCreateRequest(WatcherImpl watcher) { ByteString key = watcher.GetKey().GetByteString(); WatchOption option = watcher.GetWatchOption(); Etcdserverpb.WatchCreateRequest watchCreate = new Etcdserverpb.WatchCreateRequest(); watchCreate.Key = key; watchCreate.PrevKv = option.isPrevKV(); watchCreate.ProgressNotify = option.isProgressNotify(); watchCreate.StartRevision = watcher.GetRevision(); watchCreate.RangeEnd = option.getEndKey().GetByteString(); if (option.isNoDelete()) { watchCreate.Filters.Add(Etcdserverpb.WatchCreateRequest.Types.FilterType.Nodelete); } if (option.isNoPut()) { watchCreate.Filters.Add(Etcdserverpb.WatchCreateRequest.Types.FilterType.Noput); } Etcdserverpb.WatchRequest request = new Etcdserverpb.WatchRequest(); request.CreateRequest = watchCreate; return(request); }