void EventManager::HandleCmd(string name, PROTOBUF_MESSAGE* cmd) { DWORD dwId = UtilTool::hasCode((LPBYTE)name.c_str(), name.length()); if(!GT_VALID(dwId)) return; HandleCmd(dwId, cmd); }
void InteractiveLoop() { char *cmd, sql[4096]; while ((cmd = readline("sql> "))) { CopySql(sql, cmd); free(cmd); if (sql[0]) { add_history(sql); HandleCmd(sql); } } }
static int CreateClientProcess(int fd) { int pid=0; pid=fork(); if(pid==0) { signal(SIGCHLD, SIG_DFL); close(_listenfd); close(_broadcastfd); printf("fork new pid=%d, fd=%d\n", pid, fd); sleep(2); char *_recvBuf = 0; int RECV_BUFF_LEN = 1024; while((_recvBuf = (char *)malloc(RECV_BUFF_LEN))==NULL) { sleep(1); } printf("_recvBuf=%p\n", _recvBuf); while(1) { int err = ReadCmd(fd, _recvBuf, RECV_BUFF_LEN); if(err <= 0) { printf("ReadCmd connect close %d\n", fd); break; } void* result = HandleCmd(fd, _recvBuf, NULL, 0); err = SendResult(fd, result); if(err <= 0) { printf("SendResult error\n"); break; } free(result); } if(_recvBuf) free(_recvBuf); shutdown(fd, SHUT_RD); close(fd); exit(0); printf("fork new end%d\n", pid); } else if(pid>0) { printf("CreateClientProcess fork main %d\n", pid); _pid=pid; close(fd); //sleep(2); } else if(pid==-1) { printf("CreateClientProcess fork error %d\n", pid); } return pid; }