Quellcode durchsuchen

#IQRV #comment [Merge]合并内容再合并

gifur vor 3 Jahren
Ursprung
Commit
f9cbbb731e
35 geänderte Dateien mit 1740 neuen und 1636 gelöschten Zeilen
  1. 208 208
      Module/mod_chromium/BufferOperation.h
  2. 8 8
      Module/mod_chromium/CMethodInterface.h
  3. 6 6
      Module/mod_chromium/CMethodParam.h
  4. 199 199
      Module/mod_chromium/CSocketClient.cpp
  5. 134 132
      Module/mod_chromium/CStructureInterpreter.cpp
  6. 23 23
      Module/mod_chromium/CStructureInterpreter.h
  7. 5 5
      Module/mod_chromium/CTransStruct.h
  8. 15 15
      Module/mod_chromium/CWSCodec.cpp
  9. 76 76
      Module/mod_chromium/CWSCodec.h
  10. 8 8
      Module/mod_chromium/CWebsocketServer.cpp
  11. 60 60
      Module/mod_chromium/CWebsocketServer.h
  12. 441 441
      Module/mod_chromium/EntitySessionManager.cpp
  13. 66 66
      Module/mod_chromium/EntitySessionManager.h
  14. 8 8
      Module/mod_chromium/ISocketCallback.h
  15. 1 1
      Module/mod_chromium/MessageType.h
  16. 91 91
      Module/mod_chromium/baseEx.cpp
  17. 50 47
      Module/mod_chromium/mod_chromium.cpp
  18. 3 3
      Module/mod_chromium/mod_chromium.h
  19. 55 55
      Module/mod_chromium/portCheck/portCheck.cpp
  20. 1 1
      Module/mod_chromium/portCheck/portCheck.h
  21. 1 1
      Module/mod_chromium/processControl.cpp
  22. 39 39
      Module/mod_chromium/url_encoder.h
  23. 63 63
      Module/mod_chromium/uuid4.cpp
  24. 3 3
      Module/mod_chromium/uuid4.h
  25. 1 0
      addin/res/ManagerDesktop/Include/layer.js
  26. 19 0
      addin/res/ManagerDesktop/css/ininPsd.css
  27. 40 10
      addin/res/ManagerDesktop/errPage.html
  28. 2 1
      addin/res/ManagerDesktop/initPassword.html
  29. 4 1
      addin/res/ManagerDesktop/js/entityMessage.js
  30. 31 21
      addin/res/ManagerDesktop/js/entityService.js
  31. 1 1
      addin/res/ManagerDesktop/js/errPage.js
  32. 6 2
      addin/res/ManagerDesktop/js/eventEmitter.js
  33. 63 36
      addin/res/ManagerDesktop/js/initPsd.js
  34. 6 2
      addin/res/ManagerDesktop/js/innerEventEmitter.js
  35. 3 3
      addin/res/ManagerDesktop/js/webSocketBase.js

+ 208 - 208
Module/mod_chromium/BufferOperation.h

@@ -5,7 +5,7 @@
 #include "AutoArray.h"
 #include "Blob.h"
 
