Esempio n. 1
0
        public async Task Delete(Guid id)
        {
            _dbContext.Messages.RemoveRange(_dbContext.Messages.Where(m => m.Id == id));
            _dbContext.SaveChanges();

            await _messagesHub.OnMessagesChanged();
        }
Esempio n. 2
0
        public void Start()
        {
            Smtp4devDbContext dbContent = dbContextFactory();

            foreach (Session unfinishedSession in dbContent.Sessions.Where(s => !s.EndDate.HasValue).ToArray())
            {
                unfinishedSession.EndDate = DateTime.Now;
            }
            dbContent.SaveChanges();

            TrimMessages(dbContent, serverOptions.Value);
            dbContent.SaveChanges();

            TrimSessions(dbContent, serverOptions.Value);
            dbContent.SaveChanges();
            messagesHub.OnMessagesChanged().Wait();
            sessionsHub.OnSessionsChanged().Wait();

            processingQueue         = new BlockingCollection <Action>();
            priorityProcessingQueue = new BlockingCollection <Action>();
            Task.Run(ProcessingTaskWork);

            smtpServer.Start();

            Console.WriteLine($"SMTP Server is listening on port {smtpServer.PortNumber}.\nKeeping last {serverOptions.Value.NumberOfMessagesToKeep} messages and {serverOptions.Value.NumberOfSessionsToKeep} sessions.");
        }
Esempio n. 3
0
        public async Task DeleteAll()
        {
            _dbContext.Messages.RemoveRange(_dbContext.Messages);
            _dbContext.SaveChanges();

            await _messagesHub.OnMessagesChanged();
        }
Esempio n. 4
0
        private async void OnMessageReceived(object sender, MessageEventArgs e)
        {
            var dbContent = dbContextFactory();

            using (var stream = e.Message.GetData())
            {
                var message =
                    await new MessageConverter().ConvertAsync(stream, e.Message.From, string.Join(", ", e.Message.To));
                dbContent.Messages.Add(message);
            }

            dbContent.SaveChanges();
            messagesHub.OnMessagesChanged().Wait();
        }
Esempio n. 5
0
        public void Start()
        {
            Smtp4devDbContext dbContent = dbContextFactory();

            foreach (Session unfinishedSession in dbContent.Sessions.Where(s => !s.EndDate.HasValue))
            {
                unfinishedSession.EndDate = DateTime.Now;
            }
            dbContent.SaveChanges();

            TrimMessages(dbContent);
            dbContent.SaveChanges();

            TrimSessions(dbContent);
            dbContent.SaveChanges();
            messagesHub.OnMessagesChanged().Wait();
            sessionsHub.OnSessionsChanged().Wait();

            smtpServer.Start();
            Console.WriteLine($"SMTP Server is listening on port {smtpServer.PortNumber}. Keeping last {serverOptions.Value.NumberOfMessagesToKeep} messages and {serverOptions.Value.NumberOfSessionsToKeep} sessions.");
        }