private void CreateDatabaseEmailProcessor(IDnaLogger logger)
        {
            DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide);
            int interval = Properties.Settings.Default.DatabaseEmailProcessor_Interval;
            int numThreads = Properties.Settings.Default.DatabaseEmaiProcessor_NumThreads;
            int batchSize = Properties.Settings.Default.DatabaseEmaiProcessor_BatchSize;
            var smtpHostname = Properties.Settings.Default.DatabaseEmailProcessor_SMTPHostname;
            var smtpSslEnable = Properties.Settings.Default.DatabaseEmailProcessor_SMTPSslEnable;
            var smtpUsername = Properties.Settings.Default.DatabaseEmailProcessor_SMTPUsername;
            var smtpPassword = Properties.Settings.Default.DatabaseEmailProcessor_SMTPPassword;

            var persistentErrMsgSnippet =
                Properties.Settings.Default.DatabaseEmailProcessor_PersistentErrorMessageSnippet;

            var databaseEMailProcessor = DatabaseEmailProcessor.CreateDatabaseEmailProcessor(logger,
                                                                                             theGuideDnaDataReaderCreator,
                                                                                             interval,
                                                                                             numThreads,
                                                                                             batchSize,
                                                                                             smtpHostname,
                                                                                             smtpUsername,
                                                                                             smtpPassword,
                                                                                             smtpSslEnable);


            DatabaseEmailProcessor.PersistentErrorMsgSnippet = persistentErrMsgSnippet;
            databaseEMailProcessor.Start();
        }
示例#2
0
        public void ProcessEmail(IDnaSmtpClient client, IDnaLogger logger)
        {
            try
            {
                using (MailMessage message = new MailMessage())
                {
                    message.From = new MailAddress(FromAddress);
                    message.To.Add(ToAddress);

                    message.Subject = Subject;
                    message.SubjectEncoding = Encoding.UTF8;

                    message.Body = Body;
                    message.BodyEncoding = Encoding.UTF8;

                    message.Priority = MailPriority.Normal;

                    client.SendMessage(message);
                    Sent = true;
                }
            }
            catch (Exception e)
            {
                string errorMsg = e.Message;
                if (e.InnerException != null)
                {
                    errorMsg += " : " + e.InnerException.Message;
                }
                logger.Log(System.Diagnostics.TraceEventType.Verbose, errorMsg);
                LastFailedReason = errorMsg;
                Sent = false;
            }
        }
示例#3
0
 public ExModerationProcessor(IDnaDataReaderCreator dataReaderCreator,
     IDnaLogger logger,
     IDnaHttpClientCreator httpClientCreator)
 {
     DataReaderCreator = dataReaderCreator;
     HttpClientCreator = httpClientCreator;
     ExModLogger = logger;
 }
