public Core(IRequestExecuter requestExecuter, ICoreRequestGenerator requestGenerator, Options options) { OAuth2 = new OAuth2(requestExecuter, requestGenerator.OAuth2, options); Accounts = new Accounts(requestExecuter, requestGenerator.Accounts); Metadata = new Metadata(requestExecuter, requestGenerator.Metadata, options); FileOperations = new FileOperations(requestExecuter, requestGenerator.FileOperations, options); }
public Business(IRequestExecuter requestExecuter, IRequestGenerator requestGenerator, Options options) { Info = new Info(requestExecuter, requestGenerator.Business.TeamInfo, options); Members = new Members(requestExecuter, requestGenerator.Business.TeamMembers, options); Reports = new Reports(requestExecuter, requestGenerator.Business.Reports, options); AuditLog = new AuditLog(requestExecuter, requestGenerator.Business.AuditLog, options); }
public Business(IRequestExecuter requestExecuter, IRequestGenerator requestGenerator) { Info = new Info(requestExecuter, requestGenerator.Business.TeamInfo); Members = new Members(requestExecuter, requestGenerator.Business.TeamMembers); Reports = new Reports(requestExecuter, requestGenerator.Business.Reports); AuditLog = new AuditLog(requestExecuter, requestGenerator.Business.AuditLog); Groups = new Groups(requestExecuter, requestGenerator.Business.Groups); }
public Accounts(IRequestExecuter requestExecuter, IAccountsRequestGenerator requestGenerator) { _requestExecuter = requestExecuter; _requestGenerator = requestGenerator; }
public Info(IRequestExecuter requestExecuter, ITeamInfoRequestGenerator requestGenerator, Options options) { _requestGenerator = requestGenerator; _options = options; _requestExecuter = requestExecuter; }
private IRequestExecuter GetRequestExecuterForDatabase(AsyncServerClient serverClient, string databaseName, bool incrementStrippingBase) { var key = Url; if (string.IsNullOrEmpty(databaseName) == false) { key = MultiDatabase.GetRootDatabaseUrl(Url) + "/databases/" + databaseName; } var originalKey = MultiDatabase.GetRootDatabaseUrl(Url); IRequestExecuter requestExecuter; IRequestExecuter originalRequestExecuter = null; if (Conventions.FailoverBehavior == FailoverBehavior.ReadFromLeaderWriteToLeader || Conventions.FailoverBehavior == FailoverBehavior.ReadFromLeaderWriteToLeaderWithFailovers || Conventions.FailoverBehavior == FailoverBehavior.ReadFromAllWriteToLeader || Conventions.FailoverBehavior == FailoverBehavior.ReadFromAllWriteToLeaderWithFailovers) { requestExecuter = clusterAwareRequestExecuters.GetOrAdd(key, url => new ClusterAwareRequestExecuter()); if (originalKey != key) { originalRequestExecuter = clusterAwareRequestExecuters.GetOrAdd(originalKey, url => new ClusterAwareRequestExecuter()); } } else { requestExecuter = new ReplicationAwareRequestExecuter(replicationInformers.GetOrAdd(key, url => Conventions.ReplicationInformerFactory(url, jsonRequestFactory, GetRequestTimeMetricForUrl))); if (originalKey != key) { originalRequestExecuter = new ReplicationAwareRequestExecuter(replicationInformers.GetOrAdd(originalKey, url => Conventions.ReplicationInformerFactory(url, jsonRequestFactory, GetRequestTimeMetricForUrl))); } } if (incrementStrippingBase || originalRequestExecuter == null) { requestExecuter.GetReadStripingBase(incrementStrippingBase); } else { requestExecuter.SetReadStripingBase(originalRequestExecuter.GetReadStripingBase(false)); } if (FailoverServers == null) { return(requestExecuter); } if (databaseName == DefaultDatabase) { if (FailoverServers.IsSetForDefaultDatabase && requestExecuter.FailoverServers == null) { requestExecuter.FailoverServers = FailoverServers.ForDefaultDatabase; } } else { if (FailoverServers.IsSetForDatabase(databaseName) && requestExecuter.FailoverServers == null) { requestExecuter.FailoverServers = FailoverServers.GetForDatabase(databaseName); } } return(requestExecuter); }
public Groups(IRequestExecuter requestExecuter, IGroupsRequestGenerator requestGenerator) { _requestGenerator = requestGenerator; _requestExecuter = requestExecuter; }
public Reports(IRequestExecuter requestExecuter, IReportsRequestGenerator requestGenerator, Options options) { _requestGenerator = requestGenerator; _options = options; _requestExecuter = requestExecuter; }
public Info(IRequestExecuter requestExecuter, ITeamInfoRequestGenerator requestGenerator) { _requestGenerator = requestGenerator; _requestExecuter = requestExecuter; }
public Reports(IRequestExecuter requestExecuter, IReportsRequestGenerator requestGenerator) { _requestGenerator = requestGenerator; _requestExecuter = requestExecuter; }
public LogsReporter(IReporter testReporter, IClientService service, IExtensionManager extensionManager, IRequestExecuter requestExecuter, ILogRequestAmender logRequestAmender) { _reporter = testReporter; _service = service; _extensionManager = extensionManager; _requestExecuter = requestExecuter; _logRequestAmender = logRequestAmender; }
public AuditLog(IRequestExecuter requestExecuter, IAuditLogRequestGenerator requestGenerator, Options options) { _requestGenerator = requestGenerator; _options = options; _requestExecuter = requestExecuter; }
public FileOperations(IRequestExecuter requestExecuter, IFileOperationsRequestGenerator requestGenerator, Options options) { _requestExecuter = requestExecuter; _requestGenerator = requestGenerator; _options = options; }
public Metadata(IRequestExecuter requestExecuter, IMetadataRequestGenerator requestGenerator, Options options) { _requestExecuter = requestExecuter; _requestGenerator = requestGenerator; _options = options; }
public static Func <SocketAsyncState, Task> CompletedFuncWithRetryForMemcached <T>(IRequestExecuter executer, ConcurrentDictionary <uint, IOperation> pending, IClusterController controller, TaskCompletionSource <IOperationResult <T> > tcs, CancellationToken cancellationToken) { Func <SocketAsyncState, Task> func = async s => { var header = CreateHeader(s, out var errorCode, out var serverDuration); IOperation op; if (pending.TryRemove(s.Opaque, out op)) { var actual = (IOperation <T>)op; try { //check if an error occurred earlier if (s.Exception != null) { actual.Exception = s.Exception; actual.HandleClientError(s.Exception.Message, s.Status); tcs.SetResult(actual.GetResultWithValue()); return; } var response = s.Data.ToArray(); await op.ReadAsync(response, header, errorCode).ContinueOnAnyContext(); var result = actual.GetResultWithValue(controller.Configuration.Tracer, executer.ConfigInfo.BucketName); if (result.Success) { tcs.SetResult(result); } else { if (result.IsNmv()) { var config = op.GetConfig(controller.ServerConfigTranscoder); if (config != null) { controller.NotifyConfigPublished(config); } } if (result.IsNmv() || (op.CanRetry() && result.ShouldRetry())) { var retryResult = await executer.RetryOperationEveryAsync((o, c) => { var retryTcs = new TaskCompletionSource <IOperationResult <T> >(); var cloned = o.Clone(); cloned.Completed = CompletedFuncForRetry(pending, controller, retryTcs); pending.TryAdd(cloned.Opaque, cloned); var keyMapper = c.GetKeyMapper(); var mappedNode = keyMapper.MapKey(cloned.Key); IServer server; var attempts = 0; while ((server = mappedNode.LocatePrimary()) == null) { if (attempts++ > 10) { throw new TimeoutException("Could not acquire a server."); } Thread.Sleep((int)Math.Pow(2, attempts)); } server.SendAsync(o).ContinueOnAnyContext(); return(retryTcs.Task); }, actual, executer.ConfigInfo, cancellationToken).ContinueOnAnyContext(); tcs.SetResult(retryResult); } else { ((OperationResult)result).SetException(); tcs.SetResult(result); } } } catch (Exception e) { op.Exception = e; op.HandleClientError(e.Message, ResponseStatus.ClientFailure); tcs.SetResult(actual.GetResultWithValue()); } finally { s.Dispose(); } } else { s.Dispose(); const string msg = "Cannot find callback object for operation: {0}"; tcs.SetException(new InvalidOperationException(string.Format(msg, s.Opaque))); var context = CreateOperationContext(s, serverDuration, executer.ConfigInfo.BucketName); controller.Configuration.OrphanedResponseLogger.Add(context); } }; return(func); }
public Members(IRequestExecuter requestExecuter, ITeamMembersRequestGenerator requestGenerator) { _requestGenerator = requestGenerator; _requestExecuter = requestExecuter; }
public AuditLog(IRequestExecuter requestExecuter, IAuditLogRequestGenerator requestGenerator) { _requestGenerator = requestGenerator; _requestExecuter = requestExecuter; }
public OAuth2(IRequestExecuter requestExecuter, IOAuth2RequestGenerator requestGenerator, Options options) { _requestExecuter = requestExecuter; _requestGenerator = requestGenerator; _options = options; }
public Members(IRequestExecuter requestExecuter, ITeamMembersRequestGenerator requestGenerator, Options options) { _requestGenerator = requestGenerator; _options = options; _requestExecuter = requestExecuter; }
public static Func <SocketAsyncState, Task> CompletedFuncWithRetryForCouchbase(IRequestExecuter executer, ConcurrentDictionary <uint, IOperation> pending, IClusterController controller, TaskCompletionSource <IOperationResult> tcs, CancellationToken cancellationToken) { Func <SocketAsyncState, Task> func = async s => { IOperation op; if (pending.TryRemove(s.Opaque, out op)) { try { if (s.Status == ResponseStatus.TransportFailure) { controller.CheckConfigUpdate(op.BucketName, s.EndPoint); } //check if an error occurred earlier if (s.Exception != null) { op.Exception = s.Exception; op.HandleClientError(s.Exception.Message, s.Status); tcs.SetResult(op.GetResult()); return; } var response = s.Data.ToArray(); await op.ReadAsync(response).ContinueOnAnyContext(); var result = op.GetResult(); if (result.Success) { tcs.SetResult(result); } else { if (result.IsNmv()) { var config = op.GetConfig(controller.ServerConfigTranscoder); if (config != null) { controller.NotifyConfigPublished(config); } } if (result.IsNmv() || (op.CanRetry() && result.ShouldRetry())) { Log.Trace("Retry {0} on {1}: {2}", op.Opaque, op.CurrentHost, result.Status); var retryResult = await executer.RetryOperationEveryAsync((o, c) => { var retryTcs = new TaskCompletionSource <IOperationResult>(); var cloned = o.Clone(); cloned.Completed = CompletedFuncForRetry(pending, controller, retryTcs); pending.TryAdd(cloned.Opaque, cloned); var keyMapper = c.GetKeyMapper(); var vBucket = (IVBucket)keyMapper.MapKey(cloned.Key, cloned.LastConfigRevisionTried); cloned.LastConfigRevisionTried = vBucket.Rev; cloned.VBucket = vBucket; IServer server; var attempts = 0; while ((server = vBucket.LocatePrimary()) == null) { if (attempts++ > 10) { throw new TimeoutException("Could not acquire a server."); } Thread.Sleep((int)Math.Pow(2, attempts)); } server.SendAsync(o).ContinueOnAnyContext(); return(retryTcs.Task); }, op, executer.ConfigInfo, cancellationToken).ContinueOnAnyContext(); tcs.SetResult(retryResult); } else { ((OperationResult)result).SetException(); tcs.SetResult(result); } } } catch (Exception e) { op.Exception = e; op.HandleClientError(e.Message, ResponseStatus.ClientFailure); tcs.SetResult(op.GetResult()); } finally { s.Dispose(); } } else { s.Dispose(); const string msg = "Cannot find callback object for operation: {0}"; tcs.TrySetException(new InvalidOperationException(string.Format(msg, s.Opaque))); } }; return(func); }