public static void UnregisterListener(LocalChannelListener listener) { lock (routingTable) { if (!routingTable.Remove(listener.Uri)) { throw new InvalidOperationException(String.Format (ExceptionMessages.NoListenerRegistered, listener.Uri)); } } }
public static void RegisterListener(LocalChannelListener listener) { LocalChannelListener listenerOut; lock (routingTable) { if (!routingTable.TryGetValue(listener.Uri, out listenerOut)) { routingTable.Add(listener.Uri, listener); } else { throw new InvalidOperationException(String.Format (ExceptionMessages.ListenerAlreadyRegistered, listener.Uri)); } } }
static IDuplexSessionChannel CreateServerChannel(InputQueue<Message> inputQueue, InputQueue<Message> outputQueue, EndpointAddress remoteAddress, Uri via, out LocalChannelListener channelListener) { lock (routingTable) { if (!routingTable.TryGetValue(via, out channelListener)) { throw new EndpointNotFoundException(String.Format (ExceptionMessages.ChannelListenerNotFound, via.ToString())); } } return new ServerLocalDuplexSessionChannel(channelListener, inputQueue, outputQueue, remoteAddress, via); }
internal ServerLocalDuplexSessionChannel(LocalChannelListener listener, InputQueue<Message>receiveQueue, InputQueue<Message>sendQueue, EndpointAddress address, Uri via) : base(listener, receiveQueue, sendQueue, address, via) { }