HostReceiveEndpointHandle StartEndpoint(string endpointName, IReceiveEndpointControl endpoint, CancellationToken cancellationToken) { try { var endpointReady = new ReceiveEndpointReadyObserver(endpoint, cancellationToken); var consumeObserver = endpoint.ConnectConsumeObserver(_consumeObservers); var receiveObserver = endpoint.ConnectReceiveObserver(_receiveObservers); var receiveEndpointObserver = endpoint.ConnectReceiveEndpointObserver(_receiveEndpointObservers); var publishObserver = endpoint.ConnectPublishObserver(_publishObservers); var sendObserver = endpoint.ConnectSendObserver(_sendObservers); var endpointHandle = endpoint.Start(); var handle = new Handle(endpointHandle, endpoint, endpointReady.Ready, () => Remove(endpointName), receiveObserver, receiveEndpointObserver, consumeObserver, publishObserver, sendObserver); lock (_mutateLock) _handles.Add(endpointName, handle); return(handle); } catch { lock (_mutateLock) _endpoints.Remove(endpointName); throw; } }
void IBusHostControl.AddReceiveEndpoint(string endpointName, IReceiveEndpointControl receiveEndpoint) { if (_host == null) { throw new InvalidOperationException("The host is not ready."); } _host.AddReceiveEndpoint(endpointName, receiveEndpoint); }
public void Add(string endpointName, IReceiveEndpointControl endpoint) { if (endpoint == null) { throw new ArgumentNullException(nameof(endpoint)); } if (string.IsNullOrWhiteSpace(endpointName)) { throw new ArgumentException($"The {nameof(endpointName)} must not be null or empty", nameof(endpointName)); } lock (_mutateLock) { if (_endpoints.ContainsKey(endpointName)) { throw new ConfigurationException($"A receive endpoint with the same key was already added: {endpointName}"); } _endpoints.Add(endpointName, endpoint); } }
public void AddReceiveEndpoint(string endpointName, IReceiveEndpointControl receiveEndpoint) { ReceiveEndpoints.Add(endpointName, receiveEndpoint); }
void IBusHostControl.AddReceiveEndpoint(string endpointName, IReceiveEndpointControl receiveEndpoint) { _receiveEndpoints.Add(endpointName, receiveEndpoint); }