internal void CreateFactories() { CloseFactories(); BroadcastChannels = new BroadcastChannels <T>(Settings.Server, Settings.Port, BroadcastInstance); BroadcastChannels.OpenChannelAction = delegate { KeyedByTypeCollection <IEndpointBehavior> behaviors = BroadcastChannels.ChannelBroadcastFactory.Endpoint.Behaviors; if (behaviors.Find <ErrorClientBehavior>() == null) { var handler = new ClientErrorHandler <MT, T>(this, BroadcastChannels.ChannelBroadcastFactory); BroadcastChannels.ChannelBroadcastFactory .Opening += (delegate { behaviors.Add(new ErrorClientBehavior(handler)); }); } }; NetTcpBinding binding = Channels.GetBinding(); MainChannelFactory = new DuplexChannelFactory <MT, T> (BroadcastChannels.Callback, binding, new EndpointAddress(ServerAddress)); MainChannelFactory.Opened += delegate { AfterMainChannelOpened(); }; AfterCreateChannels(binding); }
public DuplexService(int port) { broadcasts = new BroadcastChannels <T>("localhost", port, null); PerfCounters = new PerfCounters(Settings.Default.ServerListenPort.ToString()); checkConnections = new Thread( delegate() { try { while (true) { Thread.Sleep(new TimeSpan(0, Settings.Default.DropConnectionCheckMinutes, 0)); CheckConnections(); } } catch (ThreadAbortException) { } }) { Name = string.Format("WCF {0} - Check Connections", GetType().Name), CurrentCulture = new CultureInfo(Config.DefaultLanguage), }; checkConnections.Start(); ServiceState = ServiceState.Run; }
internal OutboundDispatcher() { Queue.Start(); Channels = new BroadcastChannels(); Channels.ItemsInserted += OnChannelsInserted; Sinks = new SinkPipeline(); Sinks.Add(new OutboundPersitencySink(), new OutboundEventHandlingSink()); }
public void CloseFactories() { if (ClientStatus == ClientStatus.Connected) { new DisconnectCommand <MT, T>(true).ExecuteSafe(this, null); } else { ClientStatus = ClientStatus.NotConnected; } BeforeCloseChannel(); Channels.CloseChannel(ref _mainChannel); Channels.CloseFactory(ref MainChannelFactory); if (BroadcastChannels != null) { BroadcastChannels.Dispose(); BroadcastChannels = null; } }