private void InitializeBindingHosts() { var transportByBinding = from definition in mTransportDefinitions from binding in definition.Bindings group definition.Transport by binding; foreach (IGrouping <IWampBinding, IWampTransport> bindingToTransports in transportByBinding) { IWampBinding binding = bindingToTransports.Key; IWampBindingHost host = GetBindingHost((dynamic)binding, bindingToTransports); mBindingToHost[binding] = host; } }
private IWampBindingHost GetBindingHost <TMessage> (IWampBinding <TMessage> binding, IEnumerable <IWampTransport> transports) { List <IWampConnectionListener <TMessage> > listeners = new List <IWampConnectionListener <TMessage> >(); foreach (IWampTransport transport in transports) { IWampConnectionListener <TMessage> listener = transport.GetListener(binding); listeners.Add(listener); } IWampConnectionListener <TMessage> compositeListener = new CompositeListener <TMessage>(listeners); IWampBindingHost host = binding.CreateHost(RealmContainer, compositeListener, mUriValidator, mSessionIdMap); return(host); }