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; }
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); }; }
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); } }; }