/// <summary>
        /// Reads the local opc servers.
        /// </summary>
        /// <param name="servers">The servers.</param>
        /// <param name="error">The error.</param>
        /// <param name="exception">The exception.</param>
        /// <returns><c>true</c> if the operation succeeds, <c>false</c> otherwise</returns>
        public bool ReadLocalOpcServers(out OpcServerItems servers, out uint error, out Exception exception)
        {
            servers   = new OpcServerItems();
            error     = ResultCodes.Success;
            exception = null;
            var result = true;

            try
            {
                var opc        = OpcMonitor.CreateOpcClient();
                var opcServers = opc.BrowseServers(string.Empty);

                // The IP address is not used anymore...
                servers.AddRange(opcServers.Select(server => new OpcServerItem(false)
                {
                    Name = server.Description, ClassId = server.ServerClass, IpAddress = "127.0.0.1"
                }));

                opc.Dispose();
            }
            catch (Exception ex)
            {
                Logger.FatalException(this, "Error browsing local OPC servers.", exception);
                servers.Clear();
                error     = ResultCodes.CannotBrowseOpcServers;
                exception = ex;
                DiagnosticsCollection.Instance.AddMessage("Error browsing local OPC servers.");
                DiagnosticsCollection.Instance.AddMessage(exception);
                result = false;
            }

            return(result);
        }
        /// <summary>
        /// Called when [read local opc servers response].
        /// </summary>
        /// <param name="invokeId">The invoke id.</param>
        /// <param name="opcServers">The opc servers.</param>
        /// <param name="error">The error.</param>
        /// <param name="errorMessage">The error message.</param>
        public void OnReadLocalOpcServersResponse(Guid invokeId, OpcServerItems opcServers, uint error, string errorMessage)
        {
            var serviceDataReceiver = this.GetServiceDataReceiver();

            if (serviceDataReceiver != null)
            {
                var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                this.HandleError(invokeId, error, errorMessage, serviceDataReceiver, currentMethodName);

                if (error == ResultCodes.Success)
                {
                    serviceDataReceiver.OpcServersResponseCompleted(opcServers);
                }
            }
        }
 /// <summary>
 /// Handles the opc servers response.
 /// </summary>
 /// <param name="opcServers">The opc servers.</param>
 private void HandleOpcServersResponse(OpcServerItems opcServers)
 {
     this.OnOpcServersResponse(opcServers);
 }
 /// <summary>
 /// Opc the servers response completed.
 /// </summary>
 /// <param name="opcServers">The opc servers.</param>
 public void OpcServersResponseCompleted(OpcServerItems opcServers)
 {
     Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Input, new Action <OpcServerItems>(this.HandleOpcServersResponse), opcServers);
 }
 /// <summary>
 /// Called when [read local opc servers response].
 /// </summary>
 /// <param name="invokeId">The invoke id.</param>
 /// <param name="opcServers">The opc servers.</param>
 /// <param name="error">The error.</param>
 /// <param name="errorMessage">The error message.</param>
 void ICommServerCallback.OnReadLocalOpcServersResponse(Guid invokeId, OpcServerItems opcServers, uint error, string errorMessage)
 {
     this.OnReadLocalOpcServersResponse(invokeId, opcServers, error, errorMessage);
 }
 /// <summary>
 /// Called when [read local opc servers response].
 /// </summary>
 /// <param name="invokeId">The invoke id.</param>
 /// <param name="opcServers">The opc servers.</param>
 /// <param name="error">The error.</param>
 /// <param name="errorMessage">The error message.</param>
 protected void OnReadLocalOpcServersResponse(Guid invokeId, OpcServerItems opcServers, uint error, string errorMessage)
 {
     System.Diagnostics.Debug.WriteLine(string.Format("{0}: {1}, error: {2}, errorMessage: {3}", System.Reflection.MethodBase.GetCurrentMethod().Name, invokeId.ToString(), error, errorMessage == null ? "(null)" : errorMessage));
 }