Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
        internal OutboundDispatcher()
        {
            Queue.Start();

            Channels = new BroadcastChannels();
            Channels.ItemsInserted += OnChannelsInserted;

            Sinks = new SinkPipeline();
            Sinks.Add(new OutboundPersitencySink(), new OutboundEventHandlingSink());
        }
Esempio n. 4
0
        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;
            }
        }