/* * 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 int msgSize = 128; int commit = 0; int dataFd = -1; void processRequestMsg(char type, void *pCont, int contLen, void *thandle, int32_t code) { static int num = 0; tTrace("request is received, type:%d, contLen:%d", type, contLen); if (dataFd >=0) write(dataFd, pCont, contLen); if (commit >=2) { ++num; 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); } } void *rsp = rpcMallocCont(msgSize); rpcSendResponse(thandle, 1, rsp, msgSize); /* SRpcIpSet ipSet; ipSet.numOfIps = 1; ipSet.index = 0; ipSet.port = 7000; ipSet.ip[0] = inet_addr("192.168.0.2"); rpcSendRedirectRsp(ahandle, &ipSet); */ rpcFreeCont(pCont); } 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 = 2000; for (int i=1; i= 0) { close(dataFd); remove(dataName); } return 0; }