|
Mailer 1.0.5
C++ daemon for sending order emails via SMTP
|
Public Member Functions | |
| Daemon () | |
| ~Daemon () | |
| Деструктор. Освобождает INI-файл, логгирует остановку, отключается от PG. | |
| void | Stop () |
| Останавливает основной цикл демона. | |
| void | Run () |
Private Member Functions | |
| int | sendOrders (std::string tableName) |
| void | ConnectPg () |
| void | DisconnectPg () |
| Отключается от PostgreSQL. | |
| void | StartTransaction () |
| Создаёт новую транзакцию PostgreSQL. | |
| void | AbortTransaction () |
| Откатывает текущую транзакцию. | |
| void | CommitTransaction () |
| Фиксирует текущую транзакцию. | |
| void | daemonSleep () |
Private Attributes | |
| std::string | name = "Mailer" |
| std::string | version = "Dev" |
| mINI::INIFile * | iniFile |
| INI-файл конфигурации. | |
| mINI::INIStructure | ini |
| Структура INI-данных в памяти. | |
| std::string | connectionStr = "" |
| Строка подключения к PostgreSQL. | |
| pqxx::connection * | connection = NULL |
| Соединение с PostgreSQL. | |
| pqxx::work * | trx = NULL |
| Текущая транзакция. | |
| Products::ProductsLog * | productsLog = NULL |
| Логирование старта/стопа в БД. | |
| volatile std::atomic< bool > | running = false |
| Флаг работы демона. | |
| int | sleepPeriod = 60 |
| Пауза между итерациями (сек). | |
Главный класс демона.
Управляет основным циклом: читает INI-конфиг, подключается к PostgreSQL, проверяет таблицы заказов и отправляет email через SMTP.
Definition at line 42 of file mailer.cpp.
|
inline |
Конструктор.
Инициализирует логгер, читает INI-файл (или генерирует шаблон), регистрирует старт в таблице products_log.
Definition at line 48 of file mailer.cpp.
References getApplicationDirectory(), ini, iniFile, name, productsLog, and version.
|
inline |
Деструктор. Освобождает INI-файл, логгирует остановку, отключается от PG.
Definition at line 104 of file mailer.cpp.
References DisconnectPg(), iniFile, and productsLog.
|
inlineprivate |
Откатывает текущую транзакцию.
Definition at line 326 of file mailer.cpp.
References trx.
Referenced by sendOrders().
|
inlineprivate |
Фиксирует текущую транзакцию.
Definition at line 334 of file mailer.cpp.
References trx.
Referenced by sendOrders().
|
inlineprivate |
Подключается к PostgreSQL.
Формирует строку подключения из секции [Postgres] INI-файла. Если подключение уже установлено и параметры не изменились — пропускает.
| std::runtime_error | при ошибке подключения. |
Definition at line 286 of file mailer.cpp.
References connection, connectionStr, and ini.
Referenced by Run().
|
inlineprivate |
Пауза между итерациями цикла.
sleepPeriod читается из секции [Mailer] INI-файла на каждом вызове, поэтому изменение конфига применяется без перезапуска.
Definition at line 345 of file mailer.cpp.
References ini, and sleepPeriod.
Referenced by Run().
|
inlineprivate |
Отключается от PostgreSQL.
Definition at line 311 of file mailer.cpp.
References connection.
Referenced by ~Daemon().
|
inline |
Основной цикл демона.
На каждой итерации:
Definition at line 134 of file mailer.cpp.
References ConnectPg(), daemonSleep(), ini, iniFile, return_to_bottom, running, sendOrders(), and SUCCESS.
Referenced by main().
|
inlineprivate |
Проверяет таблицу заказов и отправляет email по каждому неотправленному.
SELECT unsent записей из tableName, группирует по ключу, формирует HTML-письмо с таблицей товаров, отправляет через EmailSender. При успехе отмечает sent=true.
| [in] | tableName | Имя таблицы ("tab_siteOrders" или "tab_mobileOrders"). |
Definition at line 201 of file mailer.cpp.
References AbortTransaction(), EmailSender::addCcEmailAddr(), EmailSender::addRecvEmailAddr(), CommitTransaction(), FAILURE, ini, EmailSender::send(), EmailSender::setEmailContent(), StartTransaction(), SUCCESS, and trx.
Referenced by Run().
|
inlineprivate |
Создаёт новую транзакцию PostgreSQL.
Definition at line 320 of file mailer.cpp.
References connection, and trx.
Referenced by sendOrders().
|
inline |
Останавливает основной цикл демона.
Definition at line 124 of file mailer.cpp.
References running.
Referenced by main().
|
private |
Соединение с PostgreSQL.
Definition at line 185 of file mailer.cpp.
Referenced by ConnectPg(), DisconnectPg(), and StartTransaction().
|
private |
Строка подключения к PostgreSQL.
Definition at line 184 of file mailer.cpp.
Referenced by ConnectPg().
|
private |
Структура INI-данных в памяти.
Definition at line 182 of file mailer.cpp.
Referenced by ConnectPg(), Daemon(), daemonSleep(), Run(), and sendOrders().
|
private |
INI-файл конфигурации.
Definition at line 181 of file mailer.cpp.
|
private |
Definition at line 173 of file mailer.cpp.
Referenced by Daemon().
|
private |
Логирование старта/стопа в БД.
Definition at line 188 of file mailer.cpp.
|
private |
|
private |
Пауза между итерациями (сек).
Definition at line 191 of file mailer.cpp.
Referenced by daemonSleep().
|
private |
Текущая транзакция.
Definition at line 186 of file mailer.cpp.
Referenced by AbortTransaction(), CommitTransaction(), sendOrders(), and StartTransaction().
|
private |
Definition at line 178 of file mailer.cpp.
Referenced by Daemon().