From 48635daf072a6aa040d83c7288e4f5dc2df019df Mon Sep 17 00:00:00 2001 From: wzlsuccess Date: Tue, 22 Jun 2021 23:03:48 +0800 Subject: [PATCH] update cmake file --- GNUmakefile | 18 ++++++++---------- src/client/CMakeLists.txt | 8 +++++++- src/client/WFKafkaClient.cc | 15 +++++---------- src/factory/CMakeLists.txt | 19 +++++++++++++++---- src/factory/KafkaTaskImpl.cc | 12 ++++-------- src/manager/CMakeLists.txt | 9 +++++++-- src/nameservice/CMakeLists.txt | 11 ++++++++--- src/protocol/CMakeLists.txt | 33 ++++++++++++++++++++++----------- src/protocol/RedisMessage.cc | 25 ++++++++++++++++++++++++- src/protocol/RedisMessage.h | 25 ------------------------- src/server/CMakeLists.txt | 9 +++++++-- tutorial/CMakeLists.txt | 30 ++++++++++++++++++++++++++---- tutorial/GNUmakefile | 16 +++++++--------- 13 files changed, 140 insertions(+), 90 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 70f50d1c..25444668 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -6,6 +6,11 @@ DEFAULT_BUILD_DIR := build BUILD_DIR := $(shell if [ -f $(MAKE_FILE) ]; then echo "."; else echo $(DEFAULT_BUILD_DIR); fi) CMAKE3 := $(shell if which cmake3>/dev/null ; then echo cmake3; else echo cmake; fi;) +KAFKA ?= n +MYSQL ?= y +REDIS ?= y +UPSTREAM ?= y + .PHONY: $(ALL_TARGETS) all: base @@ -14,18 +19,12 @@ all: base base: mkdir -p $(BUILD_DIR) -ifeq ($(KAFKA),y) - KAFKA=y -else - KAFKA=n -endif - ifeq ($(DEBUG),y) - cd $(BUILD_DIR) && $(CMAKE3) -D CMAKE_BUILD_TYPE=Debug -D KAFKA=$(KAFKA) $(ROOT_DIR) + cd $(BUILD_DIR) && $(CMAKE3) -D CMAKE_BUILD_TYPE=Debug -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) -D UPSTREAM=$(UPSTREAM) $(ROOT_DIR) else ifneq ("${INSTALL_PREFIX}install_prefix", "install_prefix") - cd $(BUILD_DIR) && $(CMAKE3) -DCMAKE_INSTALL_PREFIX:STRING=${INSTALL_PREFIX} -D KAFKA=$(KAFKA) $(ROOT_DIR) + cd $(BUILD_DIR) && $(CMAKE3) -DCMAKE_INSTALL_PREFIX:STRING=${INSTALL_PREFIX} -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) -D UPSTREAM=$(UPSTREAM) $(ROOT_DIR) else - cd $(BUILD_DIR) && $(CMAKE3) -D KAFKA=$(KAFKA) $(ROOT_DIR) + cd $(BUILD_DIR) && $(CMAKE3) -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) -D UPSTREAM=$(UPSTREAM) $(ROOT_DIR) endif tutorial: all @@ -52,4 +51,3 @@ endif find . -name Makefile | xargs rm -f find . -name "*.cmake" | xargs rm -f find . -name CMakeFiles | xargs rm -rf - diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt index 9129db55..66914ffc 100644 --- a/src/client/CMakeLists.txt +++ b/src/client/CMakeLists.txt @@ -3,9 +3,15 @@ project(client) set(SRC WFDnsClient.cc - WFMySQLConnection.cc ) +if (MYSQL STREQUAL "y") + set(SRC + ${SRC} + WFMySQLConnection.cc + ) +endif () + add_library(${PROJECT_NAME} OBJECT ${SRC}) if (KAFKA STREQUAL "y") diff --git a/src/client/WFKafkaClient.cc b/src/client/WFKafkaClient.cc index 540c5cd2..36a258f7 100644 --- a/src/client/WFKafkaClient.cc +++ b/src/client/WFKafkaClient.cc @@ -587,23 +587,18 @@ void ComplexKafkaTask::kafka_meta_callback(__WFKafkaTask *task) kafka_merge_broker_list(&t->client_broker_map, task->get_resp()->get_broker_list()); - - char name[64]; - snprintf(name, 64, "%p.meta", t->client); - t->lock_status.get_mutex()->unlock(); - WFTaskFactory::count_by_name(name, (unsigned int)-1); } else { t->state = WFT_STATE_TASK_ERROR; t->error = WFT_ERR_KAFKA_META_FAILED; t->finish = true; - - char name[64]; - snprintf(name, 64, "%p.meta", t->client); - t->lock_status.get_mutex()->unlock(); - WFTaskFactory::count_by_name(name, (unsigned int)-1); } + + char name[64]; + snprintf(name, 64, "%p.meta", t->client); + t->lock_status.get_mutex()->unlock(); + WFTaskFactory::count_by_name(name, (unsigned int)-1); } void ComplexKafkaTask::kafka_cgroup_callback(__WFKafkaTask *task) diff --git a/src/factory/CMakeLists.txt b/src/factory/CMakeLists.txt index c17d42a2..ebe58fa6 100644 --- a/src/factory/CMakeLists.txt +++ b/src/factory/CMakeLists.txt @@ -4,13 +4,25 @@ project(factory) set(SRC WFGraphTask.cc DnsTaskImpl.cc - HttpTaskImpl.cc - RedisTaskImpl.cc - MySQLTaskImpl.cc WFTaskFactory.cc Workflow.cc + HttpTaskImpl.cc ) +if (MYSQL STREQUAL "y") + set(SRC + ${SRC} + MySQLTaskImpl.cc + ) +endif () + +if (REDIS STREQUAL "y") + set(SRC + ${SRC} + RedisTaskImpl.cc + ) +endif () + add_library(${PROJECT_NAME} OBJECT ${SRC}) if (KAFKA STREQUAL "y") @@ -20,4 +32,3 @@ if (KAFKA STREQUAL "y") add_library("factory_kafka" OBJECT ${SRC}) set_property(SOURCE KafkaTaskImpl.cc APPEND PROPERTY COMPILE_OPTIONS "-fno-rtti") endif () - diff --git a/src/factory/KafkaTaskImpl.cc b/src/factory/KafkaTaskImpl.cc index ccd8e2a0..f1713dd1 100644 --- a/src/factory/KafkaTaskImpl.cc +++ b/src/factory/KafkaTaskImpl.cc @@ -113,13 +113,9 @@ CommMessageOut *__ComplexKafkaTask::message_out() if (seqid == 0) { KafkaConnectionInfo *conn_info = new KafkaConnectionInfo; - auto&& deleter = [] (void *ctx) - { - KafkaConnectionInfo *conn_info = (KafkaConnectionInfo *)ctx; - delete conn_info; - }; - - this->get_connection()->set_context(conn_info, std::move(deleter)); + this->get_connection()->set_context(conn_info, std::move([](void *ctx) { + delete (KafkaConnectionInfo *)ctx; + })); this->get_req()->set_api(&conn_info->api); if (!this->get_req()->get_config()->get_broker_version()) @@ -143,7 +139,7 @@ CommMessageOut *__ComplexKafkaTask::message_out() p = (kafka_api_version_t *)malloc(api_cnt * sizeof(*p)); if (p) { - memcpy(p, api, sizeof(kafka_api_version_t) * api_cnt); + memcpy(p, api, api_cnt * sizeof(kafka_api_version_t)); conn_info->api.api = p; conn_info->api.elements = api_cnt; conn_info->api.features = kafka_get_features(p, api_cnt); diff --git a/src/manager/CMakeLists.txt b/src/manager/CMakeLists.txt index 91af981c..a60e031b 100644 --- a/src/manager/CMakeLists.txt +++ b/src/manager/CMakeLists.txt @@ -3,10 +3,15 @@ project(manager) set(SRC DnsCache.cc - UpstreamManager.cc RouteManager.cc WFGlobal.cc ) -add_library(${PROJECT_NAME} OBJECT ${SRC}) +if (UPSTREAM STREQUAL "y") + set(SRC + ${SRC} + UpstreamManager.cc + ) +endif () +add_library(${PROJECT_NAME} OBJECT ${SRC}) diff --git a/src/nameservice/CMakeLists.txt b/src/nameservice/CMakeLists.txt index 504f6b27..449b6eda 100644 --- a/src/nameservice/CMakeLists.txt +++ b/src/nameservice/CMakeLists.txt @@ -4,9 +4,14 @@ project(nameservice) set(SRC WFNameService.cc WFDnsResolver.cc - WFServiceGovernance.cc - UpstreamPolicies.cc ) -add_library(${PROJECT_NAME} OBJECT ${SRC}) +if (UPSTREAM STREQUAL "y") + set(SRC + ${SRC} + WFServiceGovernance.cc + UpstreamPolicies.cc + ) +endif () +add_library(${PROJECT_NAME} OBJECT ${SRC}) diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt index 8830cc4a..ae675375 100644 --- a/src/protocol/CMakeLists.txt +++ b/src/protocol/CMakeLists.txt @@ -3,21 +3,33 @@ project(protocol) set(SRC dns_parser.c - http_parser.c - redis_parser.c - mysql_stream.c - mysql_parser.c - mysql_byteorder.c DnsMessage.cc DnsUtil.cc - MySQLMessage.cc - MySQLResult.cc - HttpMessage.cc - RedisMessage.cc - HttpUtil.cc SSLWrapper.cc + http_parser.c + HttpMessage.cc + HttpUtil.cc ) +if (MYSQL STREQUAL "y") + set(SRC + ${SRC} + mysql_stream.c + mysql_parser.c + mysql_byteorder.c + MySQLMessage.cc + MySQLResult.cc + ) +endif () + +if (REDIS STREQUAL "y") + set(SRC + ${SRC} + redis_parser.c + RedisMessage.cc + ) +endif () + add_library(${PROJECT_NAME} OBJECT ${SRC}) if (KAFKA STREQUAL "y") @@ -32,4 +44,3 @@ if (KAFKA STREQUAL "y") set_property(SOURCE KafkaDataTypes.cc APPEND PROPERTY COMPILE_OPTIONS "-fno-rtti") set_property(SOURCE KafkaResult.cc APPEND PROPERTY COMPILE_OPTIONS "-fno-rtti") endif () - diff --git a/src/protocol/RedisMessage.cc b/src/protocol/RedisMessage.cc index e0a8535b..9c437270 100644 --- a/src/protocol/RedisMessage.cc +++ b/src/protocol/RedisMessage.cc @@ -426,6 +426,30 @@ std::string RedisValue::debug_string() const return ret; } +RedisMessage::RedisMessage(): + parser_(new redis_parser_t), + stream_(new EncodeStream), + cur_size_(0), + asking_(false) +{ + redis_parser_init(parser_); +} + +RedisMessage::~RedisMessage() +{ + if (parser_) + { + redis_parser_deinit(parser_); + delete parser_; + delete stream_; + } +} + +RedisValue::~RedisValue() +{ + free_data(); +} + RedisMessage::RedisMessage(RedisMessage&& move) : ProtocolMessage(std::move(move)) { @@ -672,4 +696,3 @@ bool RedisResponse::set_result(const RedisValue& value) } } - diff --git a/src/protocol/RedisMessage.h b/src/protocol/RedisMessage.h index 1083e5b6..d5540030 100644 --- a/src/protocol/RedisMessage.h +++ b/src/protocol/RedisMessage.h @@ -216,11 +216,6 @@ inline RedisValue::RedisValue(): { } -inline RedisValue::~RedisValue() -{ - free_data(); -} - inline RedisValue::RedisValue(const RedisValue& copy): type_(REDIS_REPLY_TYPE_NIL), data_(NULL) @@ -304,25 +299,6 @@ inline void RedisValue::clear() set_nil(); } -inline RedisMessage::RedisMessage(): - parser_(new redis_parser_t), - stream_(new EncodeStream), - cur_size_(0), - asking_(false) -{ - redis_parser_init(parser_); -} - -inline RedisMessage::~RedisMessage() -{ - if (parser_) - { - redis_parser_deinit(parser_); - delete parser_; - delete stream_; - } -} - inline bool RedisMessage::parse_success() const { return parser_->parse_succ; } inline bool RedisMessage::is_asking() const { return asking_; } @@ -345,4 +321,3 @@ inline void RedisResponse::get_result(RedisValue& value) const } #endif - diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 18d9ce2b..c21af1db 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -3,8 +3,13 @@ project(server) set(SRC WFServer.cc - WFMySQLServer.cc ) -add_library(${PROJECT_NAME} OBJECT ${SRC}) +if (MYSQL STREQUAL "y") + set(SRC + ${SRC} + WFMySQLServer.cc + ) +endif () +add_library(${PROJECT_NAME} OBJECT ${SRC}) diff --git a/tutorial/CMakeLists.txt b/tutorial/CMakeLists.txt index 56593d01..6ee4fbf5 100644 --- a/tutorial/CMakeLists.txt +++ b/tutorial/CMakeLists.txt @@ -25,16 +25,13 @@ endif () set(TUTORIAL_LIST tutorial-00-helloworld tutorial-01-wget - tutorial-02-redis_cli - tutorial-03-wget_to_redis tutorial-04-http_echo_server tutorial-05-http_proxy tutorial-06-parallel_wget + tutorial-09-http_file_server tutorial-07-sort_task tutorial-08-matrix_multiply - tutorial-09-http_file_server tutorial-11-graph_task - tutorial-12-mysql_cli ) if (APPLE) @@ -50,6 +47,31 @@ foreach(src ${TUTORIAL_LIST}) target_link_libraries(${bin_name} ${WORKFLOW_LIB}) endforeach() +if (REDIS STREQUAL "y") +set(TUTORIAL_LIST + tutorial-02-redis_cli + tutorial-03-wget_to_redis +) +foreach(src ${TUTORIAL_LIST}) + string(REPLACE "-" ";" arr ${src}) + list(GET arr -1 bin_name) + add_executable(${bin_name} ${src}.cc) + target_link_libraries(${bin_name} ${WORKFLOW_LIB}) +endforeach() +endif() + +if (MYSQL STREQUAL "y") +set(TUTORIAL_LIST + tutorial-12-mysql_cli +) +foreach(src ${TUTORIAL_LIST}) + string(REPLACE "-" ";" arr ${src}) + list(GET arr -1 bin_name) + add_executable(${bin_name} ${src}.cc) + target_link_libraries(${bin_name} ${WORKFLOW_LIB}) +endforeach() +endif() + if (KAFKA STREQUAL "y") add_executable("kafka_cli" "tutorial-13-kafka_cli.cc") target_link_libraries("kafka_cli" wfkafka workflow z snappy lz4 zstd rt) diff --git a/tutorial/GNUmakefile b/tutorial/GNUmakefile index fc68842f..c04b88cd 100644 --- a/tutorial/GNUmakefile +++ b/tutorial/GNUmakefile @@ -6,21 +6,20 @@ DEFAULT_BUILD_DIR := build BUILD_DIR := $(shell if [ -f $(MAKE_FILE) ]; then echo "."; else echo $(DEFAULT_BUILD_DIR); fi) CMAKE3 := $(shell if which cmake3>/dev/null ; then echo cmake3; else echo cmake; fi;) +KAFKA ?= n +MYSQL ?= y +REDIS ?= y +UPSTREAM ?= y + .PHONY: $(ALL_TARGETS) all: mkdir -p $(BUILD_DIR) -ifeq ($(KAFKA),y) - KAFKA=y -else - KAFKA=n -endif - ifeq ($(DEBUG),y) - cd $(BUILD_DIR) && $(CMAKE3) -D CMAKE_BUILD_TYPE=Debug -D KAFKA=$(KAFKA) $(ROOT_DIR) + cd $(BUILD_DIR) && $(CMAKE3) -D CMAKE_BUILD_TYPE=Debug -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) -D UPSTREAM=$(UPSTREAM) $(ROOT_DIR) else - cd $(BUILD_DIR) && $(CMAKE3) -D KAFKA=$(KAFKA) $(ROOT_DIR) + cd $(BUILD_DIR) && $(CMAKE3) -D KAFKA=$(KAFKA) -D MYSQL=$(MYSQL) -D REDIS=$(REDIS) -D UPSTREAM=$(UPSTREAM) $(ROOT_DIR) endif make -C $(BUILD_DIR) -f Makefile @@ -31,4 +30,3 @@ else ifeq (build, $(wildcard build)) -make -C build clean endif rm -rf build -