示例#4
0
 public SnesActivityProcessor(IDnaDataReaderCreator dataReaderCreator,
     IDnaLogger logger,
     IDnaHttpClientCreator httpClientCreator,
     int batchSize)
 {
     DataReaderCreator = dataReaderCreator;
     HttpClientCreator = httpClientCreator;
     BatchSize = batchSize;
     SnesActivityLogger = logger;
 }
        private void CreateBIEventProcessor(IDnaLogger logger)
        {
            DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide);
            DnaDataReaderCreator RiskDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_RiskMod);
            int interval = Properties.Settings.Default.BIEventsProcessor_Interval;
            bool disableRiskMod = Properties.Settings.Default.BIEventsProcessor_DisableRiskMod;
            bool recordRiskModDecisionsOnPost = Properties.Settings.Default.BIEventsProcessor_RecordRiskModDecisionsOnPost;
            int numThreads = Properties.Settings.Default.BIEventsProcessor_NumThreads;

            var biEventProc = BIEventProcessor.CreateBIEventProcessor(logger, theGuideDnaDataReaderCreator, RiskDnaDataReaderCreator, interval, disableRiskMod, recordRiskModDecisionsOnPost, numThreads);
            biEventProc.Start();
        }
        private void CreateDatabaseEmailProcessor(IDnaLogger logger)
        {
            DnaDataReaderCreator theGuideDnaDataReaderCreator = new DnaDataReaderCreator(Properties.Settings.Default.ConnectionString_TheGuide);
            int interval = Properties.Settings.Default.DatabaseEmailProcessor_Interval;
            int numThreads = Properties.Settings.Default.DatabaseEmaiProcessor_NumThreads;
            int batchSize = Properties.Settings.Default.DatabaseEmaiProcessor_BatchSize;
            string smtpSettings = Properties.Settings.Default.DatabaseEmailProcessor_SMTPSettings;
            int maxRetryAttempts = Properties.Settings.Default.DatabaseEmailProcessor_MaxRetryAttempts;

            var databaseEMailProcessor = DatabaseEmailProcessor.CreateDatabaseEmailProcessor(logger, theGuideDnaDataReaderCreator, interval, numThreads, batchSize, smtpSettings, maxRetryAttempts);
            databaseEMailProcessor.Start();
        }
        public static DatabaseEmailProcessor CreateDatabaseEmailProcessor(IDnaLogger logger, IDnaDataReaderCreator dataReaderCreator, int processInterval, int numThreads, int batchSize,
            string emailServerHostName, string emailServerUsername, string emailServerPassword, bool enableSsl)
        {
            ProcessorLogger = logger;

            if (ProcessorInstance != null)
            {
                // It's designed to have only one instance of BIEventProcessor running at a time
                // so turn the old one off and close it 
                ProcessorInstance.Stop();
                ProcessorInstance.Close();
            }

            DataReaderCreator = dataReaderCreator;
            NumberOfThreads = numThreads;
            BatchSize = batchSize;
            SMTPClient = new DnaSmtpClient(emailServerHostName, emailServerUsername, emailServerPassword, enableSsl);

            int minNumThreads, minCompPorts;
            ThreadPool.GetMinThreads(out minNumThreads, out minCompPorts);

            if (minNumThreads < NumberOfThreads)
                ThreadPool.SetMinThreads(NumberOfThreads, NumberOfThreads);

            ProcessorInstance = new DatabaseEmailProcessor(processInterval);

            bool isDebugBuild = false;
#if DEBUG
            isDebugBuild = true;
#endif

            var props = new Dictionary<string, object>() 
            { 
                { "Database connection string",   DataReaderCreator != null ? DataReaderCreator.ConnectionString : "NULL" },
                { "Interval",                     processInterval },
                { "NumThreads",                   NumberOfThreads },
                { "BatchSize",                    BatchSize },
                { "SMTP Hostname",                emailServerHostName },
                { "SMTP Username",                emailServerUsername},
                { "SMTP Enable SSL",              enableSsl.ToString()},
                { "Debug Build",                  isDebugBuild ? 1 : 0 }
            };
            logger.Log(TraceEventType.Information, "Created DatabaseEmailProcessor with these params", props);

            return ProcessorInstance;
        }
