public async Task RegisterOnPremiseAsync(IOnPremiseConnectionContext onPremiseConnectionContext) { CheckDisposed(); _logger?.Debug("Registering link. link-id={LinkId}, connection-id={ConnectionId}, user-name={UserName}, role={Role} connector-version={ConnectorVersion}, connector-assembly-version={ConnectorAssemblyVersion}", onPremiseConnectionContext.LinkId, onPremiseConnectionContext.ConnectionId, onPremiseConnectionContext.UserName, onPremiseConnectionContext.Role, onPremiseConnectionContext.ConnectorVersion, onPremiseConnectionContext.ConnectorAssemblyVersion); await _linkRepository.AddOrRenewActiveConnectionAsync(onPremiseConnectionContext.LinkId, OriginId, onPremiseConnectionContext.ConnectionId, onPremiseConnectionContext.ConnectorVersion, onPremiseConnectionContext.ConnectorAssemblyVersion).ConfigureAwait(false); lock (_requestSubscriptions) { if (!_requestSubscriptions.ContainsKey(onPremiseConnectionContext.ConnectionId)) { _requestSubscriptions[onPremiseConnectionContext.ConnectionId] = _messageDispatcher.OnRequestReceived(onPremiseConnectionContext.LinkId, onPremiseConnectionContext.ConnectionId, !onPremiseConnectionContext.SupportsAck) .Subscribe(request => onPremiseConnectionContext.RequestAction(request, _cancellationToken)); onPremiseConnectionContext.IsActive = true; } } _connectionContexts.TryAdd(onPremiseConnectionContext.ConnectionId, onPremiseConnectionContext); if (onPremiseConnectionContext.SupportsConfiguration) { await ProvideLinkConfigurationAsync(onPremiseConnectionContext).ConfigureAwait(false); } }