Beispiel #1
0
 /// <summary>
 /// Handler for dealing with error conditions coming from the database
 /// </summary>
 /// <param name="mon"></param>
 /// <param name="args"></param>
 static void OnDataError(DataMonitor mon, SqlNotificationEventArgs args)
 {
     log.ErrorFormat("Invalid Query for SqlDependency");
 }
Beispiel #2
0
        /// <summary>
        /// Ask the manager to add a new Data Monitor to the collection.
        /// [NOTE:  The parms are BITS-oriented but can be any app-specific wrapper
        /// used to pass in the details required to instantiate the Data Monitor(s)]
        /// </summary>
        /// <param name="job"></param>
        /// <param name="dmDetails"></param>
        public void AddDataMonitor(IJob job, DataMonitorDetails dmDetails)
        {
            #region early return

            if (_dmDictionary.ContainsKey(dmDetails.JobKeyCode))
            {
                log.WarnFormat("Attempting to re-add existing Data Monitor.");
                return;
            }

            // test connection to database            
            if (!DatabaseUtils.Connect(dmDetails.ConnectionString))
                throw new ApplicationException("Database connection not established.");
            
            #endregion

            //keep a list of server connection strings
            AddServerConnection(dmDetails.ConnectionString);

            // here's the juice
            DataMonitor dm = new DataMonitor(dmDetails.ConnectionString, dmDetails.QueryString, dmDetails.CommandType);
            lock (s_lock)
            {
                dm.Id = dmDetails.JobKeyCode;  //[Note:  This is BITS-specific but any name can be provided.]
                dm.OnError += OnDataError;
                dm.OnData += OnData;

                _dmDictionary[dmDetails.JobKeyCode] = dm;
                _dmDetailsDictionary[dmDetails.JobKeyCode] = dmDetails;
                _dmDictionary[dmDetails.JobKeyCode].Start();
            }
        }
Beispiel #3
0
 /// <summary>
 ///  Primary handler for dealing with new data 
 /// [BITS-specific:  Note that while the content is BITS-specific, this handler is absolutely necessary to deal
 /// with new data from the database.]
 /// </summary>
 /// <param name="mon"></param>
 /// <param name="dt"></param>
 static void OnData(DataMonitor mon, DataTable dt)
 {
     DataMonitorDetails dmd = DataMonitorManager.InstanceOf()._dmDetailsDictionary[mon.Id];
     ExecutionEngine.InstanceOf().DataMonitorTrigger(dmd, dt);
 }