فهرست منبع

优化了一下服务端的稳定性

zhangyang 5 سال پیش
والد
کامیت
eef77e69c8

+ 5 - 5
lewaimai_pos_windows_server/helper/CAliyunMNS.cpp

@@ -19,11 +19,11 @@ CAliyunMNS::CAliyunMNS(std::string queueName)
     {
         queue = m_mnsClient->getQueueRef(queueName.c_str());
 
-        LOG_ERROR("queueName:" << queueName.c_str());
-        LOG_ERROR("endpoint:" << endpoint.c_str());
-        LOG_ERROR("accessId:" << accessId.c_str());
-        LOG_ERROR("accessKey:" << accessKey.c_str());
-        LOG_ERROR("stsToken:" << stsToken.c_str());
+        //LOG_ERROR("queueName:" << queueName.c_str());
+        //LOG_ERROR("endpoint:" << endpoint.c_str());
+        //LOG_ERROR("accessId:" << accessId.c_str());
+        //LOG_ERROR("accessKey:" << accessKey.c_str());
+        //LOG_ERROR("stsToken:" << stsToken.c_str());
 
         is_init = true;
     }

+ 1 - 1
lewaimai_pos_windows_server/helper/CConfigReader.cpp

@@ -19,7 +19,7 @@ void CConfigReader::ReadConfigFile()
 {
 	ifstream configFile;
 
-	string path = "../conf/lewaimai_pos_windows_server.conf";
+	string path = "/usr/local/lewaimai_pos_windows_server/conf/lewaimai_pos_windows_server.conf";
 
 	configFile.open(path.c_str());
 	string str_line;

+ 32 - 3
lewaimai_pos_windows_server/network/CClientSession.cpp

@@ -12,6 +12,8 @@ CClientSession::~CClientSession()
 
 void CClientSession::start()
 {
+	m_pos_message.clear();
+
 	boost::asio::async_read(socket_, boost::asio::buffer(&m_pos_message, sizeof(PosMessage)),
 		boost::bind(&CClientSession::handle_read, this,
 			boost::asio::placeholders::error,
@@ -90,7 +92,24 @@ void CClientSession::handle_read(const boost::system::error_code& error,
         document.Parse(msg.c_str());
         if(!document.IsObject())
         {
-            LOG_INFO("message 非法!");
+            LOG_ERROR("message 非法! msg:" << msg.c_str());
+			LOG_ERROR("msg length:" << m_pos_message.m_length);
+			LOG_ERROR("ip:" << socket_.remote_endpoint().address().to_string());
+
+			//处理完了,重新读取
+			m_pos_message.clear();
+
+			boost::asio::async_read(socket_, boost::asio::buffer(&m_pos_message, sizeof(PosMessage)),
+				boost::bind(&CClientSession::handle_read, this,
+					boost::asio::placeholders::error,
+					boost::asio::placeholders::bytes_transferred));
+
+/*
+			socket_.async_read_some(boost::asio::buffer(&m_pos_message, sizeof(PosMessage)),
+				boost::bind(&CClientSession::handle_read, this,
+					boost::asio::placeholders::error,
+					boost::asio::placeholders::bytes_transferred));*/
+
             return;
         }
 
@@ -103,7 +122,7 @@ void CClientSession::handle_read(const boost::system::error_code& error,
 
 		if (is_login == "1")
 		{
-			LOG_INFO("get client login message:" << msg.c_str());
+			//LOG_INFO("get client login message:" << msg.c_str());
 
 			//获取到用户名了,进行绑定
 			m_server->BindUsername(username, this);
@@ -113,14 +132,23 @@ void CClientSession::handle_read(const boost::system::error_code& error,
 		}
 
         //处理完了,重新读取
+		m_pos_message.clear();
+
+		boost::asio::async_read(socket_, boost::asio::buffer(&m_pos_message, sizeof(PosMessage)),
+			boost::bind(&CClientSession::handle_read, this,
+				boost::asio::placeholders::error,
+				boost::asio::placeholders::bytes_transferred));
+
+/*
         socket_.async_read_some(boost::asio::buffer(&m_pos_message, sizeof(PosMessage)),
                                 boost::bind(&CClientSession::handle_read, this,
                                             boost::asio::placeholders::error,
-                                            boost::asio::placeholders::bytes_transferred));
+                                            boost::asio::placeholders::bytes_transferred));*/
     }
     else
     {
 		std::string err = error.message();
+		//LOG_ERROR("handle_read error, err message:" << err.c_str());
 
 		if (socket_.is_open())
 		{
@@ -140,6 +168,7 @@ void CClientSession::handle_read(const boost::system::error_code& error,
 		else
 		{
 			//这个是服务端断开了链接
+			//LOG_ERROR("服务端断开了链接");
 			delete this;
 		}
     }

+ 10 - 10
lewaimai_pos_windows_server/network/CServer.cpp

@@ -20,6 +20,8 @@ CServer::~CServer()
 
 void CServer::Init()
 {
+	LOG_ERROR("start Init()");
+
 	//初始化数据库
 	InitSqlLite();
 
@@ -31,7 +33,6 @@ void CServer::Init()
 	start_accept();
 
 	int n_cpu = CSystem::get_CPU_core_num();
-	LOG_INFO("cpu num:" << n_cpu);
 
 	//开始接受和处理mns的消息
 	for (int i = 0; i < n_cpu * 2; i++)
@@ -82,20 +83,20 @@ void CServer::InitSqlLite()
 	m_rc = sqlite3_open(s_path.c_str(), &m_db);
 #else
 	std::string db_path = CSystem::getAbsopath() + "../db/pos.db";
-	LOG_INFO("db path:" << db_path.c_str());
+	//LOG_INFO("db path:" << db_path.c_str());
 
 	m_rc = sqlite3_open(db_path.c_str(), &m_db);
 #endif
 
 	if (m_rc)
 	{
-		LOG_INFO("Can't open database: " << sqlite3_errmsg(m_db));
+		LOG_ERROR("Can't open database: " << sqlite3_errmsg(m_db));
 		return;
 	}
 
 	else
 	{
-		LOG_INFO("Opened database successfully");
+		//LOG_INFO("Opened database successfully");
 	}
 
 	//初始化数据表
@@ -337,7 +338,7 @@ void CServer::ReceiveMNSMessage()
         return;
     }
 
-	LOG_INFO("Init AliyunMNS success!");
+	//LOG_INFO("Init AliyunMNS success!");
 
     while(true)
     {
@@ -348,14 +349,13 @@ void CServer::ReceiveMNSMessage()
             continue;
         }
 
-        //LOG_INFO("get new message:" << message.c_str());
-
         //获取到了新的消息,开始进行处理
         rapidjson::Document document;
         document.Parse(message.c_str());
         if(!document.IsObject())
         {
-            LOG_INFO("message 非法!");
+            LOG_ERROR("message 非法!");
+			LOG_ERROR("get new message:" << message.c_str());
             continue;
         }
 
@@ -389,7 +389,7 @@ void CServer::ReceiveMNSMessage()
 		if (time(NULL) > atoi(timestamp.c_str()) + atoi(use_time.c_str()))
 		{
 			//消息过了有效期,直接丢弃
-			LOG_INFO("message due date!");
+			//LOG_INFO("message due date!");
 			continue;
 		}		
 
@@ -466,7 +466,7 @@ void CServer::SendMessageToClient()
 			}
 			else
 			{
-				LOG_INFO("send to client success, username:" << username.c_str());
+				//LOG_INFO("send to client success, username:" << username.c_str());
 			}
 		}
 	}	

+ 5 - 0
lewaimai_pos_windows_server/network/PosMessage.h

@@ -7,4 +7,9 @@ public:
 	char data[max_length];
 
 	int m_length;
+
+	void clear()
+	{
+		memset(this, 0, sizeof(PosMessage));
+	}
 };