protected async Task <TResult> ExecuteOperationAsync <TResult>(IWriteOperation <TResult> operation) { using (var binding = CreateReadWriteBinding()) using (var bindingHandle = new ReadWriteBindingHandle(binding)) { return(await operation.ExecuteAsync(bindingHandle, CancellationToken.None)); } }
protected TResult ExecuteOperation <TResult>(IWriteOperation <TResult> operation) { using (var binding = CreateReadWriteBinding()) using (var bindingHandle = new ReadWriteBindingHandle(binding)) { return(operation.Execute(bindingHandle, CancellationToken.None)); } }
protected async Task <TResult> ExecuteOperationAsync <TResult>(IWriteOperation <TResult> operation) { using (var binding = CoreTestConfiguration.GetReadWriteBinding(_session.Fork())) using (var bindingHandle = new ReadWriteBindingHandle(binding)) { return(await operation.ExecuteAsync(bindingHandle, CancellationToken.None)); } }
protected TResult ExecuteOperation <TResult>(IWriteOperation <TResult> operation, bool useImplicitSession = false) { using (var binding = CreateReadWriteBinding(useImplicitSession)) using (var bindingHandle = new ReadWriteBindingHandle(binding)) { return(operation.Execute(bindingHandle, CancellationToken.None)); } }
private void DropView(CollectionNamespace viewNamespace) { var operation = new DropCollectionOperation(viewNamespace, CoreTestConfiguration.MessageEncoderSettings); using (var session = CoreTestConfiguration.StartSession(_cluster)) using (var binding = new WritableServerBinding(_cluster, session.Fork())) using (var bindingHandle = new ReadWriteBindingHandle(binding)) { operation.Execute(bindingHandle, CancellationToken.None); } }
private IDisposable RequestStart(IServerSelector serverSelector, ReadPreference readPreference) { var request = __threadStaticRequest; if (request != null) { var selected = serverSelector.SelectServers(_cluster.Description, new[] { request.ServerDescription }).ToList(); if (selected.Count == 0) { throw new InvalidOperationException("A nested call to RequestStart was made that is not compatible with the existing request."); } request.NestingLevel++; return(new RequestStartResult(this)); } IReadBindingHandle channelBinding; ConnectionId connectionId; var server = _cluster.SelectServer(serverSelector, CancellationToken.None); using (var channel = server.GetChannel(CancellationToken.None)) { if (readPreference.ReadPreferenceMode == ReadPreferenceMode.Primary) { channelBinding = new ReadWriteBindingHandle(new ChannelReadWriteBinding(server, channel.Fork(), NoCoreSession.NewHandle())); } else { channelBinding = new ReadBindingHandle(new ChannelReadBinding(server, channel.Fork(), readPreference, NoCoreSession.NewHandle())); } connectionId = channel.ConnectionDescription.ConnectionId; } var serverDescription = server.Description; var serverInstance = _serverInstances.Single(i => EndPointHelper.Equals(i.EndPoint, serverDescription.EndPoint)); var session = _operationExecutor.StartImplicitSession(CancellationToken.None); __threadStaticRequest = new Request(serverDescription, serverInstance, channelBinding, connectionId, session); return(new RequestStartResult(this)); }
private IDisposable RequestStart(IServerSelector serverSelector, ReadPreference readPreference) { var request = __threadStaticRequest; if (request != null) { var selected = serverSelector.SelectServers(_cluster.Description, new[] { request.ServerDescription }).ToList(); if (selected.Count == 0) { throw new InvalidOperationException("A nested call to RequestStart was made that is not compatible with the existing request."); } request.NestingLevel++; return(new RequestStartResult(this)); } IReadBindingHandle connectionBinding; var server = _cluster.SelectServer(serverSelector); using (var connection = server.GetConnection()) { if (readPreference.ReadPreferenceMode == ReadPreferenceMode.Primary) { connectionBinding = new ReadWriteBindingHandle(new ConnectionReadWriteBinding(server, connection.Fork())); } else { connectionBinding = new ReadBindingHandle(new ConnectionReadBinding(server, connection.Fork(), readPreference)); } } var serverDescription = server.Description; var endPoint = (DnsEndPoint)serverDescription.EndPoint; var serverAddress = new MongoServerAddress(endPoint.Host, endPoint.Port); var serverInstance = _serverInstances.Single(i => i.Address == serverAddress); __threadStaticRequest = new Request(serverDescription, serverInstance, connectionBinding); return(new RequestStartResult(this)); }