public IXDBroadcaster GetBroadcasterForMode(XDTransportMode transportMode, bool propagateNetwork) { var broadcaster = GetBroadcasterForModeInternal(transportMode); if (!propagateNetwork || transportMode == XDTransportMode.RemoteNetwork) { return(broadcaster); } var remoteBroadcaster = CreateNetworkBroadcaster(); if (!remoteBroadcaster.IsAlive) { throw new ConfigurationErrorsException( "The RemoteNetwork Broadcaster is not configured. Check the configuration settings."); } var relayBroadcaster = new NetworkRelayBroadcaster( serializer, transportMode, remoteBroadcaster); return(client.Broadcasters.GetMulticastBroadcaster(broadcaster, relayBroadcaster)); }
public IXDBroadcaster GetBroadcasterForMode(XDTransportMode transportMode, bool propagateNetwork) { var broadcaster = Container.Resolve <IXDBroadcaster>(Convert.ToString(transportMode)); if (broadcaster == null) { throw new NotSupportedException( string.Format( "No concrete IXDBroadcast for mode {0} could be loaded. Install the {0} assembly in the program directory.", transportMode)); } if (propagateNetwork && transportMode != XDTransportMode.RemoteNetwork) { var remoteBroadcaster = messagingClient.Broadcasters.GetBroadcasterForMode(XDTransportMode.RemoteNetwork); if (!remoteBroadcaster.IsAlive) { throw new ConfigurationErrorsException("The RemoteNetwork Broadcaster is not configured. Check the configuration settings."); } var relayBroadcaster = new NetworkRelayBroadcaster(Container.Resolve <ISerializer>(), transportMode, remoteBroadcaster); broadcaster = messagingClient.Broadcasters.GetMulticastBroadcaster(broadcaster, relayBroadcaster); } return(broadcaster); }