Commit a49fafdf authored by captainwong's avatar captainwong

print_data

parent 65f94cfe
...@@ -52,8 +52,9 @@ uint64_t gettid() { ...@@ -52,8 +52,9 @@ uint64_t gettid() {
int thread_count = 0; int thread_count = 0;
int session_count = 0; int session_count = 0;
int session_connected = 0; int session_connected = 0;
int timeout = 0;
int load_test = 0; int load_test = 0;
int timeout = 0;
int print_data = 0;
std::mutex mutex = {}; std::mutex mutex = {};
int64_t totalBytesRead = 0; int64_t totalBytesRead = 0;
...@@ -103,6 +104,9 @@ ThreadContextPtr* threadContexts = nullptr; ...@@ -103,6 +104,9 @@ ThreadContextPtr* threadContexts = nullptr;
void handle_ademco_msg(Session* session, bufferevent* bev) void handle_ademco_msg(Session* session, bufferevent* bev)
{ {
if (print_data) {
printf("session #%d recv:%s\n", session->id, session->packet.toString().data());
}
auto output = bufferevent_get_output(bev); auto output = bufferevent_get_output(bev);
switch (session->packet.id_.eid_) { switch (session->packet.id_.eid_) {
case AdemcoMsgId::id_ack: case AdemcoMsgId::id_ack:
...@@ -176,8 +180,7 @@ void timer_cb(evutil_socket_t, short, void* arg) ...@@ -176,8 +180,7 @@ void timer_cb(evutil_socket_t, short, void* arg)
bufferevent_disable(session->bev, EV_WRITE); bufferevent_disable(session->bev, EV_WRITE);
// SHUT_WR // SHUT_WR
shutdown(session->fd, 1); shutdown(session->fd, 1);
} else { } else {
printf("session #%d heartbeat\n", session->id);
session->timer = event_new(threadContexts[session->thread_id]->base, -1, 0, timer_cb, session); session->timer = event_new(threadContexts[session->thread_id]->base, -1, 0, timer_cb, session);
if (!session->timer) { if (!session->timer) {
fprintf(stderr, "create heartbeat_timer failed\n"); fprintf(stderr, "create heartbeat_timer failed\n");
...@@ -190,6 +193,10 @@ void timer_cb(evutil_socket_t, short, void* arg) ...@@ -190,6 +193,10 @@ void timer_cb(evutil_socket_t, short, void* arg)
char buf[1024]; char buf[1024];
session->lastTimePacketSize = session->packet.make_null(buf, sizeof(buf), session->nextSeq(), session->acct, session->ademco_id); session->lastTimePacketSize = session->packet.make_null(buf, sizeof(buf), session->nextSeq(), session->acct, session->ademco_id);
evbuffer_add(bufferevent_get_output(session->bev), buf, session->lastTimePacketSize); evbuffer_add(bufferevent_get_output(session->bev), buf, session->lastTimePacketSize);
if (print_data) {
printf("session #%d send:%s\n", session->id, session->packet.toString().data());
}
} }
} }
...@@ -199,7 +206,7 @@ void eventcb(struct bufferevent* bev, short events, void* user_data) ...@@ -199,7 +206,7 @@ void eventcb(struct bufferevent* bev, short events, void* user_data)
printf("eventcb on session #%d events=%04X\n", session->id, events); printf("eventcb on session #%d events=%04X\n", session->id, events);
if (events & BEV_EVENT_CONNECTED) { if (events & BEV_EVENT_CONNECTED) {
auto ctx = threadContexts[session->thread_id]; auto ctx = threadContexts[session->thread_id];
printf("session #%d connected fd=%d\n", session->id, session->fd); printf("session #%d acct=%s ademco_id=%06X connected fd=%d\n", session->id, session->acct.data(), session->ademco_id, session->fd);
{ {
std::lock_guard<std::mutex> lg(mutex); std::lock_guard<std::mutex> lg(mutex);
printf("live connections %d\n", ++session_connected); printf("live connections %d\n", ++session_connected);
...@@ -210,8 +217,14 @@ void eventcb(struct bufferevent* bev, short events, void* user_data) ...@@ -210,8 +217,14 @@ void eventcb(struct bufferevent* bev, short events, void* user_data)
char buf[1024]; char buf[1024];
session->lastTimePacketSize = session->packet.make_hb(buf, sizeof(buf), session->lastTimePacketSize = session->packet.make_hb(buf, sizeof(buf),
session->nextSeq(), session->acct, session->ademco_id, 0, session->status, 0); session->nextSeq(), session->acct, session->ademco_id, 0, session->status, 0);
if (print_data) {
printf("session #%d send:%s\n", session->id, session->packet.toString().data());
}
session->lastTimePacketSize += session->packet.make_hb(buf + session->lastTimePacketSize, sizeof(buf) - session->lastTimePacketSize, session->lastTimePacketSize += session->packet.make_hb(buf + session->lastTimePacketSize, sizeof(buf) - session->lastTimePacketSize,
session->nextSeq(), session->acct, session->ademco_id, 0, session->type, 0); session->nextSeq(), session->acct, session->ademco_id, 0, session->type, 0);
if (print_data) {
printf("session #%d send:%s\n", session->id, session->packet.toString().data());
}
evbuffer_add(bufferevent_get_output(bev), buf, session->lastTimePacketSize); evbuffer_add(bufferevent_get_output(bev), buf, session->lastTimePacketSize);
auto base = bufferevent_get_base(bev); auto base = bufferevent_get_base(bev);
...@@ -230,7 +243,7 @@ void eventcb(struct bufferevent* bev, short events, void* user_data) ...@@ -230,7 +243,7 @@ void eventcb(struct bufferevent* bev, short events, void* user_data)
return; return;
} else if (events & (BEV_EVENT_EOF)) { } else if (events & (BEV_EVENT_EOF)) {
printf("session #%d closed.\n", session->id); printf("session #%d fd=%d acct=%s ademco_id=%06X closed.\n", session->id, session->fd, session->acct.data(), session->ademco_id);
} else if (events & BEV_EVENT_ERROR) { } else if (events & BEV_EVENT_ERROR) {
printf("Got an error on session #%d: %s\n", printf("Got an error on session #%d: %s\n",
session->id, strerror(errno)); session->id, strerror(errno));
...@@ -331,7 +344,7 @@ int main(int argc, char** argv) ...@@ -331,7 +344,7 @@ int main(int argc, char** argv)
#endif #endif
if (argc < 7) { if (argc < 7) {
printf("Usage: %s ip port thread_count session_count load_test timeout\n" printf("Usage: %s ip port thread_count session_count load_test timeout [print_data]\n"
" load_test: 0 or 1:\n" " load_test: 0 or 1:\n"
" 0 to disable load test mode, timeout is client's heartbeat timeout in seconds\n" " 0 to disable load test mode, timeout is client's heartbeat timeout in seconds\n"
" 1 to enable load test mode, timeout is client's lifecycle timeout in seconds\n", argv[0]); " 1 to enable load test mode, timeout is client's lifecycle timeout in seconds\n", argv[0]);
...@@ -368,6 +381,9 @@ int main(int argc, char** argv) ...@@ -368,6 +381,9 @@ int main(int argc, char** argv)
puts("Invalid timeout"); puts("Invalid timeout");
return 1; return 1;
} }
if (argc > 7) {
print_data = atoi(argv[7]) == 1;
}
printf("using libevent %s\n", event_get_version()); printf("using libevent %s\n", event_get_version());
int session_per_thread = session_count / thread_count; int session_per_thread = session_count / thread_count;
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerCommandArguments>192.168.1.90 12345 1 20 0 30 </LocalDebuggerCommandArguments> <LocalDebuggerCommandArguments>192.168.1.90 12345 1 1 0 30 1</LocalDebuggerCommandArguments>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment