Exemple #1
0
        /// <summary>
        /// Creates a new <see cref="SubscriberStatusQuery"/>.
        /// </summary>
        public SubscriberStatusQuery()
        {
            m_serviceClient = CommonFunctions.GetWindowsServiceClient();
            m_serviceClient.Helper.ReceivedServiceResponse += Helper_ReceivedServiceResponse;

            m_subscriberStatuses = new List<Tuple<Guid, bool, string>>();
            m_responseComplete = new AutoResetEvent(false);
            m_requestComplete = new AutoResetEvent(true);
            m_queuedQueryPending = new object();
            m_responseTimeout = DefaultResponseTimeout;
        }
Exemple #2
0
        private void ConnectToService()
        {
            if (m_windowsServiceClient != null)
            {
                try
                {
                    m_windowsServiceClient.Helper.RemotingClient.ConnectionEstablished -= RemotingClient_ConnectionEstablished;
                    m_windowsServiceClient.Helper.RemotingClient.ConnectionTerminated -= RemotingClient_ConnectionTerminated;
                }
                catch
                {
                }
            }

            m_windowsServiceClient = CommonFunctions.GetWindowsServiceClient();

            if (m_windowsServiceClient != null)
            {
                m_windowsServiceClient.Helper.RemotingClient.ConnectionEstablished += RemotingClient_ConnectionEstablished;
                m_windowsServiceClient.Helper.RemotingClient.ConnectionTerminated += RemotingClient_ConnectionTerminated;

                if (m_windowsServiceClient.Helper.RemotingClient.CurrentState == TVA.Communication.ClientState.Connected)
                {
                    EllipseConnectionState.Dispatcher.BeginInvoke((Action)delegate()
                    {
                        EllipseConnectionState.Fill = Application.Current.Resources["GreenRadialGradientBrush"] as RadialGradientBrush;
                        ToolTipService.SetToolTip(EllipseConnectionState, "Connected to the service");
                    });
                }
                else
                {
                    EllipseConnectionState.Dispatcher.BeginInvoke((Action)delegate()
                    {
                        EllipseConnectionState.Fill = Application.Current.Resources["RedRadialGradientBrush"] as RadialGradientBrush;
                        ToolTipService.SetToolTip(EllipseConnectionState, "Disconnected from the service");
                    });
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// Disconnects from backend windows service.
 /// </summary>
 public static void DisconnectWindowsServiceClient()
 {
     try
     {
         if (s_windowsServiceClient != null)
         {
             s_windowsServiceClient.Dispose();
             s_windowsServiceClient = null;
         }
     }
     catch
     {
         // TODO: Log into database error log.
     }
 }
Exemple #4
0
        /// <summary>
        /// Connects to backend windows service.
        /// </summary>
        public static void ConnectWindowsServiceClient(bool overwrite = false)
        {
            TcpClient remotingClient;
            ISecurityProvider provider;
            UserData userData;

            if (overwrite)
            {
                DisconnectWindowsServiceClient();
                ServiceConnectionRefreshed(null, EventArgs.Empty);
            }
            else
            {
                if (s_windowsServiceClient == null || s_windowsServiceClient.Helper.RemotingClient.CurrentState != TVA.Communication.ClientState.Connected)
                {
                    if (s_windowsServiceClient != null)
                        DisconnectWindowsServiceClient();

                    AdoDataConnection database = new AdoDataConnection(DefaultSettingsCategory);
                    try
                    {
                        string connectionString = database.ServiceConnectionString(true);   //.RemoteStatusServerConnectionString();

                        if (!string.IsNullOrWhiteSpace(connectionString))
                        {
                            s_windowsServiceClient = new WindowsServiceClient(connectionString);

                            if (SecurityProviderCache.TryGetCachedProvider(CurrentUser, out provider))
                            {
                                userData = provider.UserData;

                                if ((object)userData != null)
                                {
                                    s_windowsServiceClient.Helper.Username = userData.LoginID;
                                    s_windowsServiceClient.Helper.Password = SecurityProviderUtility.EncryptPassword(provider.Password);
                                    remotingClient = s_windowsServiceClient.Helper.RemotingClient as TcpClient;

                                    if ((object)remotingClient != null && (object)provider.SecurePassword != null && provider.SecurePassword.Length > 0)
                                        remotingClient.NetworkCredential = new NetworkCredential(userData.LoginID, provider.SecurePassword);
                                }

                                s_windowsServiceClient.Helper.RemotingClient.MaxConnectionAttempts = -1;
                                s_windowsServiceClient.Helper.RemotingClient.ConnectionEstablished += RemotingClient_ConnectionEstablished;
                                ThreadPool.QueueUserWorkItem(ConnectAsync, null);
                            }
                        }
                    }
                    finally
                    {
                        if (database != null)
                            database.Dispose();
                    }
                }
            }
        }
        /// <summary>
        /// Creates a new <see cref="AuthorizedMeasurementsQuery"/>.
        /// </summary>
        public AuthorizedMeasurementsQuery()
        {
            m_serviceClient = CommonFunctions.GetWindowsServiceClient();
            m_serviceClient.Helper.ReceivedServiceResponse += Helper_ReceivedServiceResponse;

            m_authorizedSignalIDs = new List<Guid>();
            m_responseComplete = new AutoResetEvent(false);
            m_requestComplete = new AutoResetEvent(true);
            m_queuedQueryPending = new object();
            m_responseTimeout = DefaultResponseTimeout;
        }
        /// <summary>
        /// Releases the unmanaged resources used by the <see cref="AuthorizedMeasurementsQuery"/> object and optionally releases the managed resources.
        /// </summary>
        /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        protected virtual void Dispose(bool disposing)
        {
            if (!m_disposed)
            {
                try
                {
                    if (disposing)
                    {
                        if ((object)m_serviceClient != null && (object)m_serviceClient.Helper != null)
                            m_serviceClient.Helper.ReceivedServiceResponse -= Helper_ReceivedServiceResponse;

                        m_serviceClient = null;

                        if ((object)m_responseComplete != null)
                        {
                            // Release any waiting threads before disposing wait handle
                            m_responseComplete.Set();
                            m_responseComplete.Dispose();
                        }

                        m_responseComplete = null;

                        if ((object)m_requestComplete != null)
                        {
                            // Release any waiting threads before disposing wait handle
                            m_requestComplete.Set();
                            m_requestComplete.Dispose();
                        }

                        m_requestComplete = null;
                    }
                }
                finally
                {
                    m_disposed = true;  // Prevent duplicate dispose.
                }
            }
        }