/* * Copyright (c) 2019 TAOS Data, Inc. * * This program is free software: you can use, redistribute, and/or modify * it under the terms of the GNU Affero General Public License, version 3 * or later ("AGPL"), as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ //#define _DEFAULT_SOURCE #include "os.h" #include "tlog.h" #include "trpc.h" #include "tqueue.h" #include int msgSize = 128; int commit = 0; int dataFd = -1; void *qhandle = NULL; void processShellMsg() { static int num = 0; taos_qall qall; SRpcMsg rpcMsg; while (1) { int numOfMsgs = taosReadAllQitems(qhandle, &qall); if (numOfMsgs <= 0) { usleep(1000); continue; } tTrace("%d shell msgs are received", numOfMsgs); for (int i=0; i=0) { if ( write(dataFd, rpcMsg.pCont, rpcMsg.contLen) <0 ) { tPrint("failed to write data file, reason:%s", strerror(errno)); } } } if (commit >=2) { num += numOfMsgs; if ( fsync(dataFd) < 0 ) { tPrint("failed to flush data to file, reason:%s", strerror(errno)); } if (num % 10000 == 0) { tPrint("%d request have been written into disk", num); } } taosResetQitems(qall); for (int i=0; imsgType, pMsg->contLen); taosWriteQitem(qhandle, pMsg); } int main(int argc, char *argv[]) { SRpcInit rpcInit; char dataName[20] = "server.data"; memset(&rpcInit, 0, sizeof(rpcInit)); rpcInit.localIp = "0.0.0.0"; rpcInit.localPort = 7000; rpcInit.label = "SER"; rpcInit.numOfThreads = 1; rpcInit.cfp = processRequestMsg; rpcInit.sessions = 1000; rpcInit.idleTime = tsShellActivityTimer*1500; rpcInit.afp = retrieveAuthInfo; for (int i=1; i= 0) { close(dataFd); remove(dataName); } return 0; }