private void RegisterWatcher(RequestDefinitions.IRingMasterRequest request, Func <string, IWatcher, IWatcher> registerWatcher) { switch (request.RequestType) { case RingMasterRequestType.Exists: RequestDefinitions.RequestExists existsRequest = (RequestDefinitions.RequestExists)request; if (existsRequest.Watcher != null) { existsRequest.Watcher = registerWatcher(existsRequest.Path, existsRequest.Watcher); } break; case RingMasterRequestType.GetData: RequestDefinitions.RequestGetData getDataRequest = (RequestDefinitions.RequestGetData)request; if (getDataRequest.Watcher != null) { getDataRequest.Watcher = registerWatcher(getDataRequest.Path, getDataRequest.Watcher); } break; case RingMasterRequestType.GetChildren: RequestDefinitions.RequestGetChildren getChildrenRequest = (RequestDefinitions.RequestGetChildren)request; if (getChildrenRequest.Watcher != null) { getChildrenRequest.Watcher = registerWatcher(getChildrenRequest.Path, getChildrenRequest.Watcher); } break; } }
/// <summary> /// Keeps track of any watchers that are set by the request. /// </summary> /// <param name="request">Request to track</param> /// <returns>The request call</returns> internal static RequestCall LocalRequest(RequestDefinitions.IRingMasterRequest request) { return(new RequestCall() { Request = BackendRequest.Wrap(request), }); }