From 804b581269800faf842e8dfbc922904d7b4a825c Mon Sep 17 00:00:00 2001 From: localvar Date: Fri, 27 Dec 2019 17:15:20 +0800 Subject: [PATCH] TBASE-917: update subscription example --- tests/examples/c/makefile | 25 ++++++------ tests/examples/c/subscribe.c | 74 +++++++++++++++++++++++++++--------- 2 files changed, 69 insertions(+), 30 deletions(-) diff --git a/tests/examples/c/makefile b/tests/examples/c/makefile index ac8ff21aaf..d68a734e95 100644 --- a/tests/examples/c/makefile +++ b/tests/examples/c/makefile @@ -3,21 +3,22 @@ ROOT=./ TARGET=exe -LFLAGS = '-Wl,-rpath,/usr/local/taos/driver' -ltaos -lpthread -lm -lrt -CFLAGS = -O3 -g -Wall -Wno-deprecated -fPIC -Wno-unused-result -Wconversion -Wno-char-subscripts -D_REENTRANT -Wno-format -D_REENTRANT -DLINUX -msse4.2 -Wno-unused-function -D_M_X64 -std=gnu99 +LFLAGS = '-Wl,-rpath,/usr/local/taos/driver/' -ltaos -lpthread -lm -lrt +CFLAGS = -O3 -g -Wall -Wno-deprecated -fPIC -Wno-unused-result -Wconversion -Wno-char-subscripts -D_REENTRANT -Wno-format -D_REENTRANT -DLINUX -msse4.2 -Wno-unused-function -D_M_X64 \ + -I/usr/local/taos/include -std=gnu99 all: $(TARGET) exe: - gcc $(CFLAGS) ./asyncdemo.c -o $(ROOT)/asyncdemo $(LFLAGS) - gcc $(CFLAGS) ./demo.c -o $(ROOT)/demo $(LFLAGS) - gcc $(CFLAGS) ./stream.c -o $(ROOT)/stream $(LFLAGS) - gcc $(CFLAGS) ./subscribe.c -o $(ROOT)/subscribe $(LFLAGS) +gcc $(CFLAGS) ./asyncdemo.c -o $(ROOT)/asyncdemo $(LFLAGS) +gcc $(CFLAGS) ./demo.c -o $(ROOT)/demo $(LFLAGS) +gcc $(CFLAGS) ./prepare.c -o $(ROOT)/prepare $(LFLAGS) +gcc $(CFLAGS) ./stream.c -o $(ROOT)/stream $(LFLAGS) + gcc $(CFLAGS) ./subscribe.c -o $(ROOT)subscribe $(LFLAGS) clean: - rm $(ROOT)asyncdemo - rm $(ROOT)demo - rm $(ROOT)stream - rm $(ROOT)subscribe - - \ No newline at end of file + rm $(ROOT)/asyncdemo + rm $(ROOT)/demo + rm $(ROOT)/prepare + rm $(ROOT)/stream + rm $(ROOT)/subscribe diff --git a/tests/examples/c/subscribe.c b/tests/examples/c/subscribe.c index f09018b1d2..b35dca772f 100644 --- a/tests/examples/c/subscribe.c +++ b/tests/examples/c/subscribe.c @@ -6,38 +6,76 @@ #include #include // include TDengine header file + +void print_result(TAOS_RES* res) { + TAOS_ROW row; + int num_fields = taos_num_fields(res); + TAOS_FIELD* fields = taos_fetch_fields(res); + + while ((row = taos_fetch_row(res))) { + char temp[256]; + taos_print_row(temp, row, fields, num_fields); + puts(temp); + } +} + +void subscribe_callback(TAOS_SUB* tsub, TAOS_RES *res, void* param, int code) { + print_result(res); +} + + int main(int argc, char *argv[]) { + const char* host = "127.0.0.1"; + const char* user = "root"; + const char* passwd = "taosdata"; + int async = 1; + TAOS_SUB* tsub = NULL; + + for (int i = 1; i < argc; i++) { + if (strncmp(argv[i], "-h=", 3) == 0) { + host = argv[i] + 3; + continue; + } + if (strncmp(argv[i], "-u=", 3) == 0) { + user = argv[i] + 3; + continue; + } + if (strncmp(argv[i], "-p=", 3) == 0) { + passwd = argv[i] + 3; + continue; + } + if (strncmp(argv[i], "-m=", 3) == 0) { + async = strcmp(argv[i] + 3, "sync"); + continue; + } + } + // init TAOS taos_init(); - TAOS* taos = taos_connect(argv[1], "root", "taosdata", "test", 0); + TAOS* taos = taos_connect(host, user, passwd, "test", 0); if (taos == NULL) { printf("failed to connect to db, reason:%s\n", taos_errstr(taos)); exit(1); } - TAOS_SUB* tsub = taos_subscribe(taos, "select * from meters;", NULL, NULL, 0); - if ( tsub == NULL ) { + if (async) { + tsub = taos_subscribe(taos, "select * from meters;", subscribe_callback, NULL, 1000); + } else { + tsub = taos_subscribe(taos, "select * from meters;", NULL, NULL, 0); + } + + if (tsub == NULL) { printf("failed to create subscription.\n"); exit(0); } - for( int i = 0; i < 3; i++ ) { + if (async) { + getchar(); + } else while(1) { TAOS_RES* res = taos_consume(tsub); - TAOS_ROW row; - int rows = 0; - int num_fields = taos_subfields_count(tsub); - TAOS_FIELD *fields = taos_fetch_fields(res); - char temp[256]; - - // fetch the records row by row - while ((row = taos_fetch_row(res))) { - rows++; - taos_print_row(temp, row, fields, num_fields); - printf("%s\n", temp); - } - - printf("\n"); + print_result(res); + getchar(); } taos_unsubscribe(tsub);