private ServiceHubRemoteHostClient( HostWorkspaceServices services, IServiceBroker serviceBroker, ServiceBrokerClient serviceBrokerClient, HubClient hubClient, Stream stream, IRemoteServiceCallbackDispatcherProvider callbackDispatcherProvider) { _connectionPools = new ConnectionPools( connectionFactory: (serviceName, pool, cancellationToken) => CreateConnectionImplAsync(serviceName, callbackTarget: null, pool, cancellationToken), capacity: ConnectionPoolCapacity); // use the hub client logger for unexpected exceptions from devenv as well, so we have complete information in the log: services.GetService <IWorkspaceTelemetryService>()?.RegisterUnexpectedExceptionLogger(hubClient.Logger); _services = services; _serviceBroker = serviceBroker; _serviceBrokerClient = serviceBrokerClient; _hubClient = hubClient; _callbackDispatcherProvider = callbackDispatcherProvider; _endPoint = new RemoteEndPoint(stream, hubClient.Logger, incomingCallTarget: this); _endPoint.Disconnected += OnDisconnected; _endPoint.UnexpectedExceptionThrown += OnUnexpectedExceptionThrown; _endPoint.StartListening(); _assetStorage = services.GetRequiredService <ISolutionAssetStorageProvider>().AssetStorage; _serializer = services.GetRequiredService <ISerializerService>(); _errorReportingService = services.GetService <IErrorReportingService>(); _shutdownCancellationService = services.GetService <IRemoteHostClientShutdownCancellationService>(); _isRemoteHostServerGC = RemoteHostOptions.IsServiceHubProcessServerGC(services); _isRemoteHostCoreClr = RemoteHostOptions.IsServiceHubProcessCoreClr(services); }
private ServiceHubRemoteHostClient( HostWorkspaceServices services, HubClient hubClient, HostGroup hostGroup, Stream stream) { _connectionPools = new ConnectionPools( connectionFactory: (serviceName, pool, cancellationToken) => CreateConnectionImplAsync(serviceName, callbackTarget: null, pool, cancellationToken), capacity: ConnectionPoolCapacity); // use the hub client logger for unexpected exceptions from devenv as well, so we have complete information in the log: services.GetService <IWorkspaceTelemetryService>()?.RegisterUnexpectedExceptionLogger(hubClient.Logger); _services = services; _hubClient = hubClient; _hostGroup = hostGroup; _endPoint = new RemoteEndPoint(stream, hubClient.Logger, incomingCallTarget: this); _endPoint.Disconnected += OnDisconnected; _endPoint.UnexpectedExceptionThrown += OnUnexpectedExceptionThrown; _endPoint.StartListening(); _assetStorage = services.GetRequiredService <ISolutionAssetStorageProvider>().AssetStorage; _serializer = services.GetRequiredService <ISerializerService>(); }
public static async Task WriteDataAsync(ObjectWriter writer, SolutionAssetStorage assetStorage, ISerializerService serializer, int scopeId, Checksum[] checksums, CancellationToken cancellationToken) { writer.WriteInt32(scopeId); // special case if (checksums.Length == 0) { writer.WriteInt32(0); return; } if (checksums.Length == 1) { var checksum = checksums[0]; var asset = (await assetStorage.GetAssetAsync(scopeId, checksum, cancellationToken).ConfigureAwait(false)) ?? SolutionAsset.Null; writer.WriteInt32(1); WriteAsset(writer, serializer, checksum, asset, cancellationToken); return; } var assets = await assetStorage.GetAssetsAsync(scopeId, checksums, cancellationToken).ConfigureAwait(false); writer.WriteInt32(assets.Count); foreach (var(checksum, asset) in assets) { WriteAsset(writer, serializer, checksum, asset, cancellationToken); }
public BrokeredServiceConnection( TService service, SolutionAssetStorage solutionAssetStorage, IErrorReportingService?errorReportingService, IRemoteHostClientShutdownCancellationService?shutdownCancellationService) { _errorReportingService = errorReportingService; _shutdownCancellationService = shutdownCancellationService; _solutionAssetStorage = solutionAssetStorage; _service = service; }
public BrokeredServiceConnection( object?callbackTarget, ServiceBrokerClient serviceBrokerClient, SolutionAssetStorage solutionAssetStorage, IErrorReportingService?errorReportingService, IRemoteHostClientShutdownCancellationService?shutdownCancellationService, bool isRemoteHost64Bit) { _serviceBrokerClient = serviceBrokerClient; _solutionAssetStorage = solutionAssetStorage; _errorReportingService = errorReportingService; _shutdownCancellationService = shutdownCancellationService; _serviceDescriptor = ServiceDescriptors.GetServiceDescriptor(typeof(TService), isRemoteHost64Bit); _callbackHandle = _serviceDescriptor.CallbackDispatcher?.CreateHandle(callbackTarget) ?? default; }
public BrokeredServiceConnection( ServiceDescriptor serviceDescriptor, object?callbackTarget, IRemoteServiceCallbackDispatcher?callbackDispatcher, ServiceBrokerClient serviceBrokerClient, SolutionAssetStorage solutionAssetStorage, IErrorReportingService?errorReportingService, IRemoteHostClientShutdownCancellationService?shutdownCancellationService) { Contract.ThrowIfFalse((callbackDispatcher == null) == (serviceDescriptor.ClientInterface == null)); _serviceDescriptor = serviceDescriptor; _serviceBrokerClient = serviceBrokerClient; _solutionAssetStorage = solutionAssetStorage; _errorReportingService = errorReportingService; _shutdownCancellationService = shutdownCancellationService; _callbackDispatcher = callbackDispatcher; _callbackHandle = callbackDispatcher?.CreateHandle(callbackTarget) ?? default; }
public JsonRpcConnection( HostWorkspaceServices services, TraceSource logger, object?callbackTarget, Stream serviceStream, IPooledConnectionReclamation?poolReclamation) { _solutionAssetStorage = services.GetRequiredService <ISolutionAssetStorageProvider>().AssetStorage; _services = services; _serviceEndPoint = new RemoteEndPoint(serviceStream, logger, callbackTarget); _serviceEndPoint.UnexpectedExceptionThrown += UnexpectedExceptionThrown; _serviceEndPoint.StartListening(); _poolReclamation = poolReclamation; #if DEBUG _creationCallStack = Environment.StackTrace; #endif }
private ServiceHubRemoteHostClient( HostWorkspaceServices services, RemoteProcessConfiguration configuration, ServiceBrokerClient serviceBrokerClient, HubClient hubClient, IRemoteServiceCallbackDispatcherProvider callbackDispatcherProvider) { // use the hub client logger for unexpected exceptions from devenv as well, so we have complete information in the log: services.GetService <IWorkspaceTelemetryService>()?.RegisterUnexpectedExceptionLogger(hubClient.Logger); _services = services; _serviceBrokerClient = serviceBrokerClient; _hubClient = hubClient; _callbackDispatcherProvider = callbackDispatcherProvider; _assetStorage = services.GetRequiredService <ISolutionAssetStorageProvider>().AssetStorage; _errorReportingService = services.GetService <IErrorReportingService>(); _shutdownCancellationService = services.GetService <IRemoteHostClientShutdownCancellationService>(); Configuration = configuration; }
public BrokeredServiceConnection( object?callbackTarget, RemoteServiceCallbackDispatcherRegistry callbackDispatchers, ServiceBrokerClient serviceBrokerClient, SolutionAssetStorage solutionAssetStorage, IErrorReportingService?errorReportingService, IRemoteHostClientShutdownCancellationService?shutdownCancellationService, bool isRemoteHost64Bit) { _serviceBrokerClient = serviceBrokerClient; _solutionAssetStorage = solutionAssetStorage; _errorReportingService = errorReportingService; _shutdownCancellationService = shutdownCancellationService; _serviceDescriptor = ServiceDescriptors.GetServiceDescriptor(typeof(TService), isRemoteHost64Bit); if (_serviceDescriptor.ClientInterface != null) { _callbackDispatcher = callbackDispatchers.GetDispatcher(typeof(TService)); _callbackHandle = _callbackDispatcher.CreateHandle(callbackTarget); } }
public Scope(SolutionAssetStorage storages, PinnedSolutionInfo solutionInfo) { _storages = storages; SolutionInfo = solutionInfo; }
private SolutionAssetStorageProvider(SolutionAssetStorage storage) { AssetStorage = storage; }
internal TestAccessor(SolutionAssetStorage solutionAssetStorage) { _solutionAssetStorage = solutionAssetStorage; }
public BrokeredServiceConnection(TService service, SolutionAssetStorage solutionAssetStorage, IErrorReportingService errorReportingService) { _errorReportingService = errorReportingService; _solutionAssetStorage = solutionAssetStorage; _service = service; }