protected override void OnOpened() { base.OnOpened(); if (WcfEventSource.Instance.ListenerOpenStopIsEnabled()) { WcfEventSource.Instance.ListenerOpenStop(_eventTraceActivity); _eventTraceActivity = null; // clear this since we don't need this anymore. } _errorBehavior = new ErrorBehavior(this); _filterTable = new EndpointDispatcherTable(this.ThisLock); for (int i = 0; i < _endpointDispatchers.Count; i++) { EndpointDispatcher endpoint = _endpointDispatchers[i]; // Force a build of the runtime to catch any unexpected errors before we are done opening. // Lock down the DispatchRuntime. endpoint.DispatchRuntime.LockDownProperties(); _filterTable.AddEndpoint(endpoint); } IListenerBinder binder = ListenerBinder.GetBinder(_listener, _messageVersion); _listenerHandler = new ListenerHandler(binder, this, _timeouts); _listenerHandler.Open(); // This never throws, which is why it's ok for it to happen in OnOpened }
private void OnAddEndpoint(EndpointDispatcher endpoint) { lock (ThisLock) { endpoint.Attach(this); if (State == CommunicationState.Opened) { EndpointDispatcherTable.AddEndpoint(endpoint); } } }