示例#8
0
        public static BIEventProcessor CreateBIEventProcessor(IDnaLogger logger, IDnaDataReaderCreator theGuideDataReaderCreator, IDnaDataReaderCreator riskModDataReaderCreator, int interval, bool disableRiskMod, bool recRiskModDecOnThreadEntries, int numThreads)
        {
            BIEventLogger = logger;

            if (BIEventProcessorInstance != null)
            {
                // It's designed to have only one instance of BIEventProcessor running at a time
                // so turn the old one off and close it 
                BIEventProcessorInstance.Stop();
                BIEventProcessorInstance.Close();
            }

            TheGuideDataReaderCreator = theGuideDataReaderCreator;
            RiskModDataReaderCreator = riskModDataReaderCreator;
            DisableRiskMod = disableRiskMod;
            RecRiskModDecOnThreadEntries = recRiskModDecOnThreadEntries;
            NumThreads = numThreads;

            int minNumThreads, minCompPorts, maxNumThreads, maxCompPorts;
            ThreadPool.GetMinThreads(out minNumThreads, out minCompPorts);
            ThreadPool.GetMaxThreads(out maxNumThreads, out maxCompPorts);
            if (minNumThreads < NumThreads)
                ThreadPool.SetMinThreads(NumThreads, NumThreads);

            BIEventProcessorInstance = new BIEventProcessor(interval);

            var props = new Dictionary<string, object>() 
            { 
                { "TheGuide connection string",   TheGuideDataReaderCreator != null ? TheGuideDataReaderCreator.ConnectionString : "NULL" },
                { "RiskMod connection string",    RiskModDataReaderCreator !=null ? RiskModDataReaderCreator.ConnectionString : "NULL" },
                { "Interval",                     interval },
                { "DisableRiskMod",               DisableRiskMod },
                { "RecRiskModDecOnThreadEntries", RecRiskModDecOnThreadEntries },
                { "NumThreads",                   NumThreads },
                { "MinThreads",                   minNumThreads },
                { "MinCompPorts",                   minCompPorts },
                { "MaxThreads",                   maxNumThreads },
                { "MaxCompPorts",                   maxCompPorts }
            };
            BIEventLogger.Log(TraceEventType.Information, "Created BIEventProcessor with these params", props);

            return BIEventProcessorInstance;
        }
示例#9
0
        public void ProcessEmail(IDnaSmtpClient client, IDnaLogger logger)
        {
            try
            {
                using (var message = new MailMessage())
                {
                    message.From = new MailAddress(FromAddress);
                    foreach (var address in ToAddress.Split(';'))
                    {
                        message.To.Add(new MailAddress(address));
                    }

                    if (CCAddress != null && CCAddress.Length > 0)
                    {
                        message.CC.Add(new MailAddress(CCAddress));
                    }

                    message.Subject = Subject;
                    message.SubjectEncoding = Encoding.UTF8;

                    message.Body = Body;
                    message.BodyEncoding = Encoding.UTF8;

                    message.Priority = MailPriority.Normal;

                    client.SendMessage(message);
                    Sent = true;
                }
            }
            catch (Exception e)
            {
                var errorMsg = e.Message;
                if (e.InnerException != null)
                {
                    errorMsg += " : " + e.InnerException.Message;
                }

                logger.Log(System.Diagnostics.TraceEventType.Verbose, errorMsg);
                LastFailedReason = errorMsg;
                Sent = false;
            }
        }
示例#10
0
        public static ISnesActivity CreateSnesActivity(IDnaLogger logger, IDnaDataReader currentRow)
        {
            var openSocialActivity = new OpenSocialActivityDataReaderAdapter(currentRow);
            var eventData = new SnesEventDataReaderAdapter(currentRow);

            ISnesActivity activity;

            switch (eventData.ActivityType)
            {
                case 19:
                    activity = CommentActivityBase.CreateActivity(openSocialActivity, eventData);
                    break;
                case 20:
                    activity = RevokeCommentActivity.CreateActivity(openSocialActivity, eventData);
                    break;
                default:
                    activity = new UnexpectedActivity();
                    break;
            }
            return activity;
        }
示例#11
0
 private static SnesActivityProcessor CreateSnesActivityProcessor(IDnaDataReaderCreator dataReaderCreator, 
     IDnaLogger logger,
     IDnaHttpClientCreator httpClientCreator)
 {
     return new SnesActivityProcessor(
         dataReaderCreator, 
         logger,
         httpClientCreator);
 }
示例#12
0
 public SnesActivityProcessor(IDnaDataReaderCreator dataReaderCreator,
     IDnaLogger logger, 
     IDnaHttpClientCreator httpClientCreator)
     : this(dataReaderCreator, logger, httpClientCreator, 100)
 {
 }