Ejemplo n.º 1
0
 public void Connect(string[] categories, PropertyUpdateWrapper propertyUpdate, ClientErrorWrapper showError, ConnectionStatusWrapper connectionStatus)
 {
     _categories       = categories;
     _propertyUpdate   = propertyUpdate;
     _showError        = showError;
     _connectionStatus = connectionStatus;
     ThreadPool.QueueUserWorkItem(param =>
     {
         _callback = new CallbackHandler(ClientId, ConnectionStatus);
         Thread.Sleep(100);
         _callback.RegisterForUpdates(categories, propertyUpdate, showError);
     });
     _faultTimer = new System.Timers.Timer(15 * 1000)
     {
         AutoReset = false
     };
     _faultTimer.Elapsed += Reconnecting;
 }
Ejemplo n.º 2
0
        public CallbackHandler(Guid clientId, ConnectionStatusWrapper connectionStatus)
        {
            _clientId         = clientId;
            _connectionStatus = connectionStatus;
            var uri = "net.pipe://localhost/ModbusIntegrationServer";

            _site    = new InstanceContext(this);
            _binding = new NetNamedPipeBinding
            {
                OpenTimeout    = _timeout,
                SendTimeout    = _timeout,
                ReceiveTimeout = _timeout,
                CloseTimeout   = _timeout
            };
            _proxy = new DataEventClient.ClientServiceReference.ClientEventServiceClient(_site, _binding, new EndpointAddress(uri));

            _proxy.InnerDuplexChannel.Opened += (sender, args) =>
            {
                _connectionStatus?.Invoke(_clientId, ClientConnectionStatus.Opened);
                ThreadPool.QueueUserWorkItem(arg =>
                {
                    Thread.Sleep(1000);
                    SubscribeValues();
                });
            };
            _proxy.InnerDuplexChannel.Opening += (sender, args) =>
            {
                _connectionStatus?.Invoke(_clientId, ClientConnectionStatus.Opening);
            };
            _proxy.InnerDuplexChannel.Closed += (sender, args) =>
            {
                _connectionStatus?.Invoke(_clientId, ClientConnectionStatus.Closed);
            };

            _proxy.InnerDuplexChannel.Faulted += (sender, args) =>
            {
                _connectionStatus?.Invoke(_clientId, ClientConnectionStatus.Faulted);
            };
        }
Ejemplo n.º 3
0
        public CallbackHandler(Guid clientId, string host, int port, ConnectionStatusWrapper connectionStatus)
        {
            _clientId         = clientId;
            _host             = host;
            _connectionStatus = connectionStatus;
            var uri = (host == null || host.Trim().Length == 0 || host.ToLower().Equals("localhost") ||
                       host.Equals("127.0.0.1"))
                          ? "net.pipe://localhost/FillingEventServer"
                          : String.Format("net.tcp://{0}:{1}/FillingEventServer", host.Trim(), port);

            _site = new InstanceContext(this);
            if (uri.StartsWith("net.tcp://"))
            {
                _binding = new NetTcpBinding
                {
                    OpenTimeout    = _timeout,
                    SendTimeout    = _timeout,
                    ReceiveTimeout = _timeout,
                    CloseTimeout   = _timeout,
                    Security       = new NetTcpSecurity {
                        Mode = SecurityMode.None
                    }
                };
            }
            else
            {
                _binding = new NetNamedPipeBinding
                {
                    OpenTimeout    = _timeout,
                    SendTimeout    = _timeout,
                    ReceiveTimeout = _timeout,
                    CloseTimeout   = _timeout
                }
            };
            _proxy = new DataServiceRef.AShEventServiceClient(_site, _binding, new EndpointAddress(uri));

            _proxy.InnerDuplexChannel.Opened += (sender, args) =>
            {
                if (_connectionStatus != null)
                {
                    _connectionStatus(_clientId, _host, ClientConnectionStatus.Opened);
                }
                ThreadPool.QueueUserWorkItem(arg =>
                {
                    Thread.Sleep(1000);
                    SubscribeValues();
                });
            };
            _proxy.InnerDuplexChannel.Opening += (sender, args) =>
            {
                if (_connectionStatus != null)
                {
                    _connectionStatus(_clientId, _host, ClientConnectionStatus.Opening);
                }
            };
            _proxy.InnerDuplexChannel.Closed += (sender, args) =>
            {
                if (_connectionStatus != null)
                {
                    _connectionStatus(_clientId, _host, ClientConnectionStatus.Closed);
                }
            };

            _proxy.InnerDuplexChannel.Faulted += (sender, args) =>
            {
                if (_connectionStatus != null)
                {
                    _connectionStatus(_clientId, _host, ClientConnectionStatus.Faulted);
                }
            };
        }