-namespace Chromium{
+namespace Chromium {
 
 #define IOBUF_T_I8	    0
 #define IOBUF_T_I4	    1
@@ -16,29 +16,29 @@ namespace Chromium{
 #define IOBUF_T_WSTR    6
 #define IOBUF_T_7BIT	7
 
-/////////////////// Read Buf Start ///////////////////////
-static void buffer_read_buf(const char *iobuf, char *buf, int n, int* rpos)
-{
-//	assert(content_size(iobuf) >= n);
-	memcpy(buf, iobuf + *rpos, n);
-	*rpos += n;
-}
+	/////////////////// Read Buf Start ///////////////////////
+	static void buffer_read_buf(const char* iobuf, char* buf, int n, int* rpos)
+	{
+		//	assert(content_size(iobuf) >= n);
+		memcpy(buf, iobuf + *rpos, n);
+		*rpos += n;
+	}
 
-static void buffer_read_7bit_int(const char *iobuf, int *v, int* rpos)
-{
-	int count = 0;
-	int shift = 0;
-	unsigned char b;
-	do {
-		if (shift == 5*7) // corrupted stream
-			assert(0);
-		b = iobuf[*rpos];
-		*rpos += 1;
-		count |= (b & 0x7F) << shift;
-		shift += 7;
-	} while (b & 0x80);		// most left bit is flag
-	*v = count;
-}
+	static void buffer_read_7bit_int(const char* iobuf, int* v, int* rpos)
+	{
+		int count = 0;
+		int shift = 0;
+		unsigned char b;
+		do {
+			if (shift == 5 * 7) // corrupted stream
+				assert(0);
+			b = iobuf[*rpos];
+			*rpos += 1;
+			count |= (b & 0x7F) << shift;
+			shift += 7;
+		} while (b & 0x80);		// most left bit is flag
+		*v = count;
+	}
 
 	static void buffer_read(const char* iobuf, int t, void* v, int* n, int* rpos) {
 		int len = 0;
@@ -94,10 +94,10 @@ static void buffer_read_7bit_int(const char *iobuf, int *v, int* rpos)
 				if (!n || len < *n) {
 					buffer_read_buf(iobuf, (char*)v, len, rpos);
 #if (defined _WIN32 || defined _WIN64)
-				* ((char*)v + len) = 0; // wchar termination char is 2 byte
-				*((char*)v + len + 1) = 0;
+					* ((char*)v + len) = 0; // wchar termination char is 2 byte
+					*((char*)v + len + 1) = 0;
 #else
-                memset((void*)((char*)v + len), 0, sizeof(wchar_t));
+					memset((void*)((char*)v + len), 0, sizeof(wchar_t));
 #endif
 					if (n)
 						*n = len;
@@ -131,38 +131,38 @@ static void buffer_read_7bit_int(const char *iobuf, int *v, int* rpos)
 		}
 	}
 
-void buffer_format_readv(const char *iobuf, int* rpos, const char *fmt, va_list arg)
-{
-	if (fmt) {
-		const char *p = fmt;
-		while (*p) {
-			switch (*p) {
-			case '8':
-				buffer_read(iobuf, IOBUF_T_I8, va_arg(arg, void*), NULL, rpos);
-				break;
-			case '7':  // 7bit int code
-				buffer_read(iobuf, IOBUF_T_7BIT, va_arg(arg, void*), NULL, rpos);
-				break;
-			case '4':
-				buffer_read(iobuf, IOBUF_T_I4, va_arg(arg, void*), 0, rpos);
-				break;
-			case '2':
-				buffer_read(iobuf, IOBUF_T_I2, va_arg(arg, void*), 0, rpos);
-				break;
-			case '1':
-				buffer_read(iobuf, IOBUF_T_I1, va_arg(arg, void*), 0, rpos);
-				break;
-			case 's':case 'S':
+	void buffer_format_readv(const char* iobuf, int* rpos, const char* fmt, va_list arg)
+	{
+		if (fmt) {
+			const char* p = fmt;
+			while (*p) {
+				switch (*p) {
+				case '8':
+					buffer_read(iobuf, IOBUF_T_I8, va_arg(arg, void*), NULL, rpos);
+					break;
+				case '7':  // 7bit int code
+					buffer_read(iobuf, IOBUF_T_7BIT, va_arg(arg, void*), NULL, rpos);
+					break;
+				case '4':
+					buffer_read(iobuf, IOBUF_T_I4, va_arg(arg, void*), 0, rpos);
+					break;
+				case '2':
+					buffer_read(iobuf, IOBUF_T_I2, va_arg(arg, void*), 0, rpos);
+					break;
+				case '1':
+					buffer_read(iobuf, IOBUF_T_I1, va_arg(arg, void*), 0, rpos);
+					break;
+				case 's':case 'S':
 				{
-					char **pstr = va_arg(arg, char**);
+					char** pstr = va_arg(arg, char**);
 					int slen;
 					buffer_read(iobuf, IOBUF_T_STR, NULL, &slen, rpos);
 					//*pstr = (char*)malloc(slen+1);
-					*pstr = new char[slen+1];
+					*pstr = new char[slen + 1];
 					buffer_read(iobuf, IOBUF_T_STR, *pstr, 0, rpos);
 				}
 				break;
-			case 'w': case 'W':
+				case 'w': case 'W':
 				{
 					wchar_t** pstr = va_arg(arg, wchar_t**);
 					int slen;
@@ -170,93 +170,93 @@ void buffer_format_readv(const char *iobuf, int* rpos, const char *fmt, va_list
 #if (defined _WIN32 || defined _WIN64)
 					* pstr = new wchar_t[slen + 2];
 #else
-					*pstr = new wchar_t[slen+1];
+					* pstr = new wchar_t[slen + 1];
 #endif
 
 					buffer_read(iobuf, IOBUF_T_WSTR, *pstr, 0, rpos);
 				}
 				break;
-			case 'b':case 'B':
+				case 'b':case 'B':
 				{
-					void *buf = va_arg(arg, void*);
+					void* buf = va_arg(arg, void*);
 					int size = va_arg(arg, int);
 					buffer_read(iobuf, IOBUF_T_BUF, buf, &size, rpos);
 				}
 				break;
-			default:
-				assert(0);
-				break;
+				default:
+					assert(0);
+					break;
+				}
+				p++;
 			}
-			p++;
 		}
 	}
-}
-
-class BufferFormatRead{
-public:
-	static void buffer_format_read(const char *iobuf, int* rpos, const char *fmt, ...)
-	{
-		va_list arg;
-		va_start(arg, fmt);
-		buffer_format_readv(iobuf, rpos, fmt, arg);
-		va_end(arg);
-	}
-};
 
+	class BufferFormatRead {
+	public:
+		static void buffer_format_read(const char* iobuf, int* rpos, const char* fmt, ...)
+		{
+			va_list arg;
+			va_start(arg, fmt);
+			buffer_format_readv(iobuf, rpos, fmt, arg);
+			va_end(arg);
+		}
+	};
 
-template<class T>
-static inline void ReadT(const char *iobuf, T &t, int* rpos){
-	int size = sizeof(t);
-	buffer_read(iobuf, IOBUF_T_BUF, &t, &size, rpos);
-}
 
-static inline void ReadT(const char *iobuf, void* data, int &len, int* rpos){
-	buffer_read(iobuf, IOBUF_T_BUF, data, &len, rpos);
-}
+	template<class T>
+	static inline void ReadT(const char* iobuf, T& t, int* rpos) {
+		int size = sizeof(t);
+		buffer_read(iobuf, IOBUF_T_BUF, &t, &size, rpos);
+	}
 
-template<class T>
-static inline void ReadArrayT(const char *iobuf, CAutoArray<T> &t, int* rpos){
-	int nArrayNum(0);
-	buffer_read(iobuf, IOBUF_T_I4, &nArrayNum, NULL, rpos);
+	static inline void ReadT(const char* iobuf, void* data, int& len, int* rpos) {
+		buffer_read(iobuf, IOBUF_T_BUF, data, &len, rpos);
+	}
 
-	if (nArrayNum >0)
-	{
-		t.Init(nArrayNum);
+	template<class T>
+	static inline void ReadArrayT(const char* iobuf, CAutoArray<T>& t, int* rpos) {
+		int nArrayNum(0);
+		buffer_read(iobuf, IOBUF_T_I4, &nArrayNum, NULL, rpos);
 
-		for(int i=0; i<nArrayNum; i++)
+		if (nArrayNum > 0)
 		{
-			ReadT(iobuf, t[i], rpos);
+			t.Init(nArrayNum);
+
+			for (int i = 0; i < nArrayNum; i++)
+			{
+				ReadT(iobuf, t[i], rpos);
+			}
 		}
 	}
-}
 
-static inline void ReadT(const char *iobuf, CSimpleStringA &t, int* rpos){
+	static inline void ReadT(const char* iobuf, CSimpleStringA& t, int* rpos) {
 #if (defined _WIN32 || defined _WIN64)
-	wchar_t* wt = NULL;
+		wchar_t* wt = NULL;
 #else
-	SPCHAR *wt = NULL;
+		SPCHAR* wt = NULL;
 #endif
-	BufferFormatRead::buffer_format_read(iobuf, rpos, "w", &wt); // string is unicode so we can compatible with silverlight
-	CSimpleStringW wStr = wt;
-	free(wt);
-	t = CSimpleStringW2A(wStr);
-}
+		BufferFormatRead::buffer_format_read(iobuf, rpos, "w", &wt); // string is unicode so we can compatible with silverlight
+		CSimpleStringW wStr = wt;
+		free(wt);
+		t = CSimpleStringW2A(wStr);
+	}
 
-static inline void ReadT(const char *iobuf, CSimpleStringW &t, int* rpos){
+	static inline void ReadT(const char* iobuf, CSimpleStringW& t, int* rpos) {
 #if (defined _WIN32 || defined _WIN64)
-	wchar_t* wt = NULL;
+		wchar_t* wt = NULL;
 #else
-	SPCHAR* wt = NULL;
+		SPCHAR* wt = NULL;
 #endif
-	BufferFormatRead::buffer_format_read(iobuf, rpos, "w", &wt); // string is unicode so we can compatible with silverlight
-	t = wt;
-	free(wt);
-}
+		BufferFormatRead::buffer_format_read(iobuf, rpos, "w", &wt); // string is unicode so we can compatible with silverlight
+		t = wt;
+		free(wt);
+	}
 
-/////////////////// Read Buf End///////////////////////
+	/////////////////// Read Buf End///////////////////////
 
 
-////////////////// Write Buffer Start /////////////////////
+	////////////////// Write Buffer Start /////////////////////
 
 	static void expand(char* iobuf, int head_capacity, int newcapacity,
 		int* capacity, int* hcapacity, int* rpos, int* wpos)
@@ -309,37 +309,37 @@ static inline void ReadT(const char *iobuf, CSimpleStringW &t, int* rpos){
 		}
 	}
 
-static void buffer_write_buf(char *iobuf, const char *buf, int n, int* wpos, int* capacity)
-{
-	int rpos = 0;
-	int hcapacity = 0;
-	if ( n+(*wpos) > *capacity )
-		expand(iobuf, -1, n + *wpos, capacity, &hcapacity, &rpos, wpos);
-	memcpy(iobuf+*wpos, buf, n);
-	*wpos += n;
-}
+	static void buffer_write_buf(char* iobuf, const char* buf, int n, int* wpos, int* capacity)
+	{
+		int rpos = 0;
+		int hcapacity = 0;
+		if (n + (*wpos) > *capacity)
+			expand(iobuf, -1, n + *wpos, capacity, &hcapacity, &rpos, wpos);
+		memcpy(iobuf + *wpos, buf, n);
+		*wpos += n;
+	}
 
-static int write_7bit_int(unsigned char buf[8], unsigned int v)
-{
-	int i = 0;
-	while (v >= 0x80) {
-		buf[i++] = (unsigned char)(v | 0x80);		// set most left bit == 1 
-		v >>= 7;
+	static int write_7bit_int(unsigned char buf[8], unsigned int v)
+	{
+		int i = 0;
+		while (v >= 0x80) {
+			buf[i++] = (unsigned char)(v | 0x80);		// set most left bit == 1 
+			v >>= 7;
+		}
+		buf[i++] = (unsigned char)v;
+		return i;
 	}
-	buf[i++] = (unsigned char)v;
-	return i;
-}
 
-static void buffer_write_7bit_int(char *iobuf, unsigned int v, int* wpos, int* capacity)
-{
-	char buf[8];
-	int n = write_7bit_int((unsigned char*)buf, v);
-	buffer_write_buf(iobuf, buf, n, wpos, capacity);
-}
+	static void buffer_write_7bit_int(char* iobuf, unsigned int v, int* wpos, int* capacity)
+	{
+		char buf[8];
+		int n = write_7bit_int((unsigned char*)buf, v);
+		buffer_write_buf(iobuf, buf, n, wpos, capacity);
+	}
 
-void buffer_write(char *iobuf, int t, const void *v, int n, int* wpos, int* capacity)
-{
-	int len = 0;
+	void buffer_write(char* iobuf, int t, const void* v, int n, int* wpos, int* capacity)
+	{
+		int len = 0;
 
 		switch (t) {
 		case IOBUF_T_I8:
@@ -377,101 +377,101 @@ void buffer_write(char *iobuf, int t, const void *v, int n, int* wpos, int* capa
 			else {
 				if (n == -1)
 #if (defined _WIN32 || defined _WIN64)
-				n = wcslen((const wchar_t*)v) << 1;
+					n = wcslen((const wchar_t*)v) << 1;
 #else
-				n = wcslen((const wchar_t*)v) << 2;
+					n = wcslen((const wchar_t*)v) << 2;
 #endif
+			}
+			buffer_write_7bit_int(iobuf, n, wpos, capacity);
+			if (n > 0)
+				buffer_write_buf(iobuf, (const char*)v, n, wpos, capacity);
+			break;
+		case IOBUF_T_BUF:
+			if (n > 0)
+				buffer_write_buf(iobuf, (const char*)v, n, wpos, capacity);
+			break;
+		case IOBUF_T_7BIT:
+			buffer_write_7bit_int(iobuf, *(unsigned int*)v, wpos, capacity);
+			break;
+		default:
+			assert(0);
+			break;
 		}
-		buffer_write_7bit_int(iobuf, n, wpos, capacity);
-		if (n > 0)
-			buffer_write_buf(iobuf, (const char*)v, n, wpos, capacity);
-		break;
-	case IOBUF_T_BUF:
-		if (n > 0)
-			buffer_write_buf(iobuf, (const char*)v, n, wpos, capacity);
-		break;
-	case IOBUF_T_7BIT:
-		buffer_write_7bit_int(iobuf, *(unsigned int*)v, wpos, capacity);
-		break;
-	default:
-		assert(0);
-		break;
 	}
-}
 
-template<class T>
-static inline void WriteT(char *iobuf, T &t, int* wpos, int* capacity)
-{
-	buffer_write(iobuf, IOBUF_T_BUF, &t, sizeof(t), wpos, capacity);
-}
-
-template<class T>
-static inline void WriteArrayT(char *iobuf, CAutoArray<T> &t, int* wpos, int* capacity)
-{
-	int nArrayNum = t.GetCount();
-	buffer_write(iobuf, IOBUF_T_I4, &nArrayNum, 0, wpos, capacity);
-
-	for(int i=0; i<nArrayNum; i++)
+	template<class T>
+	static inline void WriteT(char* iobuf, T& t, int* wpos, int* capacity)
 	{
-		WriteT(iobuf, t[i], wpos, capacity);
+		buffer_write(iobuf, IOBUF_T_BUF, &t, sizeof(t), wpos, capacity);
 	}
-}
 
-template<class T>
-static inline void WriteArrayT(char *iobuf, const CAutoArray<T> &t, int* wpos, int* capacity)
-{
-	int nArrayNum = t.GetCount();
-	buffer_write(iobuf, IOBUF_T_I4, &nArrayNum, 0, wpos, capacity);
+	template<class T>
+	static inline void WriteArrayT(char* iobuf, CAutoArray<T>& t, int* wpos, int* capacity)
+	{
+		int nArrayNum = t.GetCount();
+		buffer_write(iobuf, IOBUF_T_I4, &nArrayNum, 0, wpos, capacity);
+
+		for (int i = 0; i < nArrayNum; i++)
+		{
+			WriteT(iobuf, t[i], wpos, capacity);
+		}
+	}
 
-	for(int i=0; i<nArrayNum; i++)
+	template<class T>
+	static inline void WriteArrayT(char* iobuf, const CAutoArray<T>& t, int* wpos, int* capacity)
 	{
-		WriteT(iobuf, t[i], wpos, capacity);
+		int nArrayNum = t.GetCount();
+		buffer_write(iobuf, IOBUF_T_I4, &nArrayNum, 0, wpos, capacity);
+
+		for (int i = 0; i < nArrayNum; i++)
+		{
+			WriteT(iobuf, t[i], wpos, capacity);
+		}
 	}
-}
 
-static inline void WriteT(char *iobuf, CSimpleStringA &t, int* wpos, int* capacity)
-{
-	CSimpleStringW wt = CSimpleStringA2W(t); // string is unicode so we can compatible with silverlight
-	buffer_write(iobuf, IOBUF_T_WSTR, wt.GetData(), -1, wpos, capacity);
-}
+	static inline void WriteT(char* iobuf, CSimpleStringA& t, int* wpos, int* capacity)
+	{
+		CSimpleStringW wt = CSimpleStringA2W(t); // string is unicode so we can compatible with silverlight
+		buffer_write(iobuf, IOBUF_T_WSTR, wt.GetData(), -1, wpos, capacity);
+	}
 
 
-static inline void WriteT(char *iobuf, CSimpleStringW &t, int* wpos, int* capacity)
-{
-	buffer_write(iobuf, IOBUF_T_WSTR, t.GetData(), -1, wpos, capacity);
-}
+	static inline void WriteT(char* iobuf, CSimpleStringW& t, int* wpos, int* capacity)
+	{
+		buffer_write(iobuf, IOBUF_T_WSTR, t.GetData(), -1, wpos, capacity);
+	}
 
-static inline void WriteT(char *iobuf, const CSimpleStringA &t, int* wpos, int* capacity)
-{
-	CSimpleStringW wt = CSimpleStringA2W(t); // string is unicode so we can compatible with silverlight
-	buffer_write(iobuf, IOBUF_T_WSTR, wt.GetData(), -1, wpos, capacity);
-}
+	static inline void WriteT(char* iobuf, const CSimpleStringA& t, int* wpos, int* capacity)
+	{
+		CSimpleStringW wt = CSimpleStringA2W(t); // string is unicode so we can compatible with silverlight
+		buffer_write(iobuf, IOBUF_T_WSTR, wt.GetData(), -1, wpos, capacity);
+	}
 
-static inline void WriteT(char *iobuf, const CSimpleStringW &t, int* wpos, int* capacity)
-{
-	buffer_write(iobuf, IOBUF_T_WSTR, t.GetData(), -1, wpos, capacity);
-}
+	static inline void WriteT(char* iobuf, const CSimpleStringW& t, int* wpos, int* capacity)
+	{
+		buffer_write(iobuf, IOBUF_T_WSTR, t.GetData(), -1, wpos, capacity);
+	}
 
-static inline void WriteT(char *iobuf, const char* t, int* wpos, int* capacity, int len)
-{
-	buffer_write(iobuf, IOBUF_T_BUF, t, len, wpos, capacity);
-}
+	static inline void WriteT(char* iobuf, const char* t, int* wpos, int* capacity, int len)
+	{
+		buffer_write(iobuf, IOBUF_T_BUF, t, len, wpos, capacity);
+	}
 
 
-// static inline void WriteT(char *iobuf, CBlob &t)
-// {
-// // 	iobuffer_write(iobuf, IOBUF_T_I4, &t.m_iLength, 0);
-// // 	iobuffer_write(iobuf, IOBUF_T_BUF, t.m_pData, t.m_iLength);
-// }
-// 
-// 
-// static inline void WriteT(char *iobuf, const CBlob &t)
-// {
-// // 	iobuffer_write(iobuf, IOBUF_T_I4, &t.m_iLength, 0);
-// // 	iobuffer_write(iobuf, IOBUF_T_BUF, t.m_pData, t.m_iLength);
-// }
-
-/////////////////  Write Buffer End //////////////////////
+	// static inline void WriteT(char *iobuf, CBlob &t)
+	// {
+	// // 	iobuffer_write(iobuf, IOBUF_T_I4, &t.m_iLength, 0);
+	// // 	iobuffer_write(iobuf, IOBUF_T_BUF, t.m_pData, t.m_iLength);
+	// }
+	// 
+	// 
+	// static inline void WriteT(char *iobuf, const CBlob &t)
+	// {
+	// // 	iobuffer_write(iobuf, IOBUF_T_I4, &t.m_iLength, 0);
+	// // 	iobuffer_write(iobuf, IOBUF_T_BUF, t.m_pData, t.m_iLength);
+	// }
+
+	/////////////////  Write Buffer End //////////////////////
 
 }
 

+ 8 - 8
Module/mod_chromium/CMethodInterface.h

@@ -3,15 +3,15 @@
 
 #include <string.h>
 #include "CTransStruct.h"
-namespace Chromium{
+namespace Chromium {
 
-class CMedthodInterface {
-public:
-	std::string mMethodName;
-	std::string mMethodType;
-	CTransStruct mRequestInterpreter;
-	CTransStruct mResponseInterpreter;
-};
+	class CMedthodInterface {
+	public:
+		std::string mMethodName;
+		std::string mMethodType;
+		CTransStruct mRequestInterpreter;
+		CTransStruct mResponseInterpreter;
+	};
 }
 
 #endif

+ 6 - 6
Module/mod_chromium/CMethodParam.h

@@ -3,13 +3,13 @@
 
 #include <string.h>
 
-namespace Chromium{
+namespace Chromium {
 
-class CMethodParam{
-public:
-	std::string mName;
-	std::string mType;
-};
+	class CMethodParam {
+	public:
+		std::string mName;
+		std::string mType;
+	};
 
 }
 

+ 199 - 199
Module/mod_chromium/CSocketClient.cpp

@@ -36,13 +36,13 @@ std::pair<bool, std::string> DetectActiveHttp(std::vector<std::string> urlArr)
 		{
 			if (threadArr[i].is_ready())
 			{
-			DbgEx("Detect url %s %s", urlArr[i].c_str(), threadArr[i].get() ? "sucess" : "failed");
+				DbgEx("Detect url %s %s", urlArr[i].c_str(), threadArr[i].get() ? "sucess" : "failed");
 				if (threadArr[i].get())
 					vaildArr.push_back(urlArr[i]);
 			}
 
 			else
-			DbgEx("Detect url %s timeout", urlArr[i].c_str());
+				DbgEx("Detect url %s timeout", urlArr[i].c_str());
 		}
 
 
@@ -56,65 +56,65 @@ std::pair<bool, std::string> DetectActiveHttp(std::vector<std::string> urlArr)
 		else
 			return std::make_pair(false, "");
 	}
-	catch(std::exception &e){
+	catch (std::exception& e) {
 		DbgEx("DetectActiveHttp exception, %s", e.what());
 		return std::make_pair(false, "");
 	}
-	
+
 }
 
-namespace Chromium{	
+namespace Chromium {
 
 
-CSocketClient::CSocketClient(CEntityBase* pEntity, unsigned int id)
-	:m_vbuf(128),m_pNetThread(nullptr),mID(id)
-{
-	m_pEntity = pEntity;
-}
+	CSocketClient::CSocketClient(CEntityBase* pEntity, unsigned int id)
+		:m_vbuf(128), m_pNetThread(nullptr), mID(id)
+	{
+		m_pEntity = pEntity;
+	}
 
-CSocketClient::CSocketClient(boost::asio::io_service &ios, const char* ipAddr, 
-	const char* port, CEntityBase* pEntity, unsigned int id):
-	m_ep(boost::asio::ip::address_v4::from_string(ipAddr), atoi(port)),
-	m_buf(100, 0),
-	m_pNetThread(nullptr),
-	m_vbuf(128),
-	mID(id),
-	m_pEntity(pEntity)
-{
-	::DbgEx("CSocketClient constructor ip=%s, port=%s", ipAddr, port);
-	m_psocket = sock_ptr (new socket_type(ios));
-}
+	CSocketClient::CSocketClient(boost::asio::io_service& ios, const char* ipAddr,
+		const char* port, CEntityBase* pEntity, unsigned int id) :
+		m_ep(boost::asio::ip::address_v4::from_string(ipAddr), atoi(port)),
+		m_buf(100, 0),
+		m_pNetThread(nullptr),
+		m_vbuf(128),
+		mID(id),
+		m_pEntity(pEntity)
+	{
+		::DbgEx("CSocketClient constructor ip=%s, port=%s", ipAddr, port);
+		m_psocket = sock_ptr(new socket_type(ios));
+	}
 
-CSocketClient::~CSocketClient(){
-//	free(m_psocket);
-}
+	CSocketClient::~CSocketClient() {
+		//	free(m_psocket);
+	}
 
-ErrorCodeEnum CSocketClient::Connect(){
-	boost::system::error_code ec;
-	DbgEx("CSocketClient method -> connect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
-	m_psocket->connect(m_ep, ec);
-	if (ec)
-	{
-		// connect failed!
-		DbgEx("CSocketClient method -> Connect  : connect failed! Retry after 1s !");
-		// retry to connect after 3s
-		Sleep(1000);
+	ErrorCodeEnum CSocketClient::Connect() {
+		boost::system::error_code ec;
+		DbgEx("CSocketClient method -> connect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
 		m_psocket->connect(m_ep, ec);
-		if (ec)return Error_IO;
+		if (ec)
+		{
+			// connect failed!
+			DbgEx("CSocketClient method -> Connect  : connect failed! Retry after 1s !");
+			// retry to connect after 3s
+			Sleep(1000);
+			m_psocket->connect(m_ep, ec);
+			if (ec)return Error_IO;
+		}
+		DbgEx("CSocketClient method -> connect  succeed!");
+		StartSocketService();
+		return Error_Succeed;
 	}
-	DbgEx("CSocketClient method -> connect  succeed!");
-	StartSocketService();
-	return Error_Succeed;
-}
 
-ErrorCodeEnum CSocketClient::Close(){
-	DbgEx("CSocketClient method -> close");
-	StopSocketService();
-	boost::system::error_code ec;
-	m_psocket->close(ec);
- 	handle_close(ec);
- 	return Error_Succeed;
-}
+	ErrorCodeEnum CSocketClient::Close() {
+		DbgEx("CSocketClient method -> close");
+		StopSocketService();
+		boost::system::error_code ec;
+		m_psocket->close(ec);
+		handle_close(ec);
+		return Error_Succeed;
+	}
 
 	ErrorCodeEnum CSocketClient::Write(CMessage* pMsg) {
 		DbgEx("CSocketClient method -> write, %s", hexdumpToString(pMsg->getPayload(), pMsg->getLength()).c_str());
@@ -131,148 +131,148 @@ ErrorCodeEnum CSocketClient::Close(){
 		return Error_Succeed;
 	}
 
-ErrorCodeEnum CSocketClient::StartSocketService(){
-	if (NULL == m_pNetThread)
-	{
-		m_pNetThread = new boost::thread(boost::bind(&CSocketClient::thread_recv, this));
+	ErrorCodeEnum CSocketClient::StartSocketService() {
+		if (NULL == m_pNetThread)
+		{
+			m_pNetThread = new boost::thread(boost::bind(&CSocketClient::thread_recv, this));
+		}
+
+		return Error_Succeed;
 	}
 
-	return Error_Succeed;
-}
+	ErrorCodeEnum CSocketClient::StopSocketService() {
+		if (NULL != m_pNetThread)
+		{
+			DbgEx("CSocketClient -> StopSocketService doing interrupt");
+			m_pNetThread->interrupt();
+			m_pNetThread->join();
+			m_pNetThread = NULL;
+		}
+		DbgEx("Socket Service stopped");
+		return Error_Succeed;
+	}
 
-ErrorCodeEnum CSocketClient::StopSocketService(){
-	if (NULL != m_pNetThread)
-	{
-		DbgEx("CSocketClient -> StopSocketService doing interrupt");
-		m_pNetThread->interrupt();
-		m_pNetThread->join();
-		m_pNetThread = NULL;
+	void CSocketClient::handle_connect(const boost::system::error_code& err) {
+		DbgEx("CSocketClient method -> handle_connect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
+		if (err)
+		{
+			// connect failed!
+			DbgEx("CSocketClient method -> handle_connect  : connect failed!");
+			// retry to connect after 3s
+			Sleep(3000);
+			m_psocket->async_connect(m_ep, boost::bind(&this_type::handle_connect, this, boost::asio::placeholders::error));
+			return;
+		}
+		DbgEx("CSocketClient method -> handle_connect  : connect succeed! socket p = %ld", m_psocket);
+		DbgEx("CSocketClient method -> handle_connect end");
 	}
-	DbgEx("Socket Service stopped");
-	return Error_Succeed;
-}
 
-void CSocketClient::handle_connect(const boost::system::error_code& err){
-	DbgEx("CSocketClient method -> handle_connect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
-	if (err)
-	{
-		// connect failed!
-		DbgEx("CSocketClient method -> handle_connect  : connect failed!");
-		// retry to connect after 3s
-		Sleep(3000);
-		m_psocket->async_connect(m_ep, boost::bind(&this_type::handle_connect, this, boost::asio::placeholders::error));
+	void CSocketClient::handle_close(const boost::system::error_code& err) {
+		DbgEx("CSocketClient method -> handle_close : %s", err.message().c_str());
 		return;
 	}
-	DbgEx("CSocketClient method -> handle_connect  : connect succeed! socket p = %ld", m_psocket);
-	DbgEx("CSocketClient method -> handle_connect end");
-}
 
-void CSocketClient::handle_close(const boost::system::error_code& err){
-	DbgEx("CSocketClient method -> handle_close : %s", err.message().c_str());
-	return;
-}
-
-ErrorCodeEnum CSocketClient::Reconnect()
-{
-	boost::system::error_code ec;
-	DbgEx("CSocketClient method -> reconnect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
-	CModTools::get_mutable_instance().RestartProxyServer();
-	m_psocket->connect(m_ep, ec);
-	if (ec)
+	ErrorCodeEnum CSocketClient::Reconnect()
 	{
-		// connect failed!
-		DbgEx("CSocketClient method -> Reconnect  : connect failed! Retry after 1s ! error message = %s", ec.message());
-		// retry to connect after 3s
-		Sleep(1000);
+		boost::system::error_code ec;
+		DbgEx("CSocketClient method -> reconnect thread_id = %ld, object=%ld", boost::this_thread::get_id(), this);
+		CModTools::get_mutable_instance().RestartProxyServer();
 		m_psocket->connect(m_ep, ec);
-		if (ec)return Error_IO;
+		if (ec)
+		{
+			// connect failed!
+			DbgEx("CSocketClient method -> Reconnect  : connect failed! Retry after 1s ! error message = %s", ec.message());
+			// retry to connect after 3s
+			Sleep(1000);
+			m_psocket->connect(m_ep, ec);
+			if (ec)return Error_IO;
+		}
+		DbgEx("CSocketClient method -> reconnect  succeed!");
+		return Error_Succeed;
 	}
-	DbgEx("CSocketClient method -> reconnect  succeed!");
-	return Error_Succeed;
-}
-
 
-void CSocketClient::handle_write(const boost::system::error_code& err){
-	DbgEx("CSocketClient method -> handle_write %s!", err ? "error" : "succeed");
-}
 
-ErrorCodeEnum CSocketClient::SetMessageHandler(ISocketCallback* obj){
-	this->mMessageHandler = boost::bind(&ISocketCallback::message_from_socket, obj, _1, _2);
-	return Error_Succeed;
-}
+	void CSocketClient::handle_write(const boost::system::error_code& err) {
+		DbgEx("CSocketClient method -> handle_write %s!", err ? "error" : "succeed");
+	}
 
-void CSocketClient::handle_read(const boost::system::error_code& err,
-	const size_t bytes_transferred, CMessage &msg)
-{
-	DbgEx("CSocketClient handle_read bytes_transferred=%d", bytes_transferred);
-	if (err)
-	{
-		// OnRecvError
-		DbgEx("CSocketClient handle_read something wrong!");
-		return;
+	ErrorCodeEnum CSocketClient::SetMessageHandler(ISocketCallback* obj) {
+		this->mMessageHandler = boost::bind(&ISocketCallback::message_from_socket, obj, _1, _2);
+		return Error_Succeed;
 	}
 
-	// 用来处理发送给websocket 
-	if (this->mMessageHandler != NULL)
+	void CSocketClient::handle_read(const boost::system::error_code& err,
+		const size_t bytes_transferred, CMessage& msg)
 	{
-		auto f = boost::bind(mMessageHandler, msg, mID);
-		boost::thread msgHandler(f);
-		msgHandler.join();
-		//this->mMessageHandler(msg, mID);
-	}
+		DbgEx("CSocketClient handle_read bytes_transferred=%d", bytes_transferred);
+		if (err)
+		{
+			// OnRecvError
+			DbgEx("CSocketClient handle_read something wrong!");
+			return;
+		}
 
-	DbgEx("CSocketClient handle_read well!");
-}
+		// 用来处理发送给websocket 
+		if (this->mMessageHandler != NULL)
+		{
+			auto f = boost::bind(mMessageHandler, msg, mID);
+			boost::thread msgHandler(f);
+			msgHandler.join();
+			//this->mMessageHandler(msg, mID);
+		}
 
-std::string CSocketClient::hexdumpToString(const char* buf, const int num)
-{
-	char str[8192 * 2] = { 0 };
-	int i = 0;
-	char c[5] = { 0 };
-	if (num > 1200)
+		DbgEx("CSocketClient handle_read well!");
+	}
+
+	std::string CSocketClient::hexdumpToString(const char* buf, const int num)
 	{
-		for (i = 0; i < 50; i++)
+		char str[8192 * 2] = { 0 };
+		int i = 0;
+		char c[5] = { 0 };
+		if (num > 1200)
+		{
+			for (i = 0; i < 50; i++)
+			{
+				sprintf(c, "%02X ", (unsigned char)buf[i]);
+				strcat(str, c);
+			}
+			return CSimpleStringA::Format("buffer too long to show!show pre 50 hex! CSocketClient hex buf len = %d : %s", num, str).GetData();
+		}
+		for (i = 0; i < num; i++)
 		{
 			sprintf(c, "%02X ", (unsigned char)buf[i]);
 			strcat(str, c);
 		}
-		return CSimpleStringA::Format("buffer too long to show!show pre 50 hex! CSocketClient hex buf len = %d : %s", num, str).GetData();	
+		return CSimpleStringA::Format("CSocketClient hex buf len = %d : %s", num, str).GetData();
 	}
-	for (i = 0; i < num; i++)
-	{
-		sprintf(c, "%02X ", (unsigned char)buf[i]);
-		strcat(str, c);
-	}
-	return CSimpleStringA::Format("CSocketClient hex buf len = %d : %s", num, str).GetData();
-}
 
-void CSocketClient::hexdump(const char *buf, const int num){
-	auto hexStr = hexdumpToString(buf, num);
-	DbgEx(hexStr.c_str());
-}
+	void CSocketClient::hexdump(const char* buf, const int num) {
+		auto hexStr = hexdumpToString(buf, num);
+		DbgEx(hexStr.c_str());
+	}
 
-void CSocketClient::thread_recv(){
+	void CSocketClient::thread_recv() {
 
-	try
-	{
-		// time out for select
-		timeval tvsec = {1,0};
-		tvsec.tv_sec = 1; /* 1 second timeout */
-		tvsec.tv_usec = 0; /* no microseconds. */
+		try
+		{
+			// time out for select
+			timeval tvsec = { 1,0 };
+			tvsec.tv_sec = 1; /* 1 second timeout */
+			tvsec.tv_usec = 0; /* no microseconds. */
 
-		fd_set read_flags;
-		fd_set write_flags;
-		CMessage msg(MAX_TRANSFER_LEN);	//以能传输1MB数据为目标
-		bool isFindMsg = true;
+			fd_set read_flags;
+			fd_set write_flags;
+			CMessage msg(MAX_TRANSFER_LEN);	//以能传输1MB数据为目标
+			bool isFindMsg = true;
 
-		while (true)
-		{
-			boost::this_thread::sleep(boost::posix_time::milliseconds(isFindMsg ? 1 : 5));
-			boost::system::error_code ec;
+			while (true)
+			{
+				boost::this_thread::sleep(boost::posix_time::milliseconds(isFindMsg ? 1 : 5));
+				boost::system::error_code ec;
 
-			FD_ZERO(&read_flags);
-			FD_ZERO(&write_flags);
-			FD_SET(m_psocket->native_handle(), &read_flags);
+				FD_ZERO(&read_flags);
+				FD_ZERO(&write_flags);
+				FD_SET(m_psocket->native_handle(), &read_flags);
 
 				int sel = 0;
 				try
@@ -318,52 +318,52 @@ void CSocketClient::thread_recv(){
 					}
 					DbgEx("first read len = %d", len);
 
-				if (0 >= len)
-				{
-					DbgEx("socket has been closed!");
-					this->Close();
-					boost::this_thread::sleep(boost::posix_time::milliseconds(100));
-				}
-				try
-				{
-					len = 0;
-					const size_t dreamLen = *(int*)(msg.getWriteableData()) + 4;
-					do {
+					if (0 >= len)
+					{
+						DbgEx("socket has been closed!");
+						this->Close();
+						boost::this_thread::sleep(boost::posix_time::milliseconds(100));
+					}
+					try
+					{
+						len = 0;
+						const size_t dreamLen = *(int*)(msg.getWriteableData()) + 4;
+						do {
 #if (defined _WIN32 || defined _WIN64)
-						len = m_psocket->receive(boost::asio::buffer(msg.getWriteableData() + 4, *(int*)(msg.getWriteableData()) + 4), 0, ec);
+							len = m_psocket->receive(boost::asio::buffer(msg.getWriteableData() + 4, *(int*)(msg.getWriteableData()) + 4), 0, ec);
 #else
-						const size_t recv_len = m_psocket->receive(boost::asio::buffer(msg.getWriteableData() + 4 + len, dreamLen - len), 0, ec);
-						if (!ec && recv_len >= 0)
-							len += recv_len;
-						else
-							break;
+							const size_t recv_len = m_psocket->receive(boost::asio::buffer(msg.getWriteableData() + 4 + len, dreamLen - len), 0, ec);
+							if (!ec && recv_len >= 0)
+								len += recv_len;
+							else
+								break;
 #endif
-						
-					} while (dreamLen > len);
-				}
-				catch (...)
-				{
-					DbgEx("second read error, %s", hexdumpToString(msg.getWriteableData(), msg.getBufferLength()).c_str());
-					msg.clear();
-					return;
-				}
- 				
-				// 用来处理发送给websocket 
-				// todo fix select len = 0
-				if (this->mMessageHandler != NULL && 0 != msg.getBufferLength())
-				{
-					DbgEx("pre mMessageHandler");
-					this->mMessageHandler(msg, mID);
-					DbgEx("after mMessageHandler");
+
+						} while (dreamLen > len);
+					}
+					catch (...)
+					{
+						DbgEx("second read error, %s", hexdumpToString(msg.getWriteableData(), msg.getBufferLength()).c_str());
+						msg.clear();
+						return;
+					}
+
+					// 用来处理发送给websocket 
+					// todo fix select len = 0
+					if (this->mMessageHandler != NULL && 0 != msg.getBufferLength())
+					{
+						DbgEx("pre mMessageHandler");
+						this->mMessageHandler(msg, mID);
+						DbgEx("after mMessageHandler");
+					}
 				}
 			}
+			DbgEx("warning ! : thread_recv end!");
+		}
+		catch (boost::thread_interrupted&)
+		{
+			DbgEx("Socket thread interrupted!");
 		}
-		DbgEx("warning ! : thread_recv end!");
-	}
-	catch (boost::thread_interrupted& )
-	{
-		DbgEx("Socket thread interrupted!");
 	}
-}
 
 }

+ 134 - 132
Module/mod_chromium/CStructureInterpreter.cpp

@@ -8,165 +8,167 @@
 #include <strstream>
 #include "baseEx.h"
 
-namespace Chromium{
+namespace Chromium {
 
-CStructureInterpreter::CStructureInterpreter(const char* path)
-{
-	//DbgEx("CStructureInterpreter constructor");
-	this->mPathOfXmls = path;
-	this->loadXmlFiles();
-};
-
-void CStructureInterpreter::getAllFiles(){
-	mFiles = find_files(this->mPathOfXmls, "*.xml");
-}
-
-void CStructureInterpreter::loadXmlFiles(){
-	this->getAllFiles();
-	int i = 0;
-	for (i=0;i<this->mFiles.size();++i)
+	CStructureInterpreter::CStructureInterpreter(const char* path)
 	{
-		tinyxml2::XMLDocument doc;
-		doc.LoadFile( this->mFiles.at(i).c_str() );
-		if( tinyxml2::XML_SUCCESS == doc.ErrorID()){
-			this->parseXmlToMap(doc);
-		}
+		//DbgEx("CStructureInterpreter constructor");
+		this->mPathOfXmls = path;
+		this->loadXmlFiles();
+	};
 
+	void CStructureInterpreter::getAllFiles() {
+		mFiles = find_files(this->mPathOfXmls, "*.xml");
 	}
-}
-
-void CStructureInterpreter::parseXmlToMap(tinyxml2::XMLDocument& xml){
-	//DbgEx("CStructureInterpreter parseXmlToMap");
-	// get entity node
-	tinyxml2::XMLElement* pEntity = xml.FirstChildElement("entity");
-	if (NULL == pEntity) return;
-	// load messages
-	std::string strEntityName = pEntity->Attribute("name");
-	std::vector<CMedthodInterface> messageInterface;
-	this->loadMessageInterface(messageInterface, pEntity);
-	this->mMessageStructureMap.insert(std::pair<std::string, std::vector<CMedthodInterface>>(strEntityName, messageInterface));
-	// get class node
-	tinyxml2::XMLElement* pClass = pEntity->FirstChildElement("class");
-	if (NULL == pClass) return;
-	//load functions
-	std::string strClassName = pClass->Attribute("name");
-	std::map<int,CMedthodInterface> functionInterface;
-	this->loadFunctionInterface(functionInterface, pClass);
-	this->mMethodStructureMap.insert(std::pair<std::string, std::map<int,CMedthodInterface>>(strEntityName.append(strClassName),functionInterface));
-}
 
+	void CStructureInterpreter::loadXmlFiles() {
+		this->getAllFiles();
+		int i = 0;
+		for (i = 0; i < this->mFiles.size(); ++i)
+		{
+			tinyxml2::XMLDocument doc;
+			doc.LoadFile(this->mFiles.at(i).c_str());
+			if (tinyxml2::XML_SUCCESS == doc.ErrorID()) {
+				this->parseXmlToMap(doc);
+			}
 
-void CStructureInterpreter::loadFunctionInterface(
-	std::map<int,CMedthodInterface> &functionInterface, 
-	tinyxml2::XMLElement* pClass){
-	// load function structure
-	//DbgEx("CStructureInterpreter loadMethodInterface");
-	tinyxml2::XMLElement* element = pClass->FirstChildElement();
-	int methodID = 0;
-	while(NULL != element){
-		CMedthodInterface method;
-		method.mMethodName = element->Attribute("name");
-		method.mMethodType = element->Value();
-
-		if(0 == method.mMethodType.compare("twoway")){
-			// twoway function
-			this->loadParams(method.mRequestInterpreter, element->FirstChildElement("req"));
-			this->loadParams(method.mResponseInterpreter, element->FirstChildElement("res"));
-		}else if (0 == method.mMethodType.compare("oneway")){
-			// oneway function => info
-			this->loadParams(method.mRequestInterpreter, element);
 		}
+	}
 
-		if (element->Attribute("method_id") == NULL)
-		{
-			functionInterface.insert(std::pair<int,CMedthodInterface>(methodID, method));
-			methodID++;
-		}else{
-			int i = convertStringToInt(element->Attribute("method_id"));
-			functionInterface.insert(std::pair<int,CMedthodInterface>(i, method));
-		}
+	void CStructureInterpreter::parseXmlToMap(tinyxml2::XMLDocument& xml) {
+		//DbgEx("CStructureInterpreter parseXmlToMap");
+		// get entity node
+		tinyxml2::XMLElement* pEntity = xml.FirstChildElement("entity");
+		if (NULL == pEntity) return;
+		// load messages
+		std::string strEntityName = pEntity->Attribute("name");
+		std::vector<CMedthodInterface> messageInterface;
+		this->loadMessageInterface(messageInterface, pEntity);
+		this->mMessageStructureMap.insert(std::pair<std::string, std::vector<CMedthodInterface>>(strEntityName, messageInterface));
+		// get class node
+		tinyxml2::XMLElement* pClass = pEntity->FirstChildElement("class");
+		if (NULL == pClass) return;
+		//load functions
+		std::string strClassName = pClass->Attribute("name");
+		std::map<int, CMedthodInterface> functionInterface;
+		this->loadFunctionInterface(functionInterface, pClass);
+		this->mMethodStructureMap.insert(std::pair<std::string, std::map<int, CMedthodInterface>>(strEntityName.append(strClassName), functionInterface));
+	}
 
-//		functionInterface.push_back(method);
-		element = element->NextSiblingElement();
+
+	void CStructureInterpreter::loadFunctionInterface(
+		std::map<int, CMedthodInterface>& functionInterface,
+		tinyxml2::XMLElement* pClass) {
+		// load function structure
+		//DbgEx("CStructureInterpreter loadMethodInterface");
+		tinyxml2::XMLElement* element = pClass->FirstChildElement();
+		int methodID = 0;
+		while (NULL != element) {
+			CMedthodInterface method;
+			method.mMethodName = element->Attribute("name");
+			method.mMethodType = element->Value();
+
+			if (0 == method.mMethodType.compare("twoway")) {
+				// twoway function
+				this->loadParams(method.mRequestInterpreter, element->FirstChildElement("req"));
+				this->loadParams(method.mResponseInterpreter, element->FirstChildElement("res"));
+			}
+			else if (0 == method.mMethodType.compare("oneway")) {
+				// oneway function => info
+				this->loadParams(method.mRequestInterpreter, element);
+			}
+
+			if (element->Attribute("method_id") == NULL)
+			{
+				functionInterface.insert(std::pair<int, CMedthodInterface>(methodID, method));
+				methodID++;
+			}
+			else {
+				int i = convertStringToInt(element->Attribute("method_id"));
+				functionInterface.insert(std::pair<int, CMedthodInterface>(i, method));
+			}
+
+			//		functionInterface.push_back(method);
+			element = element->NextSiblingElement();
+		}
 	}
-}
 
 
-void CStructureInterpreter::loadParams(CTransStruct &params, 
-	tinyxml2::XMLElement* transParams){
-	//DbgEx("CStructureInterpreter loadParams");
-	if (NULL == transParams) return;
-	tinyxml2::XMLElement* param = transParams->FirstChildElement();
-	while(NULL != param){
-		CMethodParam mp;
-		mp.mName = param->Attribute("name");
-		mp.mType = param->Attribute("type");
-		params.mParamList.push_back(mp);
-		param = param->NextSiblingElement();
+	void CStructureInterpreter::loadParams(CTransStruct& params,
+		tinyxml2::XMLElement* transParams) {
+		//DbgEx("CStructureInterpreter loadParams");
+		if (NULL == transParams) return;
+		tinyxml2::XMLElement* param = transParams->FirstChildElement();
+		while (NULL != param) {
+			CMethodParam mp;
+			mp.mName = param->Attribute("name");
+			mp.mType = param->Attribute("type");
+			params.mParamList.push_back(mp);
+			param = param->NextSiblingElement();
+		}
 	}
-}
 
-void CStructureInterpreter::loadMessageInterface(
-	std::vector<CMedthodInterface> &messageInterface, 
-	tinyxml2::XMLElement* pEntity){
-	//DbgEx("CStructureInterpreter loadMessageInterface");
-	// load message structure
-	tinyxml2::XMLElement* msgElement = pEntity->FirstChildElement("message");
+	void CStructureInterpreter::loadMessageInterface(
+		std::vector<CMedthodInterface>& messageInterface,
+		tinyxml2::XMLElement* pEntity) {
+		//DbgEx("CStructureInterpreter loadMessageInterface");
+		// load message structure
+		tinyxml2::XMLElement* msgElement = pEntity->FirstChildElement("message");
 
-	while (NULL != msgElement)
-	{
-		CMedthodInterface mi;
-		mi.mMethodName = msgElement->Attribute("name");
-		mi.mMethodType = msgElement->Value();
-		this->loadParams(mi.mResponseInterpreter, msgElement);
+		while (NULL != msgElement)
+		{
+			CMedthodInterface mi;
+			mi.mMethodName = msgElement->Attribute("name");
+			mi.mMethodType = msgElement->Value();
+			this->loadParams(mi.mResponseInterpreter, msgElement);
 
-		messageInterface.push_back(mi);
+			messageInterface.push_back(mi);
 
-		msgElement = msgElement->NextSiblingElement("message");
+			msgElement = msgElement->NextSiblingElement("message");
+		}
 	}
-}
 
-CMedthodInterface* CStructureInterpreter::getFunctionInterface(
-	char* entityName, char* className, int methodID){
+	CMedthodInterface* CStructureInterpreter::getFunctionInterface(
+		char* entityName, char* className, int methodID) {
 
-	//DbgEx("CStructureInterpreter getMethodInterface");
+		//DbgEx("CStructureInterpreter getMethodInterface");
 
-	if (methodID < 0) return NULL;
+		if (methodID < 0) return NULL;
 
-	// key1: entityName+className, key2:methodName
-	std::string key1 = entityName;
-	key1.append(className);
+		// key1: entityName+className, key2:methodName
+		std::string key1 = entityName;
+		key1.append(className);
 
-	std::map<std::string,std::map<int,CMedthodInterface>>::iterator itEntityMap = this->mMethodStructureMap.find(key1);
-	if (this->mMethodStructureMap.end() == itEntityMap)
-	{
-		return NULL;
-	}
+		std::map<std::string, std::map<int, CMedthodInterface>>::iterator itEntityMap = this->mMethodStructureMap.find(key1);
+		if (this->mMethodStructureMap.end() == itEntityMap)
+		{
+			return NULL;
+		}
 
-	std::map<int,CMedthodInterface>::iterator itMethodMap = itEntityMap->second.find(methodID);
-	if (itEntityMap->second.end() == itMethodMap)
-	{
-		return NULL;
+		std::map<int, CMedthodInterface>::iterator itMethodMap = itEntityMap->second.find(methodID);
+		if (itEntityMap->second.end() == itMethodMap)
+		{
+			return NULL;
+		}
+		return &(itMethodMap->second);
 	}
-	return &(itMethodMap->second);
-}
 
-std::vector<CMedthodInterface>* CStructureInterpreter::getAllMessageInterface(const char* entityName){
-	std::string entity = entityName;
-	std::map<std::string,std::vector<CMedthodInterface>>::iterator iter = this->mMessageStructureMap.find(entity);
-	if (this->mMessageStructureMap.end() == iter)
-	{
-		return NULL;
+	std::vector<CMedthodInterface>* CStructureInterpreter::getAllMessageInterface(const char* entityName) {
+		std::string entity = entityName;
+		std::map<std::string, std::vector<CMedthodInterface>>::iterator iter = this->mMessageStructureMap.find(entity);
+		if (this->mMessageStructureMap.end() == iter)
+		{
+			return NULL;
+		}
+		return &(iter->second);
 	}
-	return &(iter->second);
-}
 
-int CStructureInterpreter::convertStringToInt(std::string s){
-	int val;
-	std::strstream ss;
-	ss<< s;
-	ss >> val;
-	return val;
-}
+	int CStructureInterpreter::convertStringToInt(std::string s) {
+		int val;
+		std::strstream ss;
+		ss << s;
+		ss >> val;
+		return val;
+	}
 
 }

+ 23 - 23
Module/mod_chromium/CStructureInterpreter.h

@@ -6,29 +6,29 @@
 #include <string>
 #include "CMethodInterface.h"
 #include "tinyxml2.h"
-namespace Chromium{
-class CStructureInterpreter
-{
-public:
-	explicit CStructureInterpreter(const char* path);
-	CMedthodInterface* getFunctionInterface(char* entityName, char* className, int methodID);
-	std::vector<CMedthodInterface>* getAllMessageInterface(const char* entityName);
-private:
-	// methods 
-	void getAllFiles();
-	void loadXmlFiles();
-	void loadEntityInterpreterFile();
-	void parseXmlToMap(tinyxml2::XMLDocument& xml);
-	void loadFunctionInterface(std::map<int,CMedthodInterface> &functionInterface, tinyxml2::XMLElement* pClass);
-	void loadMessageInterface(std::vector<CMedthodInterface> &messageInterface, tinyxml2::XMLElement* pEntity);
-	void loadParams(CTransStruct &params, tinyxml2::XMLElement* methodInterface);
-	int convertStringToInt(std::string s);
-private:
-	std::map<std::string, std::map<int,CMedthodInterface>> mMethodStructureMap;
-	std::map<std::string, std::vector<CMedthodInterface>> mMessageStructureMap;
-	std::string mPathOfXmls;
-	std::vector<std::string> mFiles;
-};
+namespace Chromium {
+	class CStructureInterpreter
+	{
+	public:
+		explicit CStructureInterpreter(const char* path);
+		CMedthodInterface* getFunctionInterface(char* entityName, char* className, int methodID);
+		std::vector<CMedthodInterface>* getAllMessageInterface(const char* entityName);
+	private:
+		// methods 
+		void getAllFiles();
+		void loadXmlFiles();
+		void loadEntityInterpreterFile();
+		void parseXmlToMap(tinyxml2::XMLDocument& xml);
+		void loadFunctionInterface(std::map<int, CMedthodInterface>& functionInterface, tinyxml2::XMLElement* pClass);
+		void loadMessageInterface(std::vector<CMedthodInterface>& messageInterface, tinyxml2::XMLElement* pEntity);
+		void loadParams(CTransStruct& params, tinyxml2::XMLElement* methodInterface);
+		int convertStringToInt(std::string s);
+	private:
+		std::map<std::string, std::map<int, CMedthodInterface>> mMethodStructureMap;
+		std::map<std::string, std::vector<CMedthodInterface>> mMessageStructureMap;
+		std::string mPathOfXmls;
+		std::vector<std::string> mFiles;
+	};
 }
 
 #endif

+ 5 - 5
Module/mod_chromium/CTransStruct.h

@@ -3,10 +3,10 @@
 
 #include "CMethodParam.h"
 #include <list>
-namespace Chromium{
-class CTransStruct{
-public:
-	std::list<CMethodParam> mParamList;
-};
+namespace Chromium {
+	class CTransStruct {
+	public:
+		std::list<CMethodParam> mParamList;
+	};
 }
 #endif

+ 15 - 15
Module/mod_chromium/CWSCodec.cpp

@@ -345,7 +345,7 @@ namespace Chromium {
 		}
 		cJSON_AddStringToObject(ret, PARAMLIST_HEAD, cJSON_PrintUnformatted(extendJs.get()));
 		//cJSON_AddItemToObject(ret, PARAMLIST_HEAD, extendJs.get());
-	}
+			}
 
 	void CWSCodec::DeserializeRequestAck(CMessage & msg, std::map<int, entity_def_struct>::iterator & it, int& rpos, cJSON * ret) {
 		entity_def_struct* p_struct = &it->second;
@@ -637,7 +637,7 @@ namespace Chromium {
 			GetCJsonIntergerValue(pJson, "eventSign", eventSign, errmsg);
 			GetCJsonObjectValue(pJson, "data", e.data, errmsg);
 			SpSendBroadcast(m_pFunc, eventID, eventSign, e);
-			if(0 < strlen(errmsg))
+			if (0 < strlen(errmsg))
 				DbgEx("JsonToBuffer errmsg : %s", errmsg);
 			cJSON_Delete(pJson);
 			return std::make_pair(messageType, nullptr);
@@ -738,7 +738,7 @@ namespace Chromium {
 		int i = 0;
 		len = wpos - 8;
 		WriteT(data, len, &i, &capacity);
-		if(0 < strlen(errmsg))
+		if (0 < strlen(errmsg))
 			DbgEx("JsonToBuffer errmsg : %s, len = %d", errmsg, len);
 
 		cJSON_Delete(pJson);
@@ -838,11 +838,11 @@ namespace Chromium {
 			//如果存在重复,可能数据已经脏了,所以也不需要作删除参数处理
 
 			paramJs = js;
-		}
+				}
 		GeneralSerialize(paramJs, data, wpos, capacity, pI, errmsg);
 
 		return;
-	}
+			}
 #if (defined _WIN32 || defined _WIN64)
 	std::pair<bool, std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, int>> CWSCodec::GetLinkContex(cJSON * js, char* data, char* errmsg)
 	{
@@ -965,9 +965,9 @@ namespace Chromium {
 			//如果存在重复,可能数据已经脏了,所以也不需要作删除参数处理
 
 			paramJs = js;
-		}
+				}
 		GeneralSerialize(paramJs, data, wpos, capacity, pI, errmsg);
-	}
+			}
 
 	void CWSCodec::SerializeRegister(cJSON * js, char* data, int* wpos, int* capacity, CMedthodInterface * pI, char* errmsg) {
 		unsigned int i4 = 0;
@@ -1315,7 +1315,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			strncpy(dstValue, "", strlen(""));
 			ret = false;
 		}
@@ -1333,7 +1333,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = "";
 			ret = false;
 		}
@@ -1352,7 +1352,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = "";
 			ret = false;
 		}
@@ -1368,7 +1368,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = "";
 			ret = false;
 		}
@@ -1445,7 +1445,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = 0;
 			ret = false;
 		}
@@ -1463,7 +1463,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = 0;
 			ret = false;
 		}
@@ -1495,7 +1495,7 @@ namespace Chromium {
 			ret = true;
 		}
 		else {
-			if (nullptr != errmsg){strcat(errmsg, "-");strcat(errmsg, strKey);}
+			if (nullptr != errmsg) { strcat(errmsg, "-"); strcat(errmsg, strKey); }
 			dstValue = 0;
 			ret = false;
 		}
@@ -1620,4 +1620,4 @@ namespace Chromium {
 		return s;
 	}
 
-}
+		}

+ 76 - 76
Module/mod_chromium/CWSCodec.h

@@ -9,82 +9,82 @@
 #include <tuple>
 #include <string>
 
-namespace Chromium{
-typedef struct entity_def_struct{
-	char entity_name[64];
-	char class_name[64];
-	unsigned int  methodID;
-}entity_def_struct;
-
-class CWSCodec{
-public:
-	CWSCodec();
-	~CWSCodec();
-
-	static CWSCodec* getInstance();
-	void init(const char* xmlPath);
-	void setEntityHandler(CSmartPointer<IEntityFunction> p);
-
-	std::pair<int, CMessage*> JsonToBuffer(std::string strJson);
-	std::string BufferToJson(CMessage& msg, int replaceTransId = 0);
-
-	std::string GetEntityName(std::string strJson);
-	std::string GetClassName(std::string strJson);
-private:
-	void DeserializeRequestAck(CMessage& msg, std::map<int, entity_def_struct>::iterator& it, int& rpos, cJSON *ret);
-	void DeserializeEvent(CMessage& msg, std::vector<CMedthodInterface>* list, int& rpos, cJSON *ret);
-	void DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON *ret);	//解析json->buffer
-
-	char* getJsonStr(cJSON *pJson);
-
-	std::pair<bool, std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, int>> GetLinkContex(cJSON* js, char* data, char* errmsg);
-
-	void SerializeInfo(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeBeginSession(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeEndSession(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeRequest(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeRegister(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeUnregister(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-/*	void SerializeEvent(cJSON* js, char* data, int* wpos, int* capacity, unsigned int* len);*/
-	void SerializeLogEvent(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeLogWarn(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeSetVarReq(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void SerializeGetVarReq(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-	void GeneralSerialize(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
-
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, char* dstValue,   char* errmsg);
-	template<typename T>
-	bool GetCJsonIntergerValue(cJSON* root, const char* strKey, T& dstValue, char* errmsg);
-
-	/*
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, unsigned int& dstValue,    char* errmsg);
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, short& dstValue,    char* errmsg);
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, unsigned short& dstValue,    char* errmsg);
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, int& dstValue,    char* errmsg);
-	bool GetCJsonObjectValue(cJSON* root, const char* strKey, bool& dstValue, char* errmsg);
-	
-	*/
-	bool GetCJsonObjectValue(cJSON* obj, int& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON* obj, unsigned int& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, double& dstValue, char* errmsg);
-	
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, CSimpleStringA& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON *root, const char* strKey, CSimpleStringW& dstValue, char* errmsg);
-	bool GetCJsonArraySize(cJSON *root, const char* strKey, int& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON* root, const char* strKey, std::string& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON *obj, CSimpleStringA& dstValue, char* errmsg);
-	bool GetCJsonObjectValue(cJSON *obj, CSimpleStringW& dstValue, char* errmsg);
-	
-	int UTF8ToUnicode(char* input, CSimpleStringW& output);
-	void hexdump(const char *buf, const int num);
-private:
-	CStructureInterpreter* mInterpreter;
-	std::map<int,entity_def_struct> *m_AckCallbackList;
-	std::map<int, std::vector<CMedthodInterface>*> *m_EventCallbackList;
-	CMessage m_DeserializeCache;
-	CMessage m_SerializeCache;	//存在脏数据可能
-	CSmartPointer<IEntityFunction> m_pFunc;
-};
+namespace Chromium {
+	typedef struct entity_def_struct {
+		char entity_name[64];
+		char class_name[64];
+		unsigned int  methodID;
+	}entity_def_struct;
+
+	class CWSCodec {
+	public:
+		CWSCodec();
+		~CWSCodec();
+
+		static CWSCodec* getInstance();
+		void init(const char* xmlPath);
+		void setEntityHandler(CSmartPointer<IEntityFunction> p);
+
+		std::pair<int, CMessage*> JsonToBuffer(std::string strJson);
+		std::string BufferToJson(CMessage& msg, int replaceTransId = 0);
+
+		std::string GetEntityName(std::string strJson);
+		std::string GetClassName(std::string strJson);
+	private:
+		void DeserializeRequestAck(CMessage& msg, std::map<int, entity_def_struct>::iterator& it, int& rpos, cJSON* ret);
+		void DeserializeEvent(CMessage& msg, std::vector<CMedthodInterface>* list, int& rpos, cJSON* ret);
+		void DeserializeBase(CMessage& msg, CTransStruct& ts, int& rpos, cJSON* ret);	//解析json->buffer
+
+		char* getJsonStr(cJSON* pJson);
+
+		std::pair<bool, std::tuple<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, int>> GetLinkContex(cJSON* js, char* data, char* errmsg);
+
+		void SerializeInfo(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeBeginSession(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeEndSession(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeRequest(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeRegister(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeUnregister(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		/*	void SerializeEvent(cJSON* js, char* data, int* wpos, int* capacity, unsigned int* len);*/
+		void SerializeLogEvent(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeLogWarn(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeSetVarReq(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void SerializeGetVarReq(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+		void GeneralSerialize(cJSON* js, char* data, int* wpos, int* capacity, CMedthodInterface* pI, char* errmsg);
+
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, char* dstValue, char* errmsg);
+		template<typename T>
+		bool GetCJsonIntergerValue(cJSON* root, const char* strKey, T& dstValue, char* errmsg);
+
+		/*
+		bool GetCJsonObjectValue(cJSON *root, const char* strKey, unsigned int& dstValue,    char* errmsg);
+		bool GetCJsonObjectValue(cJSON *root, const char* strKey, short& dstValue,    char* errmsg);
+		bool GetCJsonObjectValue(cJSON *root, const char* strKey, unsigned short& dstValue,    char* errmsg);
+		bool GetCJsonObjectValue(cJSON *root, const char* strKey, int& dstValue,    char* errmsg);
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, bool& dstValue, char* errmsg);
+
+		*/
+		bool GetCJsonObjectValue(cJSON* obj, int& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* obj, unsigned int& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, double& dstValue, char* errmsg);
+
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, CSimpleStringA& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, CSimpleStringW& dstValue, char* errmsg);
+		bool GetCJsonArraySize(cJSON* root, const char* strKey, int& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* root, const char* strKey, std::string& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* obj, CSimpleStringA& dstValue, char* errmsg);
+		bool GetCJsonObjectValue(cJSON* obj, CSimpleStringW& dstValue, char* errmsg);
+
+		int UTF8ToUnicode(char* input, CSimpleStringW& output);
+		void hexdump(const char* buf, const int num);
+	private:
+		CStructureInterpreter* mInterpreter;
+		std::map<int, entity_def_struct>* m_AckCallbackList;
+		std::map<int, std::vector<CMedthodInterface>*>* m_EventCallbackList;
+		CMessage m_DeserializeCache;
+		CMessage m_SerializeCache;	//存在脏数据可能
+		CSmartPointer<IEntityFunction> m_pFunc;
+	};
 }
 
 #endif

+ 8 - 8
Module/mod_chromium/CWebsocketServer.cpp

@@ -191,7 +191,7 @@ namespace Chromium {
 
 	void CWebsocketServer::deal_msg(std::string& payload, websocketpp::connection_hdl hdl)
 	{
-	boost::lock_guard<boost::mutex> lock(m_dealMsgLock);	//在buffer和json处理时,deal_msg会调用多次,导致transId存在重复可能
+		boost::lock_guard<boost::mutex> lock(m_dealMsgLock);	//在buffer和json处理时,deal_msg会调用多次,导致transId存在重复可能
 		DbgEx("deal_msg :%d, %s", payload.length(), payload.length() > 800 ? payload.substr(0, 800).append("...").c_str() : payload.c_str());
 		auto ret = this->m_serializer->JsonToBuffer(payload);
 		CMessage* p = ret.second;
@@ -287,7 +287,7 @@ namespace Chromium {
 			t_hdlArr[hdlPos] = pos++;
 
 
-	auto msgHandleFun = [&]() {
+		auto msgHandleFun = [&]() {
 			//DbgEx("CWebsocketServer -> message_handler");
 			std::string payload = msg->get_payload();
 			// proto convert here
@@ -324,10 +324,10 @@ namespace Chromium {
 
 
 			//DbgEx("Leave CWebsocketServer -> message_handler");
-			};
-	boost::thread dealMsgThread(msgHandleFun);
-	dealMsgThread.join();	
-}
+		};
+		boost::thread dealMsgThread(msgHandleFun);
+		dealMsgThread.join();
+	}
 
 	std::string CWebsocketServer::restroreTransId(std::string payLoad)
 	{
@@ -392,7 +392,7 @@ namespace Chromium {
 			{
 				Sleep(10000);
 				auto unlinkArr = m_esm->queryUnLinkSession();
-				if(unlinkArr.size() > 0)
+				if (unlinkArr.size() > 0)
 					DbgEx("try do_relink");
 				boost::lock_guard<boost::mutex> lock(m_dealMsgLock);
 #if (defined _WIN32 || defined _WIN64)
@@ -642,7 +642,7 @@ namespace Chromium {
 					{
 						DbgEx("Session with %s Make Failed, deal with record Msg:%d", ret.second.c_str(), msgArr.size());
 #if (defined _WIN32 || defined _WIN64)
-						for each(auto msg in msgArr)
+						for each (auto msg in msgArr)
 #else
 						for (auto msg : msgArr)
 #endif

+ 60 - 60
Module/mod_chromium/CWebsocketServer.h

@@ -16,72 +16,72 @@
 #include <memory>
 #include <vector>
 
-namespace Chromium{
-typedef websocketpp::server<websocketpp::config::asio> server;
-extern server m_wsserver;
+namespace Chromium {
+	typedef websocketpp::server<websocketpp::config::asio> server;
+	extern server m_wsserver;
 
-class CWebsocketServer : public ISocketCallback {
-public:
-	CWebsocketServer(const char* strPath, CEntityBase* m_pEntity);
-	~CWebsocketServer()
-	{
-		m_wsserver.stop();
-	}
-	static void stopServer(){
-		m_wsserver.stop();
-	}
+	class CWebsocketServer : public ISocketCallback {
+	public:
+		CWebsocketServer(const char* strPath, CEntityBase* m_pEntity);
+		~CWebsocketServer()
+		{
+			m_wsserver.stop();
+		}
+		static void stopServer() {
+			m_wsserver.stop();
+		}
 
-	void run();
+		void run();
 
-	// socket callbacks
-	void message_from_socket(CMessage& msg, unsigned int id);
-	bool isWebSocketSuceess() { return m_initSuccess; }
-	const std::map<unsigned, unsigned>& getNotifyPool() {
-		return m_notifyPool;
-	};
-	void do_send_notifyMsg(unsigned hdlID, unsigned transId, const std::string& reason, const std::string& errmsg, const std::string& rebootTime, const DWORD& dwSysError, const DWORD& dwUserCode);
-	//static server m_wsserver;
+		// socket callbacks
+		void message_from_socket(CMessage& msg, unsigned int id);
+		bool isWebSocketSuceess() { return m_initSuccess; }
+		const std::map<unsigned, unsigned>& getNotifyPool() {
+			return m_notifyPool;
+		};
+		void do_send_notifyMsg(unsigned hdlID, unsigned transId, const std::string& reason, const std::string& errmsg, const std::string& rebootTime, const DWORD& dwSysError, const DWORD& dwUserCode);
+		//static server m_wsserver;
 
-private:
-	void message_handler(websocketpp::connection_hdl hdl, server::message_ptr msg);
-	void deal_msg(std::string &payload, websocketpp::connection_hdl hdl);
-	void deal_webchromium_msg(std::string& payload, websocketpp::connection_hdl hdl, int messageType);
-	void deal_sessionBreakMsg(std::string& payload, websocketpp::connection_hdl hdl);
-	void open_handler(websocketpp::connection_hdl hdl);
-	void close_handler(websocketpp::connection_hdl hdl);
-	void do_run();
-	void init_websocket();
-	void init_entity_sessions();
-	void do_sendJson(std::string js, int hdlID, unsigned int id);
-	void do_sendJsonBroadcast(std::string js);
-	void WriteToFramework(CMessage* msg);
+	private:
+		void message_handler(websocketpp::connection_hdl hdl, server::message_ptr msg);
+		void deal_msg(std::string& payload, websocketpp::connection_hdl hdl);
+		void deal_webchromium_msg(std::string& payload, websocketpp::connection_hdl hdl, int messageType);
+		void deal_sessionBreakMsg(std::string& payload, websocketpp::connection_hdl hdl);
+		void open_handler(websocketpp::connection_hdl hdl);
+		void close_handler(websocketpp::connection_hdl hdl);
+		void do_run();
+		void init_websocket();
+		void init_entity_sessions();
+		void do_sendJson(std::string js, int hdlID, unsigned int id);
+		void do_sendJsonBroadcast(std::string js);
+		void WriteToFramework(CMessage* msg);
 #if(defined _WIN32 || defined _WIN64)
-	std::string string_to_utf8(const std::string &str);
+		std::string string_to_utf8(const std::string& str);
 #endif
-	void myTest();
-	void updateMsgPool(std::string entityName, std::string &payload, websocketpp::connection_hdl hdl);
-	void storeEntityWithCLass(std::string entityName, std::string entityClass);
-	std::pair<bool, std::string> getEntityClass(std::string entityName);
-	void do_sendJsonStartSession(std::string entityName, std::string entityClass);
-	void do_relink();
-	std::string restroreTransId(std::string payLoad);
-	void updateNotifyPool(unsigned hdl, unsigned transId);	//if transId == 0 , unregister the item, else insert a register
-	
+		void myTest();
+		void updateMsgPool(std::string entityName, std::string& payload, websocketpp::connection_hdl hdl);
+		void storeEntityWithCLass(std::string entityName, std::string entityClass);
+		std::pair<bool, std::string> getEntityClass(std::string entityName);
+		void do_sendJsonStartSession(std::string entityName, std::string entityClass);
+		void do_relink();
+		std::string restroreTransId(std::string payLoad);
+		void updateNotifyPool(unsigned hdl, unsigned transId);	//if transId == 0 , unregister the item, else insert a register
+
 
-private:
-	
-	CWSCodec* m_serializer;
-	CSocketClient* m_socket;
-	EntitySessionManager* m_esm;
-	boost::asio::io_service m_ios;
-	std::map<unsigned int,websocketpp::connection_hdl> m_connection_hdls;
-	std::map<std::string, std::vector<std::pair<websocketpp::connection_hdl, std::string>> > m_msg_pool;
-	std::map<std::string, std::string> m_entityAndClass;
-	//不知道为什么不能用map<string,map<>>,猜测应该是websocketpp::connection_hdl生成问题
-	CEntityBase* m_pEntity;
-	boost::mutex m_dealMsgLock;
-	bool m_initSuccess;
-	std::map<unsigned, unsigned> m_notifyPool; //hdl和notify transId对应
-};
+	private:
+
+		CWSCodec* m_serializer;
+		CSocketClient* m_socket;
+		EntitySessionManager* m_esm;
+		boost::asio::io_service m_ios;
+		std::map<unsigned int, websocketpp::connection_hdl> m_connection_hdls;
+		std::map<std::string, std::vector<std::pair<websocketpp::connection_hdl, std::string>> > m_msg_pool;
+		std::map<std::string, std::string> m_entityAndClass;
+		//不知道为什么不能用map<string,map<>>,猜测应该是websocketpp::connection_hdl生成问题
+		CEntityBase* m_pEntity;
+		boost::mutex m_dealMsgLock;
+		bool m_initSuccess;
+		std::map<unsigned, unsigned> m_notifyPool; //hdl和notify transId对应
+	};
 }
 #endif

+ 441 - 441
Module/mod_chromium/EntitySessionManager.cpp

@@ -7,516 +7,516 @@
 #include "../../Other/libpublicFun/publicFunExport.h"
 #include "boost/lexical_cast.hpp"
 
-namespace Chromium{
-
-static unsigned int m_global_transid = 0x0F000001;	//用于替换来自web的transId,用来和框架进行交互
-static unsigned int m_createSession_transId = 0x00F00001;	//用于建立本地session,为避免创建的sessionId重复
-
-auto createMapFun = []()->std::map<std::string, int> {
-	std::map<std::string, int> nullMap;
-	return nullMap;
-};
-
-std::map<std::string, int> EntitySessionManager::m_session_map = createMapFun();
-
-EntitySessionManager::EntitySessionManager(){
-	m_global_transid = 0x0F000001;
-	m_createSession_transId = 0x00F00001;
-}
-
-EntitySessionManager::~EntitySessionManager(){}
-
-std::pair<bool, int> EntitySessionManager::GetSessionIDByEntityName(std::string entityname){
-	auto it = m_session_map.find(entityname);
-	if (it == m_session_map.end())
-		return std::make_pair(false, -1);	// 发出 StartSession request
-	return std::make_pair(true, it->second);
-}
-
-
-int EntitySessionManager::MakeNewTransID(CMessage* msg, unsigned int hdlID){
-	WSClientReqInfo info;
-	info.transID = msg->getTransID();
-	info.hdlID = hdlID;
-	info.next = NULL;
-	m_trans_map.insert(std::pair<int, WSClientReqInfo>(m_global_transid, info));
-	return m_global_transid++;
-}
-
-std::pair<bool, int> EntitySessionManager::getSrcTransID(int newTransID)
-{
-	auto tmp = m_trans_map.find(newTransID);
-	if (tmp != m_trans_map.end())
-		return std::make_pair(true, tmp->second.transID);
-	else
+namespace Chromium {
+
+	static unsigned int m_global_transid = 0x0F000001;	//用于替换来自web的transId,用来和框架进行交互
+	static unsigned int m_createSession_transId = 0x00F00001;	//用于建立本地session,为避免创建的sessionId重复
+
+	auto createMapFun = []()->std::map<std::string, int> {
+		std::map<std::string, int> nullMap;
+		return nullMap;
+	};
+
+	std::map<std::string, int> EntitySessionManager::m_session_map = createMapFun();
+
+	EntitySessionManager::EntitySessionManager() {
+		m_global_transid = 0x0F000001;
+		m_createSession_transId = 0x00F00001;
+	}
+
+	EntitySessionManager::~EntitySessionManager() {}
+
+	std::pair<bool, int> EntitySessionManager::GetSessionIDByEntityName(std::string entityname) {
+		auto it = m_session_map.find(entityname);
+		if (it == m_session_map.end())
+			return std::make_pair(false, -1);	// 发出 StartSession request
+		return std::make_pair(true, it->second);
+	}
+
+
+	int EntitySessionManager::MakeNewTransID(CMessage* msg, unsigned int hdlID) {
+		WSClientReqInfo info;
+		info.transID = msg->getTransID();
+		info.hdlID = hdlID;
+		info.next = NULL;
+		m_trans_map.insert(std::pair<int, WSClientReqInfo>(m_global_transid, info));
+		return m_global_transid++;
+	}
+
+	std::pair<bool, int> EntitySessionManager::getSrcTransID(int newTransID)
 	{
-		DbgEx("can not find transId:%d, may be true:%s", newTransID, newTransID & 0xF00000 ? "true" : "false");
-		return std::make_pair(false, 0);
+		auto tmp = m_trans_map.find(newTransID);
+		if (tmp != m_trans_map.end())
+			return std::make_pair(true, tmp->second.transID);
+		else
+		{
+			DbgEx("can not find transId:%d, may be true:%s", newTransID, newTransID & 0xF00000 ? "true" : "false");
+			return std::make_pair(false, 0);
+		}
 	}
-}
 
-void EntitySessionManager::StoreSessionReq(int transID, std::string entityName){
-	m_session_ack_map.insert(std::pair<int, std::string>(transID, entityName));
-}
+	void EntitySessionManager::StoreSessionReq(int transID, std::string entityName) {
+		m_session_ack_map.insert(std::pair<int, std::string>(transID, entityName));
+	}
 
-std::vector<std::string> EntitySessionManager::queryUnLinkSession()
-{
-	std::vector<std::string> ret;
+	std::vector<std::string> EntitySessionManager::queryUnLinkSession()
+	{
+		std::vector<std::string> ret;
 #if (defined _WIN32 || defined _WIN64)
-	for each (auto it in m_session_map)
+		for each (auto it in m_session_map)
 #else
-	for (auto it : m_session_map)
+		for (auto it : m_session_map)
 #endif
+		{
+			if (it.second == -1)
+				ret.push_back(it.first);
+		}
+		return ret;
+	}
+
+	std::map<std::string, int> EntitySessionManager::queryAllSessionInfo()
 	{
-		if (it.second == -1)
-			ret.push_back(it.first);
+		return m_session_map;
 	}
-	return ret;
-}
-
-std::map<std::string, int> EntitySessionManager::queryAllSessionInfo()
-{
-	return m_session_map;
-}
-
-WSClientReqInfo* EntitySessionManager::ReduceOriginTransID(CMessage* msg){//获取transId对应的连接
-	int tansId = msg->getTransID();
-	std::map<int, WSClientReqInfo>::iterator it = m_trans_map.find(tansId);
-	if (it == m_trans_map.end())
-		return NULL;
-	return &(it->second);
-}
-
-void EntitySessionManager::RemoveAckListNode(int transid){
-	std::map<int, WSClientReqInfo>::iterator it = m_trans_map.find(transid);
-	if (it == m_trans_map.end())
-		return;
-	m_trans_map.erase(it);
-	return;
-}
 
-RequestProcessType EntitySessionManager::RequestProcess(CMessage* msg, std::string entityName, unsigned int hdlID){
-	if (msg == NULL)
-		return PROCESS_NOTHING;
-	RequestProcessType ret = PROCESS_NOTHING;
-
-	switch(msg->getMessageType() & 0x0000FFFF){
-	case Info:
-		ret = ProcessWithInfo(msg, entityName, hdlID);
-		break;
-	case BeginSession:
-		ret = ProcessWithBeginSession(msg, entityName, hdlID);
-		break;
-	case EndSession:
-		ret = ProcessWithEndSession(msg, entityName, hdlID);
-		break;
-	case Request:
-		ret = ProcessWithRequest(msg, entityName, hdlID);
-		break;
-	case Register:
-		ret = ProcessWithRegister(msg,entityName, hdlID);
-		break;
-	case Unregister:
-		ret = ProcessWithUnregister(msg, entityName, hdlID);
-		break;
-	case Event:
-		ret = PROCESS_SEND;
-		break;
-	case LogEventMsgType:
-		ret = PROCESS_SEND;
-		break;
-	case LogWarnMsgType:
-		return PROCESS_SEND;
-	case SetVarReq:
-		ret = ProcessWithSetVarReq(msg, entityName, hdlID);
-		break;
-	case GetVarReq:
-		ret = ProcessWithGetVarReq(msg, entityName, hdlID);
-		break;
-	case Broadcast:
-		return PROCESS_NOTHING;
-	default:
-		DbgEx("EntitySessionManager::RequestProcess switch default!");
-		ret = PROCESS_NOTHING;
+	WSClientReqInfo* EntitySessionManager::ReduceOriginTransID(CMessage* msg) {//获取transId对应的连接
+		int tansId = msg->getTransID();
+		std::map<int, WSClientReqInfo>::iterator it = m_trans_map.find(tansId);
+		if (it == m_trans_map.end())
+			return NULL;
+		return &(it->second);
+	}
+
+	void EntitySessionManager::RemoveAckListNode(int transid) {
+		std::map<int, WSClientReqInfo>::iterator it = m_trans_map.find(transid);
+		if (it == m_trans_map.end())
+			return;
+		m_trans_map.erase(it);
+		return;
 	}
 
-	StoreSessionReq(msg->getTransID(), entityName);
-	if (Request == (msg->getMessageType() & 0x0000FFFF))
-		msg->exchangeSessionIdAndTransId();
+	RequestProcessType EntitySessionManager::RequestProcess(CMessage* msg, std::string entityName, unsigned int hdlID) {
+		if (msg == NULL)
+			return PROCESS_NOTHING;
+		RequestProcessType ret = PROCESS_NOTHING;
+
+		switch (msg->getMessageType() & 0x0000FFFF) {
+		case Info:
+			ret = ProcessWithInfo(msg, entityName, hdlID);
+			break;
+		case BeginSession:
+			ret = ProcessWithBeginSession(msg, entityName, hdlID);
+			break;
+		case EndSession:
+			ret = ProcessWithEndSession(msg, entityName, hdlID);
+			break;
+		case Request:
+			ret = ProcessWithRequest(msg, entityName, hdlID);
+			break;
+		case Register:
+			ret = ProcessWithRegister(msg, entityName, hdlID);
+			break;
+		case Unregister:
+			ret = ProcessWithUnregister(msg, entityName, hdlID);
+			break;
+		case Event:
+			ret = PROCESS_SEND;
+			break;
+		case LogEventMsgType:
+			ret = PROCESS_SEND;
+			break;
+		case LogWarnMsgType:
+			return PROCESS_SEND;
+		case SetVarReq:
+			ret = ProcessWithSetVarReq(msg, entityName, hdlID);
+			break;
+		case GetVarReq:
+			ret = ProcessWithGetVarReq(msg, entityName, hdlID);
+			break;
+		case Broadcast:
+			return PROCESS_NOTHING;
+		default:
+			DbgEx("EntitySessionManager::RequestProcess switch default!");
+			ret = PROCESS_NOTHING;
+		}
 
-	return ret;
-}
+		StoreSessionReq(msg->getTransID(), entityName);
+		if (Request == (msg->getMessageType() & 0x0000FFFF))
+			msg->exchangeSessionIdAndTransId();
 
-RequestProcessType EntitySessionManager::ProcessWithInfo(CMessage* msg, std::string entityName, unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithInfo");
-	auto s = GetSessionIDByEntityName(entityName);
-	if (false == s.first || -1 == s.second)
-		return PROCESS_NOTHING;
-	msg->setSessionID(s.second, false);
-	return PROCESS_SEND;
-}
-
-void EntitySessionManager::updateBeginSessionTime(std::string entityName, bool doCleanSessionTime)
-{
-	time_t now_time = doCleanSessionTime ? 0 : time(NULL);	//doCleanSessionTime 会重置记录时间为0,5s内重复发起的beginSession能被接受
-	auto curSession = t_BeginSessionTime.find(entityName);
-	if (curSession == t_BeginSessionTime.end())
-		t_BeginSessionTime.insert(std::make_pair(entityName, now_time));
-	else
-		curSession->second = now_time;
-	//DbgEx("save BeginSession Time:%s, %d", entityName.c_str(), now_time);
-}
-
-bool EntitySessionManager::checkBeginSession(std::string entityName)
-{
-	time_t now_time = time(NULL);
-	auto curSession = t_BeginSessionTime.find(entityName);
-	if (curSession == t_BeginSessionTime.end() || curSession->second < now_time - 5)
-	{
-		DbgEx("checkBeginSession record begin session msg, oldTime:%lld, newTime:%lld", curSession != t_BeginSessionTime.end() ? curSession->second : -1, now_time);
-		return true;//5s内不重复发起session
+		return ret;
 	}
-	else
-		return false;
-}
 
-RequestProcessType EntitySessionManager::ProcessWithBeginSession(CMessage* msg, std::string entityName, unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithBeginSession");
-	auto s = GetSessionIDByEntityName(entityName);
-	if (s.first && -1 != s.second)
-		return PROCESS_FINDSESSION;
+	RequestProcessType EntitySessionManager::ProcessWithInfo(CMessage* msg, std::string entityName, unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithInfo");
+		auto s = GetSessionIDByEntityName(entityName);
+		if (false == s.first || -1 == s.second)
+			return PROCESS_NOTHING;
+		msg->setSessionID(s.second, false);
+		return PROCESS_SEND;
+	}
 
-	if (checkBeginSession(entityName))
+	void EntitySessionManager::updateBeginSessionTime(std::string entityName, bool doCleanSessionTime)
 	{
-		// 换transID 发送beginsession
-		int transID = MakeNewTransID(msg, hdlID);
-		msg->setTransID(transID);
-		updateBeginSessionTime(entityName);
-		return PROCESS_SEND;
+		time_t now_time = doCleanSessionTime ? 0 : time(NULL);	//doCleanSessionTime 会重置记录时间为0,5s内重复发起的beginSession能被接受
+		auto curSession = t_BeginSessionTime.find(entityName);
+		if (curSession == t_BeginSessionTime.end())
+			t_BeginSessionTime.insert(std::make_pair(entityName, now_time));
+		else
+			curSession->second = now_time;
+		//DbgEx("save BeginSession Time:%s, %d", entityName.c_str(), now_time);
 	}
-	else
-		return PROCESS_RECORDMSG;//5s内发起过session
-}
-
-RequestProcessType EntitySessionManager::ProcessWithEndSession(CMessage* msg, std::string entityName, 
-	unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithEndSession");
-	return PROCESS_NOTHING;
-}
-
-RequestProcessType EntitySessionManager::ProcessWithRequest(CMessage* msg, std::string entityName, 
-	unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithRequest");
-	auto it = m_session_map.find(entityName);
-	if (it == m_session_map.end() || -1 == it->second)
+
+	bool EntitySessionManager::checkBeginSession(std::string entityName)
 	{
-		DbgEx("no session found for entity : %s", UtfToGbk(entityName.c_str()).c_str());
-		return PROCESS_STARTSESSION;
+		time_t now_time = time(NULL);
+		auto curSession = t_BeginSessionTime.find(entityName);
+		if (curSession == t_BeginSessionTime.end() || curSession->second < now_time - 5)
+		{
+			DbgEx("checkBeginSession record begin session msg, oldTime:%lld, newTime:%lld", curSession != t_BeginSessionTime.end() ? curSession->second : -1, now_time);
+			return true;//5s内不重复发起session
+		}
+		else
+			return false;
 	}
-	msg->setSessionID(it->second, true);
-	msg->setTransID(MakeNewTransID(msg,hdlID));
 
-	return PROCESS_SEND;
-}
+	RequestProcessType EntitySessionManager::ProcessWithBeginSession(CMessage* msg, std::string entityName, unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithBeginSession");
+		auto s = GetSessionIDByEntityName(entityName);
+		if (s.first && -1 != s.second)
+			return PROCESS_FINDSESSION;
 
-RequestProcessType EntitySessionManager::ProcessWithRegister(CMessage* msg, std::string entityName, unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithRegister");
-	auto it = m_session_map.find(entityName);
-	if (it == m_session_map.end() || -1 == it->second)
-	{
-		DbgEx("no session found for entity : %s", UtfToGbk(entityName.c_str()).c_str());
-		return PROCESS_STARTSESSION;
+		if (checkBeginSession(entityName))
+		{
+			// 换transID 发送beginsession
+			int transID = MakeNewTransID(msg, hdlID);
+			msg->setTransID(transID);
+			updateBeginSessionTime(entityName);
+			return PROCESS_SEND;
+		}
+		else
+			return PROCESS_RECORDMSG;//5s内发起过session
 	}
 
-	auto _broadcast_it = m_broadcast_map.find(entityName);
-	if (_broadcast_it == m_broadcast_map.end())
-	{
-		// 尚未有客户端订阅过
-		int transid = MakeNewTransID(msg, hdlID);
-		msg->setTransID(transid);
-		m_broadcast_map.insert(std::pair<std::string, int>(entityName, transid));
-		return PROCESS_SEND;
+	RequestProcessType EntitySessionManager::ProcessWithEndSession(CMessage* msg, std::string entityName,
+		unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithEndSession");
+		return PROCESS_NOTHING;
 	}
-	
-	std::map<int, WSClientReqInfo>::iterator _trans_it = m_trans_map.find(_broadcast_it->second);
-	if (_trans_it == m_trans_map.end())
-	{
-		// 尚未有客户端订阅过
-		int transid = MakeNewTransID(msg, hdlID);
-		msg->setTransID(transid);
-		m_broadcast_map.insert(std::pair<std::string, int>(entityName, transid));
+
+	RequestProcessType EntitySessionManager::ProcessWithRequest(CMessage* msg, std::string entityName,
+		unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithRequest");
+		auto it = m_session_map.find(entityName);
+		if (it == m_session_map.end() || -1 == it->second)
+		{
+			DbgEx("no session found for entity : %s", UtfToGbk(entityName.c_str()).c_str());
+			return PROCESS_STARTSESSION;
+		}
+		msg->setSessionID(it->second, true);
+		msg->setTransID(MakeNewTransID(msg, hdlID));
+
 		return PROCESS_SEND;
 	}
-	// 已经有过订阅 在链表后加
-	WSClientReqInfo* pNode = &_trans_it->second;
-	if (pNode->hdlID == hdlID)
-	{
-		// 该客户端订阅过,避免重复订阅
-		return PROCESS_NOTHING;
-	}
-	while(pNode->next != NULL){
+
+	RequestProcessType EntitySessionManager::ProcessWithRegister(CMessage* msg, std::string entityName, unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithRegister");
+		auto it = m_session_map.find(entityName);
+		if (it == m_session_map.end() || -1 == it->second)
+		{
+			DbgEx("no session found for entity : %s", UtfToGbk(entityName.c_str()).c_str());
+			return PROCESS_STARTSESSION;
+		}
+
+		auto _broadcast_it = m_broadcast_map.find(entityName);
+		if (_broadcast_it == m_broadcast_map.end())
+		{
+			// 尚未有客户端订阅过
+			int transid = MakeNewTransID(msg, hdlID);
+			msg->setTransID(transid);
+			m_broadcast_map.insert(std::pair<std::string, int>(entityName, transid));
+			return PROCESS_SEND;
+		}
+
+		std::map<int, WSClientReqInfo>::iterator _trans_it = m_trans_map.find(_broadcast_it->second);
+		if (_trans_it == m_trans_map.end())
+		{
+			// 尚未有客户端订阅过
+			int transid = MakeNewTransID(msg, hdlID);
+			msg->setTransID(transid);
+			m_broadcast_map.insert(std::pair<std::string, int>(entityName, transid));
+			return PROCESS_SEND;
+		}
+		// 已经有过订阅 在链表后加
+		WSClientReqInfo* pNode = &_trans_it->second;
 		if (pNode->hdlID == hdlID)
 		{
 			// 该客户端订阅过,避免重复订阅
 			return PROCESS_NOTHING;
 		}
-		pNode = pNode->next;
-	}
-	// 该客户端从未订阅过                                                             
-	pNode->next = new WSClientReqInfo();
-	pNode->next->next = NULL;
-	pNode->next->hdlID = hdlID;
-	pNode->next->transID = msg->getTransID();
-	return PROCESS_NOTHING;
-}
-
-RequestProcessType EntitySessionManager::ProcessWithUnregister(CMessage* msg, std::string entityName, 
-	unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithUnregister");
-	std::map<std::string, int>::iterator _broadcast_it = m_broadcast_map.find(entityName);
-	if (_broadcast_it == m_broadcast_map.end())
-	{
-		// 没订阅过 不用反注册
-		return PROCESS_NOTHING;
-	}
-	// 订阅过 找到对应的客户端节点 删掉
-	std::map<int, WSClientReqInfo>::iterator _trans_it = m_trans_map.find(_broadcast_it->second);
-	if (_trans_it == m_trans_map.end())
-	{
-		// 没找到对应transid 理论上不可能
-		m_broadcast_map.erase(_broadcast_it);
+		while (pNode->next != NULL) {
+			if (pNode->hdlID == hdlID)
+			{
+				// 该客户端订阅过,避免重复订阅
+				return PROCESS_NOTHING;
+			}
+			pNode = pNode->next;
+		}
+		// 该客户端从未订阅过                                                             
+		pNode->next = new WSClientReqInfo();
+		pNode->next->next = NULL;
+		pNode->next->hdlID = hdlID;
+		pNode->next->transID = msg->getTransID();
 		return PROCESS_NOTHING;
 	}
-	// 查找节点删掉
-	WSClientReqInfo* pNode = &_trans_it->second;
-	if (pNode->hdlID == hdlID)
-	{
-		// 找到了就删掉
-		if (pNode->next == NULL)
+
+	RequestProcessType EntitySessionManager::ProcessWithUnregister(CMessage* msg, std::string entityName,
+		unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithUnregister");
+		std::map<std::string, int>::iterator _broadcast_it = m_broadcast_map.find(entityName);
+		if (_broadcast_it == m_broadcast_map.end())
 		{
-			// 只有一个节点 就全都删掉
-			m_trans_map.erase(_trans_it);
+			// 没订阅过 不用反注册
+			return PROCESS_NOTHING;
+		}
+		// 订阅过 找到对应的客户端节点 删掉
+		std::map<int, WSClientReqInfo>::iterator _trans_it = m_trans_map.find(_broadcast_it->second);
+		if (_trans_it == m_trans_map.end())
+		{
+			// 没找到对应transid 理论上不可能
 			m_broadcast_map.erase(_broadcast_it);
-			return PROCESS_SEND;
+			return PROCESS_NOTHING;
 		}
-		// 后面有其他节点
-		WSClientReqInfo* tp = pNode->next;
-		pNode->transID = tp->transID;
-		pNode->hdlID = tp->hdlID;
-		pNode->next = tp->next;
-		free(tp);
-		return PROCESS_NOTHING;
-	}
-	// 首个节点不匹配时
-	WSClientReqInfo* pHead = pNode;
-	pNode = pNode->next;
-	while(pNode != NULL){
+		// 查找节点删掉
+		WSClientReqInfo* pNode = &_trans_it->second;
 		if (pNode->hdlID == hdlID)
 		{
-			pHead->next = pNode->next;
-			free(pNode);
+			// 找到了就删掉
+			if (pNode->next == NULL)
+			{
+				// 只有一个节点 就全都删掉
+				m_trans_map.erase(_trans_it);
+				m_broadcast_map.erase(_broadcast_it);
+				return PROCESS_SEND;
+			}
+			// 后面有其他节点
+			WSClientReqInfo* tp = pNode->next;
+			pNode->transID = tp->transID;
+			pNode->hdlID = tp->hdlID;
+			pNode->next = tp->next;
+			free(tp);
 			return PROCESS_NOTHING;
 		}
-		pHead = pNode;
+		// 首个节点不匹配时
+		WSClientReqInfo* pHead = pNode;
 		pNode = pNode->next;
+		while (pNode != NULL) {
+			if (pNode->hdlID == hdlID)
+			{
+				pHead->next = pNode->next;
+				free(pNode);
+				return PROCESS_NOTHING;
+			}
+			pHead = pNode;
+			pNode = pNode->next;
+		}
+		return PROCESS_NOTHING;
 	}
-	return PROCESS_NOTHING;
-}
-
-RequestProcessType EntitySessionManager::ProcessWithSetVarReq(CMessage* msg, std::string entityName, 
-	unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithSetVarReq");
-	msg->setTransID(MakeNewTransID(msg, hdlID));
-	return PROCESS_SEND;
-}
-
-RequestProcessType EntitySessionManager::ProcessWithGetVarReq(CMessage* msg, std::string entityName, 
-	unsigned int hdlID){
-	DbgEx("EntitySessionManager::ProcessWithGetVarReq");
-	msg->setTransID(MakeNewTransID(msg, hdlID));
-	return PROCESS_SEND;
-}
-
-
-std::pair<int, std::string>  EntitySessionManager::GetStartSessionRequest(std::string entityname, std::string className){
-	auto curSession = m_createSession_transId++;
-	std::string js = "{\"messageType\":1,\"transID\":" + std::to_string((LONGLONG)curSession) + ",\"functionName\":\"\",\"entity\":\"";
-	js.append(entityname.append("\",\"class\":\""));
-	js.append(className.append("\"}"));
-	DbgEx("start sessionRequest: %s", UtfToGbk(js.c_str()).c_str());
-	return std::make_pair(curSession, js);
-}
-
-std::pair<int, std::string> EntitySessionManager::GetAllSessionRequest(int transId)
-{
-	std::map<std::string, std::string> sessionInfo;
-#if (defined _WIN32 || defined _WIN64)
-	for each (auto it in m_session_map)
-#else
-	for (auto it : m_session_map)
-#endif
-	{
-		if (it.second > 0)
-			sessionInfo.insert(std::make_pair(it.first, boost::lexical_cast<std::string>(it.second)));
-	}
-	auto sessionJson = generateJsonStr(sessionInfo);
-	if (sessionJson.first)
-	{
-		char sessionJs[10240] = "";
-		sprintf(sessionJs, "{\"messageType\":%d,\"transID\":%d,\"%s\":%s}", 16, transId, PARAMLIST_HEAD, sessionJson.second.c_str());
-		return std::make_pair(true, sessionJs);
+
+	RequestProcessType EntitySessionManager::ProcessWithSetVarReq(CMessage* msg, std::string entityName,
+		unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithSetVarReq");
+		msg->setTransID(MakeNewTransID(msg, hdlID));
+		return PROCESS_SEND;
 	}
-	return std::make_pair(false, "error generateJsonStr");
-}
-
-std::string EntitySessionManager::GetStartSessionAck(CMessage* msg, std::string entityname){
-	auto s = GetSessionIDByEntityName(entityname);
-	std::string sessionId = std::to_string((LONGLONG)s.second);
-	std::string transid = std::to_string((LONGLONG)msg->getTransID());
-	std::string js = "{\"messageType\":5,\"errorCode\":\"\",\"errorMsg\":\"\",\"sessionID\":";
-	js.append(sessionId.c_str());
-	js.append(",\"transID\":");
-	js.append(transid.c_str());
-	js.append("}");
-	return js;
-}
-
-std::string EntitySessionManager::UpdateSessionMap(int transid, int sessionId)
-{
-	auto it = m_session_ack_map.find(transid);
-	if (it == m_session_ack_map.end())
-		return "";
-	DoSessionUpdate(it->second, sessionId);
-	return it->second;
-}
-
-EntitySessionManager& EntitySessionManager::DoSessionUpdate(std::string entityname, int session)
-{
-	auto sessionIt = m_session_map.find(entityname);
-	bool needChange = true;
-	if (m_session_map.end() != sessionIt)
-	{
 
-		if (sessionIt->second == session)
-			needChange = false;
-		m_session_map.erase(sessionIt);
+	RequestProcessType EntitySessionManager::ProcessWithGetVarReq(CMessage* msg, std::string entityName,
+		unsigned int hdlID) {
+		DbgEx("EntitySessionManager::ProcessWithGetVarReq");
+		msg->setTransID(MakeNewTransID(msg, hdlID));
+		return PROCESS_SEND;
 	}
-	if(needChange)
-		DbgEx("update sessionId :<%s><%d>", entityname.c_str(), session);
-	m_session_map.insert(std::make_pair(entityname, session));
-	return *this;
-}
-
-AckProcessType EntitySessionManager::ProcessWithAck(CMessage* msg, unsigned int &hdlID){
-	int globalID = msg->getTransID();
-	WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
-	if (NULL == p)
-		return ACKPROCESS_NOTHING;// 异常 应该不会有这种情况出现
-
-	msg->setTransID(p->transID);
-	hdlID = p->hdlID;
-	UpdateSessionMap(globalID, msg->getSessionID());
-
-	//RemoveAckListNode(globalID);
-	if (hdlID == 0){
-		return ACKPROCESS_NOTHING;
+
+
+	std::pair<int, std::string>  EntitySessionManager::GetStartSessionRequest(std::string entityname, std::string className) {
+		auto curSession = m_createSession_transId++;
+		std::string js = "{\"messageType\":1,\"transID\":" + std::to_string((LONGLONG)curSession) + ",\"functionName\":\"\",\"entity\":\"";
+		js.append(entityname.append("\",\"class\":\""));
+		js.append(className.append("\"}"));
+		DbgEx("start sessionRequest: %s", UtfToGbk(js.c_str()).c_str());
+		return std::make_pair(curSession, js);
 	}
-	
-	return ACKPROCESS_SEND;
-}
 
-std::pair<bool, std::string> EntitySessionManager::DoSessionRemove(unsigned int session)
-{
+	std::pair<int, std::string> EntitySessionManager::GetAllSessionRequest(int transId)
+	{
+		std::map<std::string, std::string> sessionInfo;
 #if (defined _WIN32 || defined _WIN64)
-	for each (auto it in m_session_map)
+		for each (auto it in m_session_map)
 #else
-	for (auto it : m_session_map)
+		for (auto it : m_session_map)
 #endif
-	{
-		if (it.second == session)
 		{
-			DoSessionUpdate(it.first, -1);
-			return std::make_pair(true, it.first);
+			if (it.second > 0)
+				sessionInfo.insert(std::make_pair(it.first, boost::lexical_cast<std::string>(it.second)));
+		}
+		auto sessionJson = generateJsonStr(sessionInfo);
+		if (sessionJson.first)
+		{
+			char sessionJs[10240] = "";
+			sprintf(sessionJs, "{\"messageType\":%d,\"transID\":%d,\"%s\":%s}", 16, transId, PARAMLIST_HEAD, sessionJson.second.c_str());
+			return std::make_pair(true, sessionJs);
 		}
+		return std::make_pair(false, "error generateJsonStr");
+	}
+
+	std::string EntitySessionManager::GetStartSessionAck(CMessage* msg, std::string entityname) {
+		auto s = GetSessionIDByEntityName(entityname);
+		std::string sessionId = std::to_string((LONGLONG)s.second);
+		std::string transid = std::to_string((LONGLONG)msg->getTransID());
+		std::string js = "{\"messageType\":5,\"errorCode\":\"\",\"errorMsg\":\"\",\"sessionID\":";
+		js.append(sessionId.c_str());
+		js.append(",\"transID\":");
+		js.append(transid.c_str());
+		js.append("}");
+		return js;
 	}
-	return std::make_pair(false, "");
-}
-
-std::pair<AckProcessType, std::string> EntitySessionManager::AskProcessSession(CMessage* msg, unsigned int &hdlID) {
-	int globalID = msg->getTransID();
-	/*
-	替换真实的transId
-	*/
-
-	if (globalID & 0xF00000)
-		hdlID = 0;	////本地transId,无记录的链接
-	else
+
+	std::string EntitySessionManager::UpdateSessionMap(int transid, int sessionId)
 	{
+		auto it = m_session_ack_map.find(transid);
+		if (it == m_session_ack_map.end())
+			return "";
+		DoSessionUpdate(it->second, sessionId);
+		return it->second;
+	}
+
+	EntitySessionManager& EntitySessionManager::DoSessionUpdate(std::string entityname, int session)
+	{
+		auto sessionIt = m_session_map.find(entityname);
+		bool needChange = true;
+		if (m_session_map.end() != sessionIt)
+		{
+
+			if (sessionIt->second == session)
+				needChange = false;
+			m_session_map.erase(sessionIt);
+		}
+		if (needChange)
+			DbgEx("update sessionId :<%s><%d>", entityname.c_str(), session);
+		m_session_map.insert(std::make_pair(entityname, session));
+		return *this;
+	}
+
+	AckProcessType EntitySessionManager::ProcessWithAck(CMessage* msg, unsigned int& hdlID) {
+		int globalID = msg->getTransID();
 		WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
 		if (NULL == p)
-			return std::make_pair(ACKPROCESS_NOTHING, "can not find WSClient!");// 异常 应该不会有这种情况出现
+			return ACKPROCESS_NOTHING;// 异常 应该不会有这种情况出现
+
 		msg->setTransID(p->transID);
 		hdlID = p->hdlID;
+		UpdateSessionMap(globalID, msg->getSessionID());
+
+		//RemoveAckListNode(globalID);
+		if (hdlID == 0) {
+			return ACKPROCESS_NOTHING;
+		}
+
+		return ACKPROCESS_SEND;
 	}
-	auto sessionId = msg->getSessionID();
-	auto entityName = UpdateSessionMap(globalID, sessionId);
-	if ("" == entityName)
-		return std::make_pair(ACKPROCESS_NOTHING, "Update SessionMap error!");
 
-	updateBeginSessionTime(entityName, -1 == sessionId);	//clean the begin Sessiontime
-	return std::make_pair(ACKPROCESS_SEND, entityName);
-}
+	std::pair<bool, std::string> EntitySessionManager::DoSessionRemove(unsigned int session)
+	{
+#if (defined _WIN32 || defined _WIN64)
+		for each (auto it in m_session_map)
+#else
+		for (auto it : m_session_map)
+#endif
+		{
+			if (it.second == session)
+			{
+				DoSessionUpdate(it.first, -1);
+				return std::make_pair(true, it.first);
+			}
+		}
+		return std::make_pair(false, "");
+	}
 
+	std::pair<AckProcessType, std::string> EntitySessionManager::AskProcessSession(CMessage* msg, unsigned int& hdlID) {
+		int globalID = msg->getTransID();
+		/*
+		替换真实的transId
+		*/
 
+		if (globalID & 0xF00000)
+			hdlID = 0;	////本地transId,无记录的链接
+		else
+		{
+			WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
+			if (NULL == p)
+				return std::make_pair(ACKPROCESS_NOTHING, "can not find WSClient!");// 异常 应该不会有这种情况出现
+			msg->setTransID(p->transID);
+			hdlID = p->hdlID;
+		}
+		auto sessionId = msg->getSessionID();
+		auto entityName = UpdateSessionMap(globalID, sessionId);
+		if ("" == entityName)
+			return std::make_pair(ACKPROCESS_NOTHING, "Update SessionMap error!");
 
-AckProcessType EntitySessionManager::ProcessWithRecvEvent(CMessage* msg, unsigned int &hdlID){
-	WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
-	if (NULL == p)
-		return ACKPROCESS_NOTHING;// 异常 应该不会有这种情况出现
+		updateBeginSessionTime(entityName, -1 == sessionId);	//clean the begin Sessiontime
+		return std::make_pair(ACKPROCESS_SEND, entityName);
+	}
 
-	msg->setTransID(p->transID);
-	hdlID = p->hdlID;
-	if (hdlID == 0){
-		return ACKPROCESS_NOTHING;
+
+
+	AckProcessType EntitySessionManager::ProcessWithRecvEvent(CMessage* msg, unsigned int& hdlID) {
+		WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
+		if (NULL == p)
+			return ACKPROCESS_NOTHING;// 异常 应该不会有这种情况出现
+
+		msg->setTransID(p->transID);
+		hdlID = p->hdlID;
+		if (hdlID == 0) {
+			return ACKPROCESS_NOTHING;
+		}
+		return ACKPROCESS_SEND;
 	}
-	return ACKPROCESS_SEND;
-}
-
-AckProcessType EntitySessionManager::AskProcessEvent(CMessage *msg, std::vector<std::pair<int, int>> &transIdandHdlIDArr)
-{
-	WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
-	if (NULL == p)
-		return ACKPROCESS_NOTHING;
-	transIdandHdlIDArr.clear();
-	while (NULL != p)
+
+	AckProcessType EntitySessionManager::AskProcessEvent(CMessage* msg, std::vector<std::pair<int, int>>& transIdandHdlIDArr)
 	{
-		if (0 != p->transID)
-			transIdandHdlIDArr.push_back(std::make_pair(p->transID, p->hdlID));		
-		p = p->next;
+		WSClientReqInfoStruct* p = ReduceOriginTransID(msg);
+		if (NULL == p)
+			return ACKPROCESS_NOTHING;
+		transIdandHdlIDArr.clear();
+		while (NULL != p)
+		{
+			if (0 != p->transID)
+				transIdandHdlIDArr.push_back(std::make_pair(p->transID, p->hdlID));
+			p = p->next;
+		}
+		if (transIdandHdlIDArr.size() > 0)
+			return ACKPROCESS_SEND;
+		else
+			return ACKPROCESS_NOTHING;
 	}
-	if (transIdandHdlIDArr.size() > 0)
-		return ACKPROCESS_SEND;
-	else
-		return ACKPROCESS_NOTHING;
-}
-
-AckProcessType EntitySessionManager::AckProcess(CMessage* msg, unsigned int &hdlID){
-	AckProcessType ret = ACKPROCESS_NOTHING;
-	switch(msg->getMessageType()){
-	case Event:
-		ProcessWithRecvEvent(msg, hdlID);
-		break;
-	case SessionAck:
-	case RequestAck:
-	case GetVarAck:
-	case SetVarAck:
-		ret = ProcessWithAck(msg, hdlID);
-		break;
-	default:
-		DbgEx("AckProcess default!");
-		ret = ACKPROCESS_NOTHING;
+
+	AckProcessType EntitySessionManager::AckProcess(CMessage* msg, unsigned int& hdlID) {
+		AckProcessType ret = ACKPROCESS_NOTHING;
+		switch (msg->getMessageType()) {
+		case Event:
+			ProcessWithRecvEvent(msg, hdlID);
+			break;
+		case SessionAck:
+		case RequestAck:
+		case GetVarAck:
+		case SetVarAck:
+			ret = ProcessWithAck(msg, hdlID);
+			break;
+		default:
+			DbgEx("AckProcess default!");
+			ret = ACKPROCESS_NOTHING;
+		}
+		return ret;
 	}
-	return ret;
-}
 
 }

+ 66 - 66
Module/mod_chromium/EntitySessionManager.h

@@ -9,81 +9,81 @@
 // #include "CSocketClient.h"
 // #include "CWSCodec.h"
 
-namespace Chromium{
+namespace Chromium {
 
-enum RequestProcessType{
-	PROCESS_NOTHING,
-	PROCESS_SEND,
-	PROCESS_STARTSESSION,
-	PROCESS_FINDSESSION,
-	PROCESS_RECORDMSG
-};
+	enum RequestProcessType {
+		PROCESS_NOTHING,
+		PROCESS_SEND,
+		PROCESS_STARTSESSION,
+		PROCESS_FINDSESSION,
+		PROCESS_RECORDMSG
+	};
 
-enum AckProcessType{
-	ACKPROCESS_NOTHING,
-	ACKPROCESS_SEND
-};
+	enum AckProcessType {
+		ACKPROCESS_NOTHING,
+		ACKPROCESS_SEND
+	};
 
-typedef struct WSClientReqInfoStruct{
-	int transID;
-	unsigned int hdlID;
-	struct WSClientReqInfoStruct* next;
-}WSClientReqInfo;
+	typedef struct WSClientReqInfoStruct {
+		int transID;
+		unsigned int hdlID;
+		struct WSClientReqInfoStruct* next;
+	}WSClientReqInfo;
 
-class EntitySessionManager{
-public:
-//	EntitySessionManager(CSocketClient* pSocket, CWSCodec* serializer);
-	EntitySessionManager();
-	~EntitySessionManager();
+	class EntitySessionManager {
+	public:
+		//	EntitySessionManager(CSocketClient* pSocket, CWSCodec* serializer);
+		EntitySessionManager();
+		~EntitySessionManager();
 
-	std::pair<int, std::string> GetStartSessionRequest(std::string entityname, std::string className);	//返回分配的transId和生成的beginSession串
-	std::pair<int, std::string> GetAllSessionRequest(int transId);
-	RequestProcessType RequestProcess(CMessage* msg, std::string entityName, 
-							unsigned int hdlID);
-	AckProcessType AckProcess(CMessage* msg, unsigned int &hdlID);
-	AckProcessType AskProcessEvent(CMessage *msg, std::vector<std::pair<int, int>> &transIdandHdlIDArr);
-	std::pair<AckProcessType, std::string> AskProcessSession(CMessage* msg, unsigned int &hdlID);
-	std::string GetStartSessionAck(CMessage* msg, std::string entityname);
-	std::pair<bool, std::string> DoSessionRemove(unsigned int session);
-	EntitySessionManager& DoSessionUpdate(std::string entityname, int session);
+		std::pair<int, std::string> GetStartSessionRequest(std::string entityname, std::string className);	//返回分配的transId和生成的beginSession串
+		std::pair<int, std::string> GetAllSessionRequest(int transId);
+		RequestProcessType RequestProcess(CMessage* msg, std::string entityName,
+			unsigned int hdlID);
+		AckProcessType AckProcess(CMessage* msg, unsigned int& hdlID);
+		AckProcessType AskProcessEvent(CMessage* msg, std::vector<std::pair<int, int>>& transIdandHdlIDArr);
+		std::pair<AckProcessType, std::string> AskProcessSession(CMessage* msg, unsigned int& hdlID);
+		std::string GetStartSessionAck(CMessage* msg, std::string entityname);
+		std::pair<bool, std::string> DoSessionRemove(unsigned int session);
+		EntitySessionManager& DoSessionUpdate(std::string entityname, int session);
 
-	int MakeNewTransID(CMessage* msg, unsigned int hdlID);
-	std::pair<bool, int> getSrcTransID(int newTransID);
-	WSClientReqInfo* ReduceOriginTransID(CMessage* msg);
+		int MakeNewTransID(CMessage* msg, unsigned int hdlID);
+		std::pair<bool, int> getSrcTransID(int newTransID);
+		WSClientReqInfo* ReduceOriginTransID(CMessage* msg);
 
-	void updateBeginSessionTime(std::string entityName, bool doCleanSessionTime = false);
-	bool checkBeginSession(std::string entityName);
-	void StoreSessionReq(int transid, std::string entityname);
-	std::vector<std::string> queryUnLinkSession();
-	static std::map<std::string, int> queryAllSessionInfo();
-private:
-	
-	static std::map<std::string, int> m_session_map;	// entity name -> session id
-	std::map<int, WSClientReqInfo> m_trans_map;	// real trans id -> client trans id & client ws connection handler	
-	std::map<int, std::string> m_session_ack_map;	// trans id -> entity name	
-	std::map<std::string, int> m_broadcast_map;	// broadcast list
-	std::map<std::string, time_t> t_BeginSessionTime;
-//	CSocketClient* m_socket;
-//	CWSCodec* m_serializer;
-private:
-	std::pair<bool, int> GetSessionIDByEntityName(std::string entityname);
-	
-	void RemoveAckListNode(int transid);
-	std::string UpdateSessionMap(int transid, int sessionId);	//更新session表并返回更新的实体名
+		void updateBeginSessionTime(std::string entityName, bool doCleanSessionTime = false);
+		bool checkBeginSession(std::string entityName);
+		void StoreSessionReq(int transid, std::string entityname);
+		std::vector<std::string> queryUnLinkSession();
+		static std::map<std::string, int> queryAllSessionInfo();
+	private:
 
-	// process with requests
-	RequestProcessType ProcessWithInfo(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithBeginSession(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithEndSession(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithRequest(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithRegister(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithUnregister(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithSetVarReq(CMessage* msg, std::string entityName, unsigned int hdlID);
-	RequestProcessType ProcessWithGetVarReq(CMessage* msg, std::string entityName, unsigned int hdlID);
+		static std::map<std::string, int> m_session_map;	// entity name -> session id
+		std::map<int, WSClientReqInfo> m_trans_map;	// real trans id -> client trans id & client ws connection handler	
+		std::map<int, std::string> m_session_ack_map;	// trans id -> entity name	
+		std::map<std::string, int> m_broadcast_map;	// broadcast list
+		std::map<std::string, time_t> t_BeginSessionTime;
+		//	CSocketClient* m_socket;
+		//	CWSCodec* m_serializer;
+	private:
+		std::pair<bool, int> GetSessionIDByEntityName(std::string entityname);
 
-	AckProcessType ProcessWithAck(CMessage* msg, unsigned int &hdlID);
-	AckProcessType ProcessWithRecvEvent(CMessage* msg, unsigned int &hdlID);
-};
+		void RemoveAckListNode(int transid);
+		std::string UpdateSessionMap(int transid, int sessionId);	//更新session表并返回更新的实体名
+
+		// process with requests
+		RequestProcessType ProcessWithInfo(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithBeginSession(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithEndSession(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithRequest(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithRegister(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithUnregister(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithSetVarReq(CMessage* msg, std::string entityName, unsigned int hdlID);
+		RequestProcessType ProcessWithGetVarReq(CMessage* msg, std::string entityName, unsigned int hdlID);
+
+		AckProcessType ProcessWithAck(CMessage* msg, unsigned int& hdlID);
+		AckProcessType ProcessWithRecvEvent(CMessage* msg, unsigned int& hdlID);
+	};
 
 }
 

+ 8 - 8
Module/mod_chromium/ISocketCallback.h

@@ -2,14 +2,14 @@
 #define ISocketCallback_h_
 
 #include "CMessage.h"
-namespace Chromium{
-class ISocketCallback{
-public:
-	virtual void message_from_socket(CMessage& msg, unsigned int id) = 0;
-	virtual ~ISocketCallback(){
-		//nothing to do
-	}
-};
+namespace Chromium {
+	class ISocketCallback {
+	public:
+		virtual void message_from_socket(CMessage& msg, unsigned int id) = 0;
+		virtual ~ISocketCallback() {
+			//nothing to do
+		}
+	};
 }
 
 #endif

+ 1 - 1
Module/mod_chromium/MessageType.h

@@ -23,7 +23,7 @@ enum MessageType : int
 	Broadcast = 15,		//broadcast msg to other entity
 	GetSession = 16,	//chromium session info
 	// 0x00 00 00 00 - 0x00 00 FF FF	 for web to binary, communicate with other entity
-	
+
 
 	// 0x00 01 00 00 - 0x00 01 FF FF	 for web to chromium
 	WEB_CHROMIUM_MSG_BEGIN = 0x00010000,

+ 91 - 91
Module/mod_chromium/baseEx.cpp

@@ -20,36 +20,36 @@ void* logProducer = nullptr;
 #if (defined _WIN32 || defined _WIN64)
 #else
 typedef enum {
-    LOG_TYPE_SYSTEM/*系统日志*/, LOG_TYPE_USER//用户日志
+	LOG_TYPE_SYSTEM/*系统日志*/, LOG_TYPE_USER//用户日志
 }LOG_TYPE_E;
 
 typedef enum {
-    LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARN, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL
+	LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARN, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL
 }LOG_LEVEL_E;
 #endif
 
 struct cefclientLog {
-    LOG_LEVEL_E m_level;
-    LOG_TYPE_E m_type;
-    char m_logTime[NOR_LEN];
-    char m_filename[NOR_LEN];
-    int m_filePos;
-    char m_cefLog[MAX_CEFLOG_LEN];
-    cefclientLog(LOG_LEVEL_E t_level, LOG_TYPE_E t_type, const char* t_logTime, const char* t_filename, int t_filePos, const char* t_cefLog) {
-        m_level = t_level;
-        m_type = t_type;
-        strcpy_s(m_logTime, NOR_LEN, t_logTime);
-        strcpy_s(m_filename, NOR_LEN, t_filename);
-        m_filePos = t_filePos;
-        strcpy_s(m_cefLog, MAX_CEFLOG_LEN, t_cefLog);
-    }
-    cefclientLog()
-        :m_level(LOG_LEVEL_DEBUG), m_type(LOG_TYPE_SYSTEM), m_filePos(0)
-    {
-        memset(m_logTime, 0, NOR_LEN);
-        memset(m_filename, 0, NOR_LEN);
-        memset(m_cefLog, 0, MAX_CEFLOG_LEN);
-    }
+	LOG_LEVEL_E m_level;
+	LOG_TYPE_E m_type;
+	char m_logTime[NOR_LEN];
+	char m_filename[NOR_LEN];
+	int m_filePos;
+	char m_cefLog[MAX_CEFLOG_LEN];
+	cefclientLog(LOG_LEVEL_E t_level, LOG_TYPE_E t_type, const char* t_logTime, const char* t_filename, int t_filePos, const char* t_cefLog) {
+		m_level = t_level;
+		m_type = t_type;
+		strcpy_s(m_logTime, NOR_LEN, t_logTime);
+		strcpy_s(m_filename, NOR_LEN, t_filename);
+		m_filePos = t_filePos;
+		strcpy_s(m_cefLog, MAX_CEFLOG_LEN, t_cefLog);
+	}
+	cefclientLog()
+		:m_level(LOG_LEVEL_DEBUG), m_type(LOG_TYPE_SYSTEM), m_filePos(0)
+	{
+		memset(m_logTime, 0, NOR_LEN);
+		memset(m_filename, 0, NOR_LEN);
+		memset(m_cefLog, 0, MAX_CEFLOG_LEN);
+	}
 };
 
 #define CEF_GUID "{5ED197CD-9D64-4D10-9839-2A0773B6F5D2}"
@@ -61,14 +61,14 @@ void DbgEx(const char* str, ...)
 	va_start(arg, str);
 
 #if (defined _WIN32 || defined _WIN64)
-    int n = _vscprintf(str, arg);
-    char* buf = (char*)_alloca(n + 1);
-    vsprintf(buf, str, arg);
-    auto modifyStr = CSimpleString::Format("<%d>--%s", GetCurrentThreadId(), buf);
-    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", modifyStr.GetData());
+	int n = _vscprintf(str, arg);
+	char* buf = (char*)_alloca(n + 1);
+	vsprintf(buf, str, arg);
+	auto modifyStr = CSimpleString::Format("<%d>--%s", GetCurrentThreadId(), buf);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", modifyStr.GetData());
 #else
-    auto modifyStr = CSimpleString::Format("%s", str);
-    vDbg(modifyStr.GetData(), arg);
+	auto modifyStr = CSimpleString::Format("%s", str);
+	vDbg(modifyStr.GetData(), arg);
 #endif
 
 	va_end(arg);
@@ -99,16 +99,16 @@ bool SYSTEM_ON(std::string cmdLine, bool isWait)
 		return exitCode;
 	};
 
-    std::string strCmd, strPar;
-    strPar = std::string("/c ") + cmdLine;
-    strCmd = std::string("cmd ") + strPar;
+	std::string strCmd, strPar;
+	strPar = std::string("/c ") + cmdLine;
+	strCmd = std::string("cmd ") + strPar;
 
-    if (isWait)
-        return waitSystem("cmd.exe", strPar, FALSE);
-    else {
-        unsigned int result = WinExec(strCmd.c_str(), SW_HIDE);
-        return result > 31 ? true : false;
-    }
+	if (isWait)
+		return waitSystem("cmd.exe", strPar, FALSE);
+	else {
+		unsigned int result = WinExec(strCmd.c_str(), SW_HIDE);
+		return result > 31 ? true : false;
+	}
 #else
 	system(cmdLine.c_str());
 	return true;
@@ -130,15 +130,15 @@ DWORD SaveCefclientLog(std::string magicStr)
 		{
 			cefclientLog t_data;
 #if (defined _WIN32 || defined _WIN64)
-            unsigned int t_recvSize = 0;
+			unsigned int t_recvSize = 0;
 #else
-            unsigned long t_recvSize = 0;
+			unsigned long t_recvSize = 0;
 #endif
-            unsigned int t_priority = 0;
-            mq.receive(&t_data, sizeof(cefclientLog), t_recvSize, t_priority);
-            std::string source = std::string(t_data.m_filename) + "(" + std::to_string((ULONGLONG)t_data.m_filePos) + ")";
+			unsigned int t_priority = 0;
+			mq.receive(&t_data, sizeof(cefclientLog), t_recvSize, t_priority);
+			std::string source = std::string(t_data.m_filename) + "(" + std::to_string((ULONGLONG)t_data.m_filePos) + ")";
 #if (defined _WIN32 || defined _WIN64)
-            DbgWithLink(t_data.m_level, t_data.m_type).setSourceType(source.c_str()).withLogProducer(logProducer).withExtendLog(false)(t_data.m_cefLog);
+			DbgWithLink(t_data.m_level, t_data.m_type).setSourceType(source.c_str()).withLogProducer(logProducer).withExtendLog(false)(t_data.m_cefLog);
 #else
 #endif
 			if (sizeof(cefclientLog) != t_recvSize)
@@ -164,41 +164,41 @@ DWORD SaveCefclientLog(std::string magicStr)
 
 std::vector<std::string> find_files(const std::string srcPath, const std::string fileName)
 {
-    static boost::xpressive::sregex_compiler rc;
-    if (!rc[fileName].regex_id())
-    {
-        std::string str = boost::algorithm::replace_all_copy(
-            boost::algorithm::replace_all_copy(fileName, ".", "\\."), "*", ".*");
-        rc[fileName] = rc.compile(str);
-    }
-
-    std::vector<std::string> ret;
-
-    if (!boost::filesystem::exists(srcPath) || !boost::filesystem::is_directory(srcPath))
-        return ret;
-
-    typedef boost::filesystem::recursive_directory_iterator rd_iterator;
-    rd_iterator end;
-    for (rd_iterator pos(srcPath); pos != end; ++pos)
-    {
-        if (!boost::filesystem::is_directory(*pos) && boost::xpressive::regex_match(pos->path().filename().string(), rc[fileName]))
-            ret.push_back(pos->path().string());
-    }
-
-    return ret;
+	static boost::xpressive::sregex_compiler rc;
+	if (!rc[fileName].regex_id())
+	{
+		std::string str = boost::algorithm::replace_all_copy(
+			boost::algorithm::replace_all_copy(fileName, ".", "\\."), "*", ".*");
+		rc[fileName] = rc.compile(str);
+	}
+
+	std::vector<std::string> ret;
+
+	if (!boost::filesystem::exists(srcPath) || !boost::filesystem::is_directory(srcPath))
+		return ret;
+
+	typedef boost::filesystem::recursive_directory_iterator rd_iterator;
+	rd_iterator end;
+	for (rd_iterator pos(srcPath); pos != end; ++pos)
+	{
+		if (!boost::filesystem::is_directory(*pos) && boost::xpressive::regex_match(pos->path().filename().string(), rc[fileName]))
+			ret.push_back(pos->path().string());
+	}
+
+	return ret;
 }
 
 std::string generateTimeStr(bool isSimple)
 {
-    auto tt = boost::chrono::system_clock::to_time_t(boost::chrono::system_clock::now());
-    struct tm* ptm = localtime(&tt);
-    char date[60] = { 0 };
-    if (isSimple)
-        sprintf(date, "%02d%02d%02d", (int)ptm->tm_hour, (int)ptm->tm_min, (int)ptm->tm_sec);
-    else
-        sprintf(date, "%d-%02d-%02d-%02d:%02d:%02d", (int)ptm->tm_year + 1900, (int)ptm->tm_mon + 1, (int)ptm->tm_mday, (int)ptm->tm_hour, (int)ptm->tm_min, (int)ptm->tm_sec);
-
-    return std::string(date);
+	auto tt = boost::chrono::system_clock::to_time_t(boost::chrono::system_clock::now());
+	struct tm* ptm = localtime(&tt);
+	char date[60] = { 0 };
+	if (isSimple)
+		sprintf(date, "%02d%02d%02d", (int)ptm->tm_hour, (int)ptm->tm_min, (int)ptm->tm_sec);
+	else
+		sprintf(date, "%d-%02d-%02d-%02d:%02d:%02d", (int)ptm->tm_year + 1900, (int)ptm->tm_mon + 1, (int)ptm->tm_mday, (int)ptm->tm_hour, (int)ptm->tm_min, (int)ptm->tm_sec);
+
+	return std::string(date);
 }
 
 //singal,退出函数
@@ -213,29 +213,29 @@ std::string g_backtracePath = "";
 
 void seg_signal_handler(int signum)
 {
-    //boost::stacktrace::safe_dump_to(g_backtracePath.c_str());
-    Dbg("receive signal:%d, seg_signal_handler", signum);
-    auto dumpArr = boost::stacktrace::stacktrace().as_vector();
-    for (auto i = 0; i < dumpArr.size(); i++)
-        Dbg("SEG[%d]%X---%s(%s-%d)", i, dumpArr[i].address(), dumpArr[i].name().c_str(), dumpArr[i].source_file().c_str(), dumpArr[i].source_line());
-
-    Chromium::CModTools::get_mutable_instance().killAllChromium();
-    Chromium::CWebsocketServer::stopServer();
-    signal(signum, SIG_DFL);
-    raise(signum);
+	//boost::stacktrace::safe_dump_to(g_backtracePath.c_str());
+	Dbg("receive signal:%d, seg_signal_handler", signum);
+	auto dumpArr = boost::stacktrace::stacktrace().as_vector();
+	for (auto i = 0; i < dumpArr.size(); i++)
+		Dbg("SEG[%d]%X---%s(%s-%d)", i, dumpArr[i].address(), dumpArr[i].name().c_str(), dumpArr[i].source_file().c_str(), dumpArr[i].source_line());
+
+	Chromium::CModTools::get_mutable_instance().killAllChromium();
+	Chromium::CWebsocketServer::stopServer();
+	signal(signum, SIG_DFL);
+	raise(signum);
 }
 
 void normal_signal_handle(int signum)
 {
-    Dbg("receive signal:%d, normal_signal_handle", signum);
-    signal(signum, SIG_DFL);
-    raise(signum);
+	Dbg("receive signal:%d, normal_signal_handle", signum);
+	signal(signum, SIG_DFL);
+	raise(signum);
 }
 
 void set_traceback_path(std::string path)
 {
-    g_backtracePath = path + "/mod_chromium/" + generateTimeStr(true) + "_chromium_backtrace.dump";
-    Dbg("set_traceback_path %s", g_backtracePath.c_str());
+	g_backtracePath = path + "/mod_chromium/" + generateTimeStr(true) + "_chromium_backtrace.dump";
+	Dbg("set_traceback_path %s", g_backtracePath.c_str());
 }
 #endif
 

+ 50 - 47
Module/mod_chromium/mod_chromium.cpp

@@ -209,32 +209,33 @@ namespace Chromium {
 				}
 
 				GetFunction()->GetSystemStaticInfo(m_sysInfo);
-
 				if (!IsConfigMode()) {
-				
-                    CSmartPointer<IConfigInfo> spConfig;
-                    if (Error_Succeed == GetFunction()->OpenConfig(Config_CenterSetting, spConfig)) {
-                        auto webMaskKey = CSimpleString::Format("WebMask_%s", m_sysInfo.strMachineType.GetData());
-                        CSimpleString webMaskStr;
-                        if (Error_Succeed == spConfig->ReadConfigValue("Chromium", webMaskKey.GetData(), webMaskStr)) {
-                            auto maskArr = webMaskStr.Split('|');
-                            for (int i = 0; i < maskArr.GetCount(); i++) {
-                                auto trimStr = maskArr[i].Trim();
-                                if (!trimStr.Compare("ad", true))
-                                    m_runAd = true;
-                                else if (!trimStr.Compare("main", true))
-                                    m_runMain = true;
-                                else if (!trimStr.Compare("extend", true))
-                                    m_runExtend = true;
-                                else if (!trimStr.Compare("login", true))
-                                    m_runLogin = true;
-                                else if (!trimStr.Compare("with_browser", true))
-                                    m_withBrowser = true;
-								else if (!trimStr.Compare("with_min", true))
-									m_withMin = true;
-								else if (!trimStr.Compare("with_close", true))
-									m_withClose = true;
-                            }
+				CSmartPointer<IConfigInfo> spConfig;
+				if (Error_Succeed == GetFunction()->OpenConfig(Config_CenterSetting, spConfig))//特别坑,这个OpenConfig返回一直都是success
+				{
+					auto webMaskKey = CSimpleString::Format("WebMask_%s", m_sysInfo.strMachineType.GetData());
+					CSimpleString webMaskStr;
+					if (Error_Succeed == spConfig->ReadConfigValue("Chromium", webMaskKey.GetData(), webMaskStr))
+					{
+						auto maskArr = webMaskStr.Split('|');
+						for (int i = 0; i < maskArr.GetCount(); i++)
+						{
+							auto trimStr = maskArr[i].Trim();
+							if (!trimStr.Compare("ad", true))
+								m_runAd = true;
+							else if (!trimStr.Compare("main", true))
+								m_runMain = true;
+							else if (!trimStr.Compare("extend", true))
+								m_runExtend = true;
+							else if (!trimStr.Compare("login", true))
+								m_runLogin = true;
+							else if (!trimStr.Compare("with_browser", true))
+								m_withBrowser = true;
+							else if (!trimStr.Compare("with_min", true))
+								m_withMin = true;
+							else if (!trimStr.Compare("with_close", true))
+								m_withClose = true;
+						}
 						DbgEx("MachineType: %s, find %s, readStr:%s, m_runAd:%d, m_runMain:%d, m_runExtend:%d, m_runLogin:%d, m_withBrowser:%d, with_min:%d, with_close:%d",
 							m_sysInfo.strMachineType.GetData(), webMaskKey.GetData(), webMaskStr.GetData(), m_runAd, m_runMain, m_runExtend, m_runLogin, m_withBrowser
 						,m_withMin, m_withClose);
@@ -243,26 +244,28 @@ namespace Chromium {
 							CModTools::get_mutable_instance().setWithMin(m_withMin);
 						if (m_withClose)
 							CModTools::get_mutable_instance().setWithClose(m_withClose);
-                        } else
-                            DbgEx("can not find %s, use default", webMaskKey.GetData());
-                    }
-					if (!m_runAd && !m_runMain && !m_runExtend && !m_withBrowser && !CModTools::get_mutable_instance().IsConfigWork())
+					}
+					else
+						DbgEx("can not find %s, use default", webMaskKey.GetData());
+				}
+				if (!m_runAd && !m_runMain && !m_runExtend && !m_withBrowser && !CModTools::get_mutable_instance().IsConfigWork())
+				{
+					DbgEx("can not open centerSetting, maybe fault");
+					if (!(m_sysInfo.strMachineType.IsEndWith("PAD", true) || m_sysInfo.strMachineType.IsEndWith("Stand2S", true)))
 					{
-						DbgEx("can not open centerSetting, maybe fault");
-						if (!(m_sysInfo.strMachineType.IsEndWith("PAD", true) || m_sysInfo.strMachineType.IsEndWith("Stand2S", true)))
-						{
-							m_withBrowser = true;
-							DbgEx("since is %s, so m_withBrowser:%d", m_sysInfo.strMachineType.GetData(), m_withBrowser);
-						}
-
+						m_withBrowser = true;
+						DbgEx("since is %s, so m_withBrowser:%d", m_sysInfo.strMachineType.GetData(), m_withBrowser);
 					}
+
+				}
 #if (defined _WIN32 || defined _WIN64)
-					if (!logProducer)
-						logProducer = create_log_producer_storage("cefclient", "0", "");
+				if (!logProducer)
+					logProducer = create_log_producer_storage("cefclient", "0", "");
 #endif
-					std::string magicStr = CModTools::get_mutable_instance().getMagicStr();
-					boost::thread(boost::bind(SaveCefclientLog, magicStr)).detach();				
-				}
+
+				std::string magicStr = CModTools::get_mutable_instance().getMagicStr();
+				boost::thread(boost::bind(SaveCefclientLog, magicStr)).detach();
+		}
 	}
 
 	bool CChromiumEntity::OnPreStart_socketStart(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext)
@@ -290,7 +293,7 @@ namespace Chromium {
 		ErrorCodeEnum Error;
 
 		//与browser进行交互所必须,移除browser的机型不需要订阅browser相关
-		if(m_withBrowser)
+		if (m_withBrowser)
 		{
 			if (Error_Succeed != (Error = GetFunction()->SubscribeBroadcast("IEBrowser", "CustomerCmd", this, m_uidBrowserListenser))) {
 				DbgEx("subscribe browser CustomerCmd failed!");
@@ -359,11 +362,11 @@ namespace Chromium {
 			/** Z开头标识终端配种模式 [Gifur@20211017]*/
 		    if ('A' != t_terminalState[0] &&  'Z' != t_terminalState[0])
 			{
-				if('X' == t_terminalState[0])
+				if ('X' == t_terminalState[0])
 				{
 					DbgEx("do not begin accessAuth, terminalStage X, do nothing.");
 				}
-				else if(!m_withBrowser)
+				else if (!m_withBrowser)
 				{
 					auto openRet = CModTools::get_mutable_instance().StartChromiumBrowser(ERR_PAGE_REASON::breakdown,
 						std::tuple <std::string, std::string>(m_sysInfo.strTerminalID.GetData(), generateTimeStr()));
@@ -372,9 +375,9 @@ namespace Chromium {
 			}
 			else
 				openMainPage();
-				
+
 		}
-		
+
 		return true;
 	}
 
@@ -423,7 +426,7 @@ namespace Chromium {
 		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
-	bool CChromiumEntity::CheckIsCardStore() {		
+	bool CChromiumEntity::CheckIsCardStore() {
 		return m_sysInfo.strMachineType.IsEndWith("CardStore", true) || m_sysInfo.strMachineType.IsEndWith("CardPrinter", true);
 	}
 

+ 3 - 3
Module/mod_chromium/mod_chromium.h

@@ -135,7 +135,7 @@ namespace Chromium {
 			const DWORD dwSysError, const DWORD dwUserCode, const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
 			const CAutoArray<DWORD>& Param, const char* pszEntityName, const char* pszModuleName, const char* pszMessage);
 #endif
-		
+
 
 		virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
 
@@ -145,7 +145,7 @@ namespace Chromium {
 
 		void checkUrlStartTime();
 
-		void OnPreStart_Init(CAutoArray<CSimpleStringA> &strArgs, CSmartPointer<ITransactionContext> &pTransactionContext);
+		void OnPreStart_Init(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
 		bool OnPreStart_socketStart(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
 		bool OnPreStart_register(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
 		bool OnPreStart_openWeb(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
@@ -159,7 +159,7 @@ namespace Chromium {
 			//SP_MSG_HANDLE_NS(HealthManager, TradeManage, OnTradeManage)
 			//SP_MSG_HANDLE_NS_EX(HealthManager, TerminalManager, HealthManager::TerminalManager, OnTerminalManage)
 			//SP_END_ENTITY_MSG()
-		SP_END_MSG_DISPATCH_MAP()
+			SP_END_MSG_DISPATCH_MAP()
 
 	};
 

+ 55 - 55
Module/mod_chromium/portCheck/portCheck.cpp

@@ -17,73 +17,73 @@
 #if (defined _WIN32 || defined _WIN64)
 bool checkHttpActive(const char* httpUrl)
 {
-    TCHAR szHostName[128];
-    TCHAR szUrlPath[256];
-    URL_COMPONENTS crackedURL = { 0 };
-    crackedURL.dwStructSize = sizeof(URL_COMPONENTS);
-    crackedURL.lpszHostName = szHostName;
-    crackedURL.dwHostNameLength = ARRAYSIZE(szHostName);
-    crackedURL.lpszUrlPath = szUrlPath;
-    crackedURL.dwUrlPathLength = ARRAYSIZE(szUrlPath);
-    InternetCrackUrl(httpUrl, (DWORD)strlen(httpUrl), 0, &crackedURL);
+	TCHAR szHostName[128];
+	TCHAR szUrlPath[256];
+	URL_COMPONENTS crackedURL = { 0 };
+	crackedURL.dwStructSize = sizeof(URL_COMPONENTS);
+	crackedURL.lpszHostName = szHostName;
+	crackedURL.dwHostNameLength = ARRAYSIZE(szHostName);
+	crackedURL.lpszUrlPath = szUrlPath;
+	crackedURL.dwUrlPathLength = ARRAYSIZE(szUrlPath);
+	InternetCrackUrl(httpUrl, (DWORD)strlen(httpUrl), 0, &crackedURL);
 
-    HINTERNET hInternet = InternetOpen("Microsoft InternetExplorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
-    if (hInternet == NULL)
-        return false;
+	HINTERNET hInternet = InternetOpen("Microsoft InternetExplorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
+	if (hInternet == NULL)
+		return false;
 
-    HINTERNET hHttpSession = InternetConnect(hInternet, crackedURL.lpszHostName, crackedURL.nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
-    if (hHttpSession == NULL)
-    {
-        InternetCloseHandle(hInternet);
-        return false;
-    }
+	HINTERNET hHttpSession = InternetConnect(hInternet, crackedURL.lpszHostName, crackedURL.nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
+	if (hHttpSession == NULL)
+	{
+		InternetCloseHandle(hInternet);
+		return false;
+	}
 
-    HINTERNET hHttpRequest = HttpOpenRequest(hHttpSession, "GET", crackedURL.lpszUrlPath, NULL, "", NULL, 0, 0);
-    if (hHttpRequest == NULL)
-    {
-        InternetCloseHandle(hHttpSession);
-        InternetCloseHandle(hInternet);
-        return false;
-    }
+	HINTERNET hHttpRequest = HttpOpenRequest(hHttpSession, "GET", crackedURL.lpszUrlPath, NULL, "", NULL, 0, 0);
+	if (hHttpRequest == NULL)
+	{
+		InternetCloseHandle(hHttpSession);
+		InternetCloseHandle(hInternet);
+		return false;
+	}
 
-    /**
-     * 查询http状态码(这一步不是必须的),但是HttpSendRequest()必须要调用
-     */
+	/**
+	 * 查询http状态码(这一步不是必须的),但是HttpSendRequest()必须要调用
+	 */
 
-    DWORD dwRetCode = 0;
-    DWORD dwSizeOfRq = sizeof(DWORD);
-    if (!HttpSendRequest(hHttpRequest, NULL, 0, NULL, 0) ||
-        !HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL)
-        || dwRetCode >= 400)
-    {
-        InternetCloseHandle(hHttpRequest);
-        InternetCloseHandle(hHttpSession);
-        InternetCloseHandle(hInternet);
+	DWORD dwRetCode = 0;
+	DWORD dwSizeOfRq = sizeof(DWORD);
+	if (!HttpSendRequest(hHttpRequest, NULL, 0, NULL, 0) ||
+		!HttpQueryInfo(hHttpRequest, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwRetCode, &dwSizeOfRq, NULL)
+		|| dwRetCode >= 400)
+	{
+		InternetCloseHandle(hHttpRequest);
+		InternetCloseHandle(hHttpSession);
+		InternetCloseHandle(hInternet);
 
-        return false;
-    }
-    InternetCloseHandle(hHttpRequest);
-    InternetCloseHandle(hHttpSession);
+		return false;
+	}
+	InternetCloseHandle(hHttpRequest);
+	InternetCloseHandle(hHttpSession);
 
-    return true;
+	return true;
 }
 #else
 bool checkHttpActive(const char* httpUrl)
 {
-    requests::Request request;
-    requests::Url url(httpUrl);
+	requests::Request request;
+	requests::Url url(httpUrl);
 
-    try
-    {
-        // 发起 HTTP 请求,阻塞
-        auto resp = request.get(url);
-        return true;
-    }
-    catch (requests::Exception& e)
-    {
-        std::cout << e.what() << std::endl;
-    }
-    return false;
+	try
+	{
+		// 发起 HTTP 请求,阻塞
+		auto resp = request.get(url);
+		return true;
+	}
+	catch (requests::Exception& e)
+	{
+		std::cout << e.what() << std::endl;
+	}
+	return false;
 }
 
 #endif

+ 1 - 1
Module/mod_chromium/portCheck/portCheck.h

@@ -1,2 +1,2 @@
 
-bool checkHttpActive(const char *httpUrl);
+bool checkHttpActive(const char* httpUrl);

+ 1 - 1
Module/mod_chromium/processControl.cpp

@@ -112,7 +112,7 @@ std::tuple<bool, DWORD, HANDLE, HANDLE> startProcessInJob(std::string program, s
 	startupInfo.wShowWindow = SW_HIDE;
 
 	BOOL retVal = false;
-	if(args.length() == 0)
+	if (args.length() == 0)
 	{
 		retVal = ::CreateProcessA(NULL, const_cast<char*>(program.c_str()), NULL, NULL, FALSE,
 			CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &startupInfo, &processInfo);

+ 39 - 39
Module/mod_chromium/url_encoder.h

@@ -7,49 +7,49 @@
 #include <iomanip>
 
 const char kUnreservedChar[] = {
-    //0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, // 2
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 3
-      0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 5
-      0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
-      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, // 7
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // F
+	//0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, // 2
+	  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 3
+	  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
+	  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 5
+	  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
+	  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, // 7
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
+	  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // F
 };
 
 class UrlEncoder {
 public:
-    static inline void Encode(const std::string& in, std::string* out, bool uppercase = false) {
-        std::stringstream ss;
-
-        for (std::string::const_iterator it = in.begin(); it != in.end(); ++it) {
-            if (kUnreservedChar[*it]) {
-                ss << *it;
-            }
-            else {
-                ss << '%' << std::setfill('0') << std::hex;
-                if (uppercase) ss << std::uppercase;
-                ss << (int)*it;
-            }
-        }
-
-        out->assign(ss.str());
-    }
-
-    static inline std::string Encode(const std::string& in, bool uppercase = false) {
-        std::string out;
-        Encode(in, &out, uppercase);
-        return out;
-    }
+	static inline void Encode(const std::string& in, std::string* out, bool uppercase = false) {
+		std::stringstream ss;
+
+		for (std::string::const_iterator it = in.begin(); it != in.end(); ++it) {
+			if (kUnreservedChar[*it]) {
+				ss << *it;
+			}
+			else {
+				ss << '%' << std::setfill('0') << std::hex;
+				if (uppercase) ss << std::uppercase;
+				ss << (int)*it;
+			}
+		}
+
+		out->assign(ss.str());
+	}
+
+	static inline std::string Encode(const std::string& in, bool uppercase = false) {
+		std::string out;
+		Encode(in, &out, uppercase);
+		return out;
+	}
 
 
 private:

+ 63 - 63
Module/mod_chromium/uuid4.cpp

@@ -20,85 +20,85 @@
 static uint64_t seed[2];
 
 
-static uint64_t xorshift128plus(uint64_t *s) {
-  /* http://xorshift.di.unimi.it/xorshift128plus.c */
-  uint64_t s1 = s[0];
-  const uint64_t s0 = s[1];
-  s[0] = s0;
-  s1 ^= s1 << 23;
-  s[1] = s1 ^ s0 ^ (s1 >> 18) ^ (s0 >> 5);
-  return s[1] + s0;
+static uint64_t xorshift128plus(uint64_t* s) {
+	/* http://xorshift.di.unimi.it/xorshift128plus.c */
+	uint64_t s1 = s[0];
+	const uint64_t s0 = s[1];
+	s[0] = s0;
+	s1 ^= s1 << 23;
+	s[1] = s1 ^ s0 ^ (s1 >> 18) ^ (s0 >> 5);
+	return s[1] + s0;
 }
 
 
 int uuid4_init(void) {
 #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
-  int res;
-  FILE *fp = fopen("/dev/urandom", "rb");
-  if (!fp) {
-    return UUID4_EFAILURE;
-  }
-  res = fread(seed, 1, sizeof(seed), fp);
-  fclose(fp);
-  if ( res != sizeof(seed) ) {
-    return UUID4_EFAILURE;
-  }
+	int res;
+	FILE* fp = fopen("/dev/urandom", "rb");
+	if (!fp) {
+		return UUID4_EFAILURE;
+	}
+	res = fread(seed, 1, sizeof(seed), fp);
+	fclose(fp);
+	if (res != sizeof(seed)) {
+		return UUID4_EFAILURE;
+	}
 
 #elif defined(_WIN32)
-  int res;
-  HCRYPTPROV hCryptProv;
-  res = CryptAcquireContext(
-    &hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
-  if (!res) {
-    return UUID4_EFAILURE;
-  }
-  res = CryptGenRandom(hCryptProv, (DWORD) sizeof(seed), (PBYTE) seed);
-  CryptReleaseContext(hCryptProv, 0);
-  if (!res) {
-    return UUID4_EFAILURE;
-  }
+	int res;
+	HCRYPTPROV hCryptProv;
+	res = CryptAcquireContext(
+		&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
+	if (!res) {
+		return UUID4_EFAILURE;
+	}
+	res = CryptGenRandom(hCryptProv, (DWORD)sizeof(seed), (PBYTE)seed);
+	CryptReleaseContext(hCryptProv, 0);
+	if (!res) {
+		return UUID4_EFAILURE;
+	}
 
 #else
-  #error "unsupported platform"
+#error "unsupported platform"
 #endif
-  return UUID4_ESUCCESS;
+	return UUID4_ESUCCESS;
 }
 
 
-void uuid4_generate(char *dst) {
-  static const char *template1 = "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx";
-  static const char *chars = "0123456789abcdef";
-  union { unsigned char b[16]; uint64_t word[2]; } s;
-  const char *p;
-  int i, n;
-  /* get random */
-  s.word[0] = xorshift128plus(seed);
-  s.word[1] = xorshift128plus(seed);
-  /* build string */
-  p = template1;
-  i = 0;
-  while (*p) {
-    n = s.b[i >> 1];
-    n = (i & 1) ? (n >> 4) : (n & 0xf);
-    switch (*p) {
-      case 'x'  : *dst = chars[n];              i++;  break;
-      case 'y'  : *dst = chars[(n & 0x3) + 8];  i++;  break;
-      default   : *dst = *p;
-    }
-    dst++, p++;
-  }
-  *dst = '\0';
+void uuid4_generate(char* dst) {
+	static const char* template1 = "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx";
+	static const char* chars = "0123456789abcdef";
+	union { unsigned char b[16]; uint64_t word[2]; } s;
+	const char* p;
+	int i, n;
+	/* get random */
+	s.word[0] = xorshift128plus(seed);
+	s.word[1] = xorshift128plus(seed);
+	/* build string */
+	p = template1;
+	i = 0;
+	while (*p) {
+		n = s.b[i >> 1];
+		n = (i & 1) ? (n >> 4) : (n & 0xf);
+		switch (*p) {
+		case 'x': *dst = chars[n];              i++;  break;
+		case 'y': *dst = chars[(n & 0x3) + 8];  i++;  break;
+		default: *dst = *p;
+		}
+		dst++, p++;
+	}
+	*dst = '\0';
 }
 
 std::string uuid4_generate(int len)
 {
-    char buf[UUID4_LEN];
+	char buf[UUID4_LEN];
 
-    uuid4_init();
-    uuid4_generate(buf);
-    std::string result = buf;
-    if (len > 0 && len <= 32)
-        return result.substr(0, len);
-    else
-        return "";
+	uuid4_init();
+	uuid4_generate(buf);
+	std::string result = buf;
+	if (len > 0 && len <= 32)
+		return result.substr(0, len);
+	else
+		return "";
 }

+ 3 - 3
Module/mod_chromium/uuid4.h

@@ -14,12 +14,12 @@
 #include <string>
 
 enum {
-  UUID4_ESUCCESS =  0,
-  UUID4_EFAILURE = -1
+	UUID4_ESUCCESS = 0,
+	UUID4_EFAILURE = -1
 };
 
 int  uuid4_init(void);
-void uuid4_generate(char *dst);
+void uuid4_generate(char* dst);
 
 std::string uuid4_generate(int len);
 

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
addin/res/ManagerDesktop/Include/layer.js


+ 19 - 0
addin/res/ManagerDesktop/css/ininPsd.css

@@ -271,6 +271,9 @@ nav ul li:nth-child(5)::before{
 	/* padding: 0 30px; */
 	
 }
+.errPage .logo{
+	width: 32%;
+}
 
 .errPage .coverBg {
     background: rgba(0, 0, 0, 0.5);
@@ -379,4 +382,20 @@ nav ul li:nth-child(5)::before{
 
 #resetPsd, #minimize{
 	display: none;
+}
+
+@media screen and (max-width:1300px) {
+	.errPage .logo{
+		width: 30%;
+	}
+	nav ul li{
+		padding: 15px 20px;
+	}
+	nav ul li::before {
+    width: 25px;
+    height: 25px;
+	}
+	.fz_24 {
+    font-size: 20px;
+	}
 }

+ 40 - 10
addin/res/ManagerDesktop/errPage.html

@@ -10,7 +10,7 @@
 	</head>
 	<body class="errPage">
 		<nav>
-			<div style="width: 32%;">
+			<div class="logo">
 				<img width="100%" src="./images/logo_cmb.png" />
 			</div>
 			<ul>
@@ -24,7 +24,7 @@
 
 		<p class="fz_32" id="RestartTxt"></p>
 		<div class="imgDiv">
-			<img id="AuthFailBg" src="./images/close.png" />
+			<img id="AuthFailBg" src="./images/close.png" onerror="javascript:this.src='./images/close.png'" />
 		</div>
 		<div class="terminal-time">
 			<span class="fz_32" id="TerminalNo"></span>
@@ -52,11 +52,11 @@
 				<h5 class="fz_24">下载集中配置</h5>
 				<div class="rows">
 					<label for="configAddr">集中配置地址</label>
-					<input type="text" name="configAddr" onfocus="En26Focus()" placeholder="请输入..." onblur="onblurAddr('config')" />
+					<input type="text" name="configAddr" placeholder="请输入..." onblur="onblurAddr('config')" />
 				</div>
 				<div class="rows">
 					<label for="configPort">集中配置端口</label>
-					<input type="number" name="configPoint" onfocus="NumberFocus()" onblur="UnFocus()" placeholder="请输入..." />
+					<input type="number" name="configPoint" placeholder="请输入..." />
 				</div>
 				<button class="btn-blue" onclick="downLoad()">开始下载</button>
 			</div>
@@ -65,19 +65,19 @@
 				<h5 class="fz_24">下载主密钥</h5>
 				<div class="rows">
 					<label for="accessAddr">准入服务地址</label>
-					<input type="text" name="accessAddr" onfocus="En26Focus()" placeholder="请输入..." onblur="onblurAddr('access')" />
+					<input type="text" name="accessAddr" placeholder="请输入..." onblur="onblurAddr('access')" />
 				</div>
 				<div class="rows">
 					<label for="accessPort">准入服务端口</label>
-					<input type="number" name="accessPort" onfocus="NumberFocus()" onblur="UnFocus()" placeholder="请输入..." />
+					<input type="number" name="accessPort"  placeholder="请输入..." />
 				</div>
 				<div class="rows">
 					<label for="account">分行维护用户</label>
-					<input type="text" name="account" onfocus="En26Focus()" onblur="UnFocus()" placeholder="请输入..." />
+					<input type="text" name="account" placeholder="请输入..." />
 				</div>
 				<div class="rows">
 					<label for="password">分行用户密码</label>
-					<input type="password" name="password" onfocus="En26Focus()" onblur="UnFocus()" placeholder="请输入..." />
+					<input type="password" name="password" maxlength="8" placeholder="请输入..." />
 				</div>
 				<div class="btn">
 					<button class="btn-blue" onclick="ResetRSA()">重置设备密钥</button>
@@ -129,7 +129,7 @@
 			</div>
 		</div>
 	</body>
-	<script type="text/javascript" src="Include/LsyCookie.js" ></script>
+	<script type="text/javascript" src="Include/LsyCookie.js"></script>
 	<script type="text/javascript" src="js/common.js"></script>
 	<script type="text/javascript" src="js/websocket.js"></script>
 	<script type="text/javascript" src="js/webSocketBase.js"></script>
@@ -139,7 +139,37 @@
 	<script type="text/javascript" src="js/errorCodeEnum.js"></script>
 	<script type="text/javascript" src="js/entityService.js"></script>
 	<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
-	<script type="text/javascript" src="Include/non-ie-interface.js"></script> 
+	<!-- <script type="text/javascript" src="Include/layer.js"></script> -->
+	<script>
+					console.log('!window.ActiveXObject,',!!window.ActiveXObject,'ActiveXObject' in window)
+
+		if(!('ActiveXObject' in window)){
+			document.write('<script type="text/javascript" src="Include/non-ie-interface.js"><\/script>')
+			$("input[name='configAddr']").focus(function(){
+				NumberFocus()
+			})
+			$("input[name='configPoint']").focus(function(){
+				NumberFocus()
+			})
+			$("input[name='accessAddr']").focus(function(){
+				NumberFocus()
+			})
+			$("input[name='accessPort']").focus(function(){
+				NumberFocus()
+			})
+			$("input[name='account']").focus(function(){
+				En26Focus()
+			})
+			$("input[name='password']").focus(function(){
+				En26Focus()
+			})
+
+			$("input").blur(function(){
+				UnFocus()
+			})
+		}
+	</script>
+
 	<script type="text/javascript" src="js/initPsd.js"></script>
 	<script type="text/javascript" src="js/errPage.js"></script>
 </html>

+ 2 - 1
addin/res/ManagerDesktop/initPassword.html

@@ -18,6 +18,7 @@
 		<script type="text/javascript" src="js/errorCodeEnum.js"></script>
 		<script type="text/javascript" src="js/entityService.js"></script>
 		<script type="text/javascript" src="Include/jQuery/js/jquery.min.js" ></script>
+		<script type="text/javascript" src="Include/layer.js"></script>
 		<script type="text/javascript" src="Include/non-ie-interface.js"></script> 
 		<script type="text/javascript" src="js/initPsd.js"></script>
 
@@ -54,7 +55,7 @@
 			</div>
 			<div class="rows">
 				<label for="password">分行用户密码</label>
-				<input type="password" name="password" onfocus="En26Focus()" onblur="UnFocus()" placeholder="请输入..." />
+				<input type="password" name="password" maxlength="8" onfocus="En26Focus()" onblur="UnFocus()" placeholder="请输入..." />
 			</div>
 			<div class="btn">
 				<button class="btn-blue" onclick="ResetRSA()">重置设备密钥</button>

+ 4 - 1
addin/res/ManagerDesktop/js/entityMessage.js

@@ -98,9 +98,12 @@ var BroadCastEvent =function()  {
     this.data="";
     this.messageType = MessageType.broadCast;
 }
+
+var transID = 1
 function getIncreaseID() {
-    var increaseID = JSON.parse(sessionStorage.getItem("IncreaseID")) + 1;
+    var increaseID  = JSON.parse(sessionStorage.getItem("IncreaseID")) + 1;//NOSONAR
     sessionStorage.setItem("IncreaseID", JSON.stringify(increaseID))
+    
     return increaseID;
 }
 

+ 31 - 21
addin/res/ManagerDesktop/js/entityService.js

@@ -17,7 +17,7 @@ var DeviceControlService={
         var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function() {
             logEvent("DeviceControlService startSession callback");
         });
     },
@@ -26,7 +26,7 @@ var DeviceControlService={
 		req.class = this._serviceBase.className;
 		req.methodID = this._methodID.QueryHardwareInfo;
 		req.signature = this._methodSignature.QueryHardwareInfo;
-		WebSocketBase.sendMsg(req, (data) => {
+		WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -38,7 +38,7 @@ var DeviceControlService={
         req.signature = this._methodSignature.ReadCenterConfigStr;
         console.log('ReadCenterConfigStr callback',req)
 
-		WebSocketBase.sendMsg(req, (data) => {
+		WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -81,21 +81,25 @@ var MaintainWatcherService= {
     init: function(){var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function()  {
             logEvent("MaintainWatcherService startSession callback");
         });
 
         var registerMsg = new Register();
         registerMsg.entity = this._serviceBase.entityName;
         registerMsg.class = this._serviceBase.className;
-        WebSocketBase.registerEvent(registerMsg, (data) => {
+        WebSocketBase.registerEvent(registerMsg, function(data) {
             logEvent("MaintainWatcher registerEvent ret:"+JSON.stringify(data));
             this.dispatchEvent(data);
         });
     },
     dispatchEvent: function(msg) {
         var recvEvt = JSON.parse(msg);
-        var { eventID, signatureID } = recvEvt;
+        // var { eventID, signatureID } = recvEvt;
+        var _recvEvt = recvEvt;
+        var eventID = _recvEvt.eventID;
+        var signatureID = _recvEvt.signatureID
+
         if(eventID == this._eventType.OnUkeyPullOut && signatureID == this._eventSignature.OnUkeyPullOut) {
             logEvent("This is OnUkeyPullOut"+JSON.stringify(recvEvt));      
             EventEmitter.dispatch('OnUkeyPullOut', recvEvt);
@@ -109,7 +113,7 @@ var MaintainWatcherService= {
 		req.class = this._serviceBase.className;
 		req.methodID = this._methodID.VerifyPwd;
         req.signature = this._methodSignature.VerifyPwd;
-        WebSocketBase.sendMsg(req, (data) => {
+        WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -119,7 +123,7 @@ var MaintainWatcherService= {
 		req.class = this._serviceBase.className;
 		req.methodID = this._methodID.GetUserInfo;
         req.signature = this._methodSignature.GetUserInfo;
-        WebSocketBase.sendMsg(req, (data) => {
+        WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -155,21 +159,24 @@ var FreeRDPWrapService= {
         var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function() {
             logEvent("FreeRDPWrapService startSession callback");
         });
 
         var registerMsg = new Register();
         registerMsg.entity = this._serviceBase.entityName;
         registerMsg.class = this._serviceBase.className;
-        WebSocketBase.registerEvent(registerMsg, (data) => {
+        WebSocketBase.registerEvent(registerMsg, function(data) {
             logEvent("FreeRDPWrap registerEvent ret:"+JSON.stringify(data));
             this.dispatchEvent(data);
         });
     },
     dispatchEvent:function(msg) {
         var recvEvt = JSON.parse(msg);
-        var { eventID, signatureID } = recvEvt;
+        // var { eventID, signatureID } = recvEvt;
+        var _recvEvt = recvEvt;
+        var eventID = _recvEvt.eventID;
+        var signatureID = _recvEvt.signatureID
         if(eventID == this._eventType.WfreeWrapEvt && signatureID == this._eventSignature.WfreeWrapEvt) {
             EventEmitter.dispatch('OnWfreeWrapEvt', recvEvt);
         }
@@ -179,7 +186,7 @@ var FreeRDPWrapService= {
         req.class = this._serviceBase.className;
         req.methodID = this._methodID.InviteRdpShare;
         req.signature = this._methodSignature.InviteRdpShare;
-        WebSocketBase.sendMsg(req, (data) => {
+        WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -189,7 +196,7 @@ var FreeRDPWrapService= {
         req.class = this._serviceBase.className;
         req.methodID = this._methodID.CloseRdpShare;
         req.signature = this._methodSignature.CloseRdpShare;
-        WebSocketBase.sendMsg(req, (data) => {
+        WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -213,21 +220,24 @@ var IEBrowserService= {
         var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function() {
             logEvent("IEBrowserService startSession callback");
         });
 
         var registerMsg = new Register();
         registerMsg.entity = this._serviceBase.entityName;
         registerMsg.class = this._serviceBase.className;
-        WebSocketBase.registerEvent(registerMsg, (data) => {
+        WebSocketBase.registerEvent(registerMsg, function(data) {
             logEvent("IEBrowser registerEvent ret:"+JSON.stringify(data));
             this.dispatchEvent(data);
         });
     },
     dispatchEvent:function(msg) {
         var recvEvt = JSON.parse(msg);
-        var { eventID, signatureID } = recvEvt;
+        // var { eventID, signatureID } = recvEvt;
+        var _recvEvt = recvEvt;
+        var eventID = _recvEvt.eventID;
+        var signatureID = _recvEvt.signatureID
         if(eventID == this._eventType.WebBroadcast && signatureID == this._eventSignature.WebBroadcast) {
             EventEmitter.dispatch('WebBroadcast', recvEvt);
         }
@@ -255,7 +265,7 @@ var InitializerService = {
         var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function() {
             console.log('InitializerService startSession callback')
             logEvent("InitializerService startSession callback");
         });
@@ -268,7 +278,7 @@ var InitializerService = {
         
         console.log('InitializerService startSession callback',req)
 
-		WebSocketBase.sendMsg(req, (data) => {
+		WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -281,7 +291,7 @@ var InitializerService = {
         
         console.log('InitializerService DownloadCenterSetting callback',req)
 
-		WebSocketBase.sendMsg(req, (data) => {
+		WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });
@@ -306,7 +316,7 @@ var CenterSettingService = {
         var sessionMsg = new Session();
         sessionMsg.entity = this._serviceBase.entityName;
         sessionMsg.class = this._serviceBase.className;
-        WebSocketBase.startSession(sessionMsg, () => {
+        WebSocketBase.startSession(sessionMsg, function() {
             console.log('CenterSettingService startSession callback',sessionMsg)
             logEvent("CenterSettingService startSession callback");
         });
@@ -319,7 +329,7 @@ var CenterSettingService = {
         
         console.log('CenterSettingService startSession callback',req)
 
-		WebSocketBase.sendMsg(req, (data) => {
+		WebSocketBase.sendMsg(req, function(data) {
             var jsondata = JSON.parse(data);
             callback(jsondata);
         });

+ 1 - 1
addin/res/ManagerDesktop/js/errPage.js

@@ -135,7 +135,7 @@ function GetRequest() {
 function resetRSA(){
   $('.iframeDiv').fadeIn();
   $('#loadContent').fadeIn('slow')
-  setTimeout(()=>{
+  setTimeout(function(){
     ReadCenterConfig('centerSetting')
     ReadCenterConfig('access');
   },500)

+ 6 - 2
addin/res/ManagerDesktop/js/eventEmitter.js

@@ -5,9 +5,13 @@ var EventEmitter = {
         return;
       }
       
-      for(var cb of this._events[event].values()) {
+      // for(var cb of this._events[event].values()) {
+      //   cb(data);
+      // }
+      let arr = this._events[event].values();
+      arr.forEach(function(cb){
         cb(data);
-    }
+      })
   },
   subscribe: function (event, source, callback) {
     // 创建一个新事件数组

+ 63 - 36
addin/res/ManagerDesktop/js/initPsd.js

@@ -19,6 +19,7 @@ window.onload=function(){
 	};
   ReadCenterConfig('centerSetting');
 	ReadCenterConfig('access');
+	logEvent("initinar onload");
 };
 
 /**
@@ -81,23 +82,19 @@ function onblurAddr(IPType){
 }
 
 let timeout=60000;
-function timeoutFn(obj){
-	setTimeout(()=>{
-		if(!obj.flag){
-			$('#loadContent').fadeOut('slow')
-			let tips = '请求超时'
-			ModalStyle(tips,'pathN')
-		}
-	},timeout)
-}
+let timeoutFn= setTimeout(function(){
+		$('#loadContent').fadeOut('slow')
+		let tips = '请求超时'
+		ModalStyle(tips,'pathN')
+		console.log('timeoutFn---->')
+},timeout)
+	
 /**
  * @description: 下载集中配置
  * @param {type} 
  * @return: 
  */
-let obj = {
-	flag:false
-}
+
 function downLoad(){
 	let req = new Request(),reqIn ={};
 	let data = document.getElementsByTagName('input');
@@ -112,14 +109,16 @@ function downLoad(){
 	let IsNull = RegExpNull(reqIn)
 	if(IsNull) return false
 	$('#loadContent').fadeIn('slow')
-	timeoutFn(obj)
+	timeoutFn
+	logEvent("CenterSettingService->downLoad");
+
 	// InitializerService.DownloadCenterSetting(req, (ret)=> {
 	CenterSettingService.Download(req, function(ret) {
 		logEvent("Download ret: "+JSON.stringify(ret));
 
 		if(ret){
 			$('#loadContent').fadeOut('slow')
-			obj.flag = true
+			clearTimeout(timeoutFn)
 			if(ret.errorCode !==0){
 				// let tips = (ret.errorCode == undefined) ? Number(ret.Errcode).toString(16)+ (ret.ErrMsg?ret.ErrMsg:'下载集中配置失败') : ret.errorCode + ret.errorMsg 
 				let tips = (ret.errorCode == undefined) ?(ret.ErrMsg?ret.ErrMsg:'下载集中配置失败:')+Number(ret.Errcode).toString(16) : '下载集中配置失败:'+ret.errorCode.toString(16) 
@@ -143,6 +142,7 @@ function downLoad(){
  */
 function ReadCenterConfig(readType,readConfig){
 	$('#loadContent').fadeIn('slow')
+	timeoutFn
 	let req = new Request(),reqIn ={};
 	if(readType==='access'){
 		req.entityName = 'AccessAuthorization' 
@@ -156,11 +156,16 @@ function ReadCenterConfig(readType,readConfig){
 	req.reserved3 = ''
 	req.reserved4 = ''
 	req.timeout = 60000
-
+	logEvent("DeviceControlService->ReadCenterConfigStr");
+	console.log('DeviceControlService----')
 	DeviceControlService.ReadCenterConfigStr(req, function(ret) {
 		logEvent("ReadCenterConfigStr ret: "+JSON.stringify(ret));
+		if(ret){
+			$('#loadContent').fadeOut('slow');
+			clearTimeout(timeoutFn)
+		}
+	
 
-		$('#loadContent').fadeOut('slow');
 		if(ret.errorCode ===0){
 			let result = JSON.parse(ret['{e12a3dc0-3a0b-47c4-a8c3-75190a42ae68}'] )
 			let addr = result.value.split(' ')[0]
@@ -197,38 +202,60 @@ function ResetRSA(){
     reqIn.strAuthServer = data['accessAddr'].value
     reqIn.nAuthPort = Number( data['accessPort'].value)  
     reqIn.strUserID =  data['account'].value 
-    reqIn.strPassword = data['password'].value 
+		let agentId = data['account'].value;
+		if(Number(reqIn.strUserID) ){
+			if (agentId.trim().length == 8) {
+				reqIn.strUserID = "SP" + agentId.trim();
+			} else {
+				reqIn.strUserID = "ST" + agentId.trim();
+			}
+		}
+		reqIn.strPassword = data['password'].value 
+
 		req.timeout = 60000
 		req = Object.assign({},req,reqIn)
+		if(reqIn.strUserID==''){
+			let tips = '用户名不能为空'
+			ModalStyle(tips,'pathN')
+			return;
+		}
+		if(reqIn.strPassword==''){
+			let tips = '密码不能为空'
+			ModalStyle(tips,'pathN')
+			return;
+		}
 
 		let IsNull = RegExpNull(reqIn)
 		if(IsNull) return false
 		$('#loadContent').fadeIn('slow')
+		timeoutFn
+		logEvent("InitializerService->InitializeNew");
 
     //重置密钥
-	InitializerService.InitializeNew(req,  function(ret) {
-		logEvent("InitializeNew ret: "+JSON.stringify(ret));
-		console.log("InitializeNew ret: "+JSON.stringify(ret));
+		InitializerService.InitializeNew(req,  function(ret) {
+			logEvent("InitializeNew ret: "+JSON.stringify(ret));
+			console.log("InitializeNew ret: "+JSON.stringify(ret));
 
-		if(ret){
-			$('#loadContent').fadeOut('slow')
-		}
+			if(ret){
+				$('#loadContent').fadeOut('slow');
+				clearTimeout(timeoutFn)
+			}
 
-		if(ret.errorCode == 0) {
-			if(ret.Errcode !== 0)
-			{
-				let tips = Number(ret.Errcode).toString(16)+ (ret.ErrMsg?ret.ErrMsg:'重置密钥失败') 
+			if(ret.errorCode == 0) {
+				if(ret.Errcode !== 0)
+				{
+					let tips = Number(ret.Errcode).toString(16)+ (ret.ErrMsg?ret.ErrMsg:'重置密钥失败') 
+					ModalStyle(tips,'pathN')
+				}else{
+					let tips = '加载DES主密钥成功'
+					ModalStyle(tips,'pathY')
+				}
+			}
+			else{
+				let tips = '重置密钥失败'
 				ModalStyle(tips,'pathN')
-			}else{
-				let tips = '加载DES主密钥成功'
-				ModalStyle(tips,'pathY')
 			}
-		}
-		else{
-			let tips = '重置密钥失败'
-			ModalStyle(tips,'pathN')
-		}
-	});
+		});
 }
 
 function closeModal(){

+ 6 - 2
addin/res/ManagerDesktop/js/innerEventEmitter.js

@@ -5,9 +5,13 @@ var InnerEventEmitter = {
         return;
       }
       
-      for(var cb of this._events[event].values()) {
+      // for(var cb of this._events[event].values()) {
+      //   cb(data);
+      // }
+      let arr = this._events[event].values();
+      arr.forEach(function(cb){
         cb(data);
-    }
+      })
   },
   subscribe: function (event, source, callback) {
     // 创建一个新事件数组

+ 3 - 3
addin/res/ManagerDesktop/js/webSocketBase.js

@@ -99,7 +99,7 @@ WebSocketBase.reconnect = function () {
   if(!WebSocketBase.isreconnecting) {      
     WebSocketBase.isreconnecting = true;      
     WebSocketBase.retryTimes = 0;      
-    WebSocketBase.interval = setInterval(() => {        
+    WebSocketBase.interval = setInterval(function() {        
       WebSocketBase.retryTimes = WebSocketBase.conn(WebSocketBase.retryTimes, WebSocketBase.interval, WebSocketBase.socket)      
     },10000);//间隔5s重连一次    
   }
@@ -195,7 +195,7 @@ WebSocketBase.unregisterEvent= function(unregisterMsg) {
 WebSocketBase.startSession= function(msg, callback) {   
   logEvent("startSession");
   msg.messageType = MessageType.beginSession;
-  WebSocketBase.sendMsg(msg, (data) => {
+  WebSocketBase.sendMsg(msg, function(data)  {
     logEvent("startSession ret: "+JSON.stringify(data));
     var jsondata = JSON.parse(data);
     if(jsondata["errorCode"] == ErrorCodeEnum.Error_Succeed && jsondata["sessionID"]) {
@@ -215,7 +215,7 @@ WebSocketBase.startAndSend= function(msg, callback) {
   var sessionMsg = new Session();
   sessionMsg.entity = msg.entity;
   sessionMsg.class = msg.class;
-  WebSocketBase.startSession(sessionMsg, (jsondata) => {
+  WebSocketBase.startSession(sessionMsg, function(jsondata) {
     if(jsondata["errorCode"] == ErrorCodeEnum.Error_Succeed) {
       WebSocketBase.sendMsg(msg, callback);
     }

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.