-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocess.cpp
84 lines (52 loc) · 1.37 KB
/
process.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma once
#include "process.h"
amxProcess *gProcess;
extern logprintf_t logprintf;
extern std::queue<mailData> amxThreadQueue;
extern std::queue<mailData> amxProcessTickQueue;
amxProcess::amxProcess()
{
this->Active = true;
boost::thread mail(boost::bind(&amxProcess::Thread));
}
amxProcess::~amxProcess()
{
this->Active = false;
}
void amxProcess::Thread()
{
boost::mutex localMutex;
do
{
while(!amxThreadQueue.empty())
{
mailData data;
jwsmtp::mailer mail;
boost::mutex::scoped_lock lock(localMutex);
data = amxThreadQueue.front();
amxThreadQueue.pop();
lock.unlock();
mail.addrecipient(data.to);
mail.setsubject(data.subject);
mail.setmessage(data.message);
mail.setsender(gProcess->Config.find("from")->second);
mail.setsendername(gProcess->Config.find("sendername")->second);
mail.setserver(gProcess->Config.find("host")->second);
mail.username(gProcess->Config.find("user")->second);
mail.password(gProcess->Config.find("password")->second);
if(data.type == 1)
{
mail.setmessage(" ");
mail.setmessageHTML(data.message);
}
mail.send();
data.error.assign(mail.response());
data.errorCode = atoi(data.error.c_str());
lock.lock();
amxProcessTickQueue.push(data);
lock.unlock();
}
boost::this_thread::sleep(boost::posix_time::milliseconds(1));
}
while(gProcess->Active);
}