📄 clientmacro.h
字号:
#define log_on_Xread_error(sock, buf, size, s, g) \ do { \ UCHAR __tag[2]; \ char __buf[256]; \ INT32 dbg; \ act_on_error((2 == read2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact Read: %s ... ERROR", s); goto g); \ if (__tag[0] != TAG_OK) { \ act_on_error((__tag[1] == read2((sock), __buf, __tag[1])) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); goto g); \ _snprintf(errbuf, 128, " REMOTE-%s", __buf); \ __tag[0] = TAG_ACKABORT; \ __tag[1] = 0; \ act_on_error((2 == write2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); NULL); \ log1(sock_logr, "Xact: aborted %s", __buf); \ goto g; \ } else if ((size) != __tag[1]) { \ log_on_error(-1, "Protocol error", g); \ } \ act_on_error(((size) == (dbg = read2((sock), (buf), (size)))) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); log1(sock_logr, "Read %d bytes", dbg); log1(sock_logr, "Expecting %d bytes.", size); goto g); \ } while(false)#else#define log_on_Xread_error(sock, buf, size, s, g) \ do { \ UCHAR __tag[2]; \ char __buf[256]; \ INT32 dbg; \ act_on_error((2 == read2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact Read: %s ... ERROR", s); goto g); \ if (__tag[0] != TAG_OK) { \ act_on_error((__tag[1] == read2((sock), __buf, __tag[1])) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); goto g); \ snprintf(errbuf, 128, " REMOTE-%s", __buf); \ __tag[0] = TAG_ACKABORT; \ __tag[1] = 0; \ act_on_error((2 == write2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); NULL); \ log1(sock_logr, "Xact: aborted %s", __buf); \ goto g; \ } else if ((size) != __tag[1]) { \ log_on_error(-1, "Protocol error", g); \ } \ act_on_error(((size) == (dbg = read2((sock), (buf), (size)))) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); log1(sock_logr, "Read %d bytes", dbg); log1(sock_logr, "Expecting %d bytes.", size); goto g); \ } while(false)#endif#define log_on_Xwrite_error(sock, buf, size, s, g) \ do { \ UCHAR __tag[2] = {TAG_OK, (size)}; \ act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write: %s ... ERROR", s); goto g); \ act_on_error((size) == write2((sock), (buf), (size)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); goto g); \ } while(false)#ifdef _WIN32#define log_on_Xabort_error(sock, s, g) \ do { \ unsigned char __slen = 1 + (unsigned char)strlen(errbuf); \ UCHAR __tag[2] = {TAG_ABORT, __slen}; \ char __buf[256]; \ INT32 wait = true; \ act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", s); wait = false); \ act_on_error(__slen == write2((sock), errbuf, __slen) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", (errbuf)); wait = false); \ while(wait) { \ { \ fd_set __socks; \ struct timeval Timeout; \ readtimeout((sock), __socks, 45, g); \ } \ act_on_error(2 == read2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact read ack: %s ... ERROR", s); break); \ switch(__tag[0]) { \ case TAG_OK: \ act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break); \ break; \ case TAG_ABORT: \ act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break); \ _snprintf(errbuf + __slen - 1, 128 - __slen + 1, " REMOTE-%s", __buf); \ __tag[0] = TAG_ACKABORT; \ __tag[1] = 0; \ act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); wait = false; break); \ break; \ case TAG_ACKABORT: \ wait = false; \ break; \ } \ } \ } while(false)#else#define log_on_Xabort_error(sock, s, g) \ do { \ unsigned char __slen = 1 + (unsigned char)strlen(errbuf); \ UCHAR __tag[2] = {TAG_ABORT, __slen}; \ char __buf[256]; \ INT32 wait = true; \ act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", s); wait = false); \ act_on_error(__slen == write2((sock), errbuf, __slen) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", (errbuf)); wait = false); \ while(wait) { \ { \ fd_set __socks; \ struct timeval Timeout; \ readtimeout((sock), __socks, 45, g); \ } \ act_on_error(2 == read2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact read ack: %s ... ERROR", s); break); \ switch(__tag[0]) { \ case TAG_OK: \ act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break); \ break; \ case TAG_ABORT: \ act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break); \ snprintf(errbuf + __slen - 1, 128 - __slen + 1, " REMOTE-%s", __buf); \ __tag[0] = TAG_ACKABORT; \ __tag[1] = 0; \ act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); wait = false; break); \ break; \ case TAG_ACKABORT: \ wait = false; \ break; \ } \ } \ } while(false)#endif#define log_on_Xcommit_error(sock, s, g1, g2) \ { \ char bye[] = (s); \ log_on_Xwrite_error((sock),bye,sizeof(bye),"Sending bye", g1); \ { \ fd_set __socks; \ struct timeval timeout; \ readtimeout((sock), __socks, 45, g1); \ } \ log_on_Xread_error((sock),bye,sizeof(bye),"Receiving bye", g2); \ } while(false)#define IPPORT(ip, port) ((ip) >> 0) & 0xFF, ((ip) >> 8) & 0xFF, ((ip) >> 16) & 0xFF, ((ip) >> 24) & 0xFF, ntohs((port))#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -