From 0e32d241f9ddd7e202879230585cb939dd3877b2 Mon Sep 17 00:00:00 2001
From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期二, 25 四月 2017 13:00:34 +0800
Subject: [PATCH] bug fix
---
FaceServer/make.sh | 2
FaceServer/main_face_daemon.cpp | 20 ++++--
FaceServer/ev_server.cpp | 6 +
FaceServer/face_daemon_proto.h | 10 ++-
FaceServer/ev_proto.h | 9 +++
FaceServer/ev_server.h | 2
FaceServer/proto_hton_ntoh.cpp | 73 ++++++++++++++++++++++++
7 files changed, 109 insertions(+), 13 deletions(-)
diff --git a/FaceServer/ev_proto.h b/FaceServer/ev_proto.h
index 2f1bed4..469ca52 100644
--- a/FaceServer/ev_proto.h
+++ b/FaceServer/ev_proto.h
@@ -56,6 +56,9 @@
int16_t cmd; // EVPCommand::EVPC
uint32_t size; // sizeof(EVPHeader)+sizeof(subcmd)
+ void hton();
+ void ntoh();
+
EVPHeader() : _padding1(0), proto(EVPProto::EVPP__FIRST), cmd(EVPCommand::EVPC__FIRST), size(8)
{}
};
@@ -63,12 +66,18 @@
struct EVP_Status
{
int16_t status;
+
+ void hton();
+ void ntoh();
};
struct EVP_VariableBuffer
{
int16_t type;
uint8_t buff[0];
+
+ void hton();
+ void ntoh();
};
//#todo
diff --git a/FaceServer/ev_server.cpp b/FaceServer/ev_server.cpp
index ce9ebb1..2fc41e4 100644
--- a/FaceServer/ev_server.cpp
+++ b/FaceServer/ev_server.cpp
@@ -132,6 +132,7 @@
}
evpHeader = (EVPHeader*)headerBuff;
+ evpHeader->ntoh();
// check header
if (evpHeader->proto <= EVPProto::EVPP__FIRST || evpHeader->proto >= EVPProto::EVPP__LAST ||
@@ -166,9 +167,10 @@
do
{
readSize = bufferevent_read(bufev, client->recvbuff + client->recvbuff_end, client->recvbuff_max - client->recvbuff_end);
- client->read_times++;
if (readSize == 0)
break;
+ else
+ client->read_times++;
client->recvbuff_end += readSize;
} while (readSize > 0);
@@ -352,7 +354,9 @@
EVPHeader* evpHeader = new (client.sendBuff) EVPHeader;
evpHeader->cmd = EVPCommand::EVPC_STATUS;
evpHeader->size = client.sendBuffSize;
+ evpHeader->hton();
EVP_Status* evpStatus = new (client.sendBuff + sizeof(EVPHeader)) EVP_Status;
evpStatus->status = status;
+ evpHeader->hton();
}
diff --git a/FaceServer/ev_server.h b/FaceServer/ev_server.h
index bb720b7..39639fe 100644
--- a/FaceServer/ev_server.h
+++ b/FaceServer/ev_server.h
@@ -9,7 +9,7 @@
#define SERVER_PORT 5432
#endif
#define REUSEADDR_ON 1
-#define CLIENT_BUFFER_MAX 100*1024 // 100KB
+#define CLIENT_BUFFER_MAX 1*1024*1024 // 1MB
#define CLIENT_READ_TIMES_MAX 100
#define CLIENT_MAX 100 // max count of clients connected //#todo not support
diff --git a/FaceServer/face_daemon_proto.h b/FaceServer/face_daemon_proto.h
index eb475b6..4bc6e34 100644
--- a/FaceServer/face_daemon_proto.h
+++ b/FaceServer/face_daemon_proto.h
@@ -31,8 +31,10 @@
int16_t height;
uint8_t buff[0];
- void hton();//#todo
+ void hton();
+ void ntoh();
};
+//sizeof(FDP_Image)=10
struct FDP_FaceDetectPB
{
@@ -41,7 +43,8 @@
FDP_FaceDetectPB(int32_t _db_id) : db_id(_db_id)
{}
- void hton();//#todo
+ void hton();
+ void ntoh();
};
struct FDP_FaceDetectResult
@@ -52,7 +55,8 @@
FDP_FaceDetectResult(int32_t _db_id, int32_t _st_id) : db_id(_db_id), st_id(_st_id)
{}
- void hton();//#todo
+ void hton();
+ void ntoh();
};
#pragma pack()
diff --git a/FaceServer/main_face_daemon.cpp b/FaceServer/main_face_daemon.cpp
index 4ddf3e7..6cfc437 100644
--- a/FaceServer/main_face_daemon.cpp
+++ b/FaceServer/main_face_daemon.cpp
@@ -107,6 +107,7 @@
{
EVPHeader* evpHeader = (EVPHeader*)client.recvBuff;
FDP_Image* fdpImage = (FDP_Image*)(client.recvBuff + sizeof(EVPHeader));
+ fdpImage->ntoh();
STFaceImage stfaceImg;
stfaceImg.db_id = fdpImage->db_id;
@@ -116,13 +117,16 @@
stfaceImg.size = evpHeader->size - sizeof(EVPHeader) - sizeof(FDP_Image);
stfaceImg.buff = fdpImage->buff;
- //char imgfn[100 * 1024];
- //static int i = 0;
- //sprintf(imgfn, "IMG_%d_%d_w%d_h%d.rgb565", stfaceImg.db_id, ++i, stfaceImg.width, stfaceImg.height);
- //FILE * pFile = fopen(imgfn, "wb");
- //fwrite(stfaceImg.buff, sizeof(char), stfaceImg.size, pFile);
- //fclose(pFile);
- //pFile = nullptr;
+ LOGP(DEBUG, "stfaceImg db_id=%d, mb_type=%d, width=%d, height=%d, size=%d",
+ (int)stfaceImg.db_id, (int)stfaceImg.mb_type, (int)stfaceImg.width, (int)stfaceImg.height, (int)stfaceImg.size);
+
+ char imgfn[100 * 1024];
+ static int i = 0;
+ sprintf(imgfn, "IMG_%d_%d_w%d_h%d.rgb565", stfaceImg.db_id, ++i, stfaceImg.width, stfaceImg.height);
+ FILE * pFile = fopen(imgfn, "wb");
+ fwrite(stfaceImg.buff, sizeof(char), stfaceImg.size, pFile);
+ fclose(pFile);
+ pFile = nullptr;
fdr_vec_t result;
FDP_FaceDetectResult fdrResult = g_STFaceCache.add(stfaceImg);
@@ -162,7 +166,7 @@
bool ev_dispatcher_proto_rawbin(EVClientStub& client)
{
- LOG_DEBUG << "ev_dispatcher_proto_pb" << LOG_ENDL;
+ LOG_DEBUG << "ev_dispatcher_proto_rawbin" << LOG_ENDL;
EVPHeader* evpHeader = (EVPHeader*)client.recvBuff;
if (evpHeader->size != client.recvBuffSize)
diff --git a/FaceServer/make.sh b/FaceServer/make.sh
index af7de03..b0d607e 100644
--- a/FaceServer/make.sh
+++ b/FaceServer/make.sh
@@ -26,6 +26,7 @@
g++ $PIPELINE_BASE/Logger/src/logger.cc $CFLAGS $CPPFLAGS
g++ ev_server.cpp -DUSER_DEFINE_EVCLIENT_PROC $CFLAGS $CPPFLAGS
+g++ proto_hton_ntoh.cpp $CFLAGS $CPPFLAGS
g++ $VISITFACE_BASE/PbFaceList.pb.cc $CFLAGS $CPPFLAGS
g++ main_face_daemon.cpp $CFLAGS $CPPFLAGS
g++ sample_face_search.cpp $CFLAGS $CPPFLAGS
@@ -38,6 +39,7 @@
g++ -g -std=c++11 \
logger.o \
ev_server.o \
+ proto_hton_ntoh.o \
PbFaceList.pb.o \
main_face_daemon.o \
sample_face_search.o \
diff --git a/FaceServer/proto_hton_ntoh.cpp b/FaceServer/proto_hton_ntoh.cpp
new file mode 100644
index 0000000..02ce433
--- /dev/null
+++ b/FaceServer/proto_hton_ntoh.cpp
@@ -0,0 +1,73 @@
+#include "ev_proto.h"
+#include "face_daemon_proto.h"
+#include <netinet/in.h>
+
+void EVPHeader::hton()
+{
+ cmd = htons(cmd);
+ size = htonl(size);
+}
+
+void EVPHeader::ntoh()
+{
+ cmd = ntohs(cmd);
+ size = ntohl(size);
+}
+
+void EVP_Status::hton()
+{
+ status = htons(status);
+}
+
+void EVP_Status::ntoh()
+{
+ status = ntohs(status);
+}
+
+void EVP_VariableBuffer::hton()
+{
+ type = htons(type);
+}
+
+void EVP_VariableBuffer::ntoh()
+{
+ type = ntohs(type);
+}
+
+void FDP_Image::hton()
+{
+ db_id = htonl(db_id);
+ mb_type = htons(mb_type);
+ width = htons(width);
+ height = htons(height);
+}
+
+void FDP_Image::ntoh()
+{
+ db_id = ntohl(db_id);
+ mb_type = ntohs(mb_type);
+ width = ntohs(width);
+ height = ntohs(height);
+}
+
+void FDP_FaceDetectPB::hton()
+{
+ db_id = htonl(db_id);
+}
+
+void FDP_FaceDetectPB::ntoh()
+{
+ db_id = ntohl(db_id);
+}
+
+void FDP_FaceDetectResult::hton()
+{
+ db_id = htonl(db_id);
+ st_id = htonl(st_id);
+}
+
+void FDP_FaceDetectResult::ntoh()
+{
+ db_id = ntohl(db_id);
+ st_id = ntohl(st_id);
+}
--
Gitblit v1.8.0