This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 2bcd55563 [INLONG-5267][SDK] Add config file and demo for DataProxy
C++ SDK (#5268)
2bcd55563 is described below
commit 2bcd55563e3d38d217c211f1895e70949fb6ea84
Author: xueyingzhang <[email protected]>
AuthorDate: Sat Jul 30 04:49:55 2022 +0800
[INLONG-5267][SDK] Add config file and demo for DataProxy C++ SDK (#5268)
---
.../dataproxy-sdk-cpp/release/CMakeLists.txt | 32 ++++++
.../release/conf/config_example.json | 34 ++++++
.../dataproxy-sdk-cpp/release/demo/CMakeLists.txt | 21 ++++
.../dataproxy-sdk-cpp/release/demo/send_demo.cc | 117 +++++++++++++++++++++
4 files changed, 204 insertions(+)
diff --git
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/CMakeLists.txt
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/CMakeLists.txt
new file mode 100644
index 000000000..3e84a532f
--- /dev/null
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/CMakeLists.txt
@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+cmake_minimum_required(VERSION 3.1)
+
+project(demo)
+
+set(CMAKE_CXX_FLAGS "-std=c++11 -O2 -g -Wall -Wsign-compare -Wfloat-equal
-fno-strict-aliasing -fPIC -DASIO_STANDALONE")
+
+set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
+
+include_directories(inc)
+
+link_directories(lib)
+
+add_subdirectory(demo)
\ No newline at end of file
diff --git
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/conf/config_example.json
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/conf/config_example.json
new file mode 100644
index 000000000..7ad249ef2
--- /dev/null
+++
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/conf/config_example.json
@@ -0,0 +1,34 @@
+{
+ "init-param": {
+ "thread_num": 5,
+ "inlong_group_ids": "b_inlong_group_test_01, b_inlong_group_test_02",
+ "enable_groupId_isolation": false,
+ "shared_buf_num": 5,
+ "buffer_num_per_groupId": 5,
+ "ser_port": 46801,
+ "enable_pack": true,
+ "pack_size": 4096,
+ "ext_pack_size": 4096,
+ "enable_zip": true,
+ "min_ziplen": 300,
+ "enable_retry": true,
+ "retry_ms": 3000,
+ "retry_num": 3,
+ "max_active_proxy": 4,
+ "max_buf_pool": 548576000,
+ "msg_type": 7,
+ "log_num": 10,
+ "log_size": 10,
+ "log_level": 3,
+ "log_file_type": 2,
+ "log_path": "./",
+ "enable_hb": true,
+ "hb_interval": 60,
+ "proxy_update_interval": 10,
+ "proxy_cfg_preurl":
"http://127.0.0.1:8099/inlong/manager/openapi/dataproxy/getIpList",
+ "net_tag": "all",
+ "need_auth": true,
+ "auth_id": "admin",
+ "auth_key": "87haw3VYTPqK5fK0"
+ }
+}
diff --git
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/CMakeLists.txt
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/CMakeLists.txt
new file mode 100644
index 000000000..9af181054
--- /dev/null
+++
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/CMakeLists.txt
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+add_executable(send_demo send_demo.cc)
+target_link_libraries(send_demo pthread dataproxy_sdk)
\ No newline at end of file
diff --git
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/send_demo.cc
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/send_demo.cc
new file mode 100644
index 000000000..95d7ade45
--- /dev/null
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/demo/send_demo.cc
@@ -0,0 +1,117 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include <chrono>
+#include <iostream>
+#include <string>
+#include <tc_api.h>
+
+using namespace std;
+using namespace dataproxy_sdk;
+
+// user set call_back func
+int call_back_func(const char *inlong_group_id, const char *inlong_stream_id,
const char *msg, int msg_len, long report_time, const char *ip)
+{
+ cout << "******this is call back, print info******" << endl;
+ cout << "inlong_group_id: " << inlong_group_id << ", inlong_stream_id: "
<< inlong_stream_id << endl;
+ cout << "msg_len: " << msg_len << ", msg content: " << msg << endl;
+ cout << "report_time: " << report_time << ", client ip: " << ip << endl;
+ cout << "******call back end******" << endl;
+
+ return 0;
+}
+
+int main(int argc, char const *argv[])
+{
+ if (2 != argc)
+ {
+ cout << "USAGE: ./send_demo ../config/config_example.json" << endl;
+ return 0;
+ }
+
+ // step1. init
+ if (tc_api_init(argv[1]))
+ {
+ cout << "init error" << endl;
+ return 0;
+ }
+ cout << "---->start sdk successfully" << endl;
+
+ int count = 1000;
+ string inlong_group_id = "test_20220727_86";
+ string inlong_stream_id = "test_20220727_86_str_17";
+ string msg = "this is a test ttttttttttttttt; eiwhgreuhg
jfdiowaehgorerlea; test end";
+
+ // step2. send
+ cout << "---->start tc_api_send" << endl;
+ for (size_t i = 0; i < count; i++)
+ {
+ if (tc_api_send(inlong_group_id.c_str(), inlong_stream_id.c_str(),
msg.c_str(), msg.length(), call_back_func))
+ {
+ cout << "tc_api_send error;"
+ << " ";
+ }
+ }
+
+ string bad_groupid="test_wrong_groupid";
+ int32_t bad_res=tc_api_send(bad_groupid.c_str(), inlong_stream_id.c_str(),
msg.c_str(), msg.length(), call_back_func);
+ cout << endl << "send bad inlong_group_id res:"<<bad_res;
+
+ cout << endl
+ << "---->start tc_api_send_ext" << endl;
+ for (size_t i = 0; i < count; i++)
+ {
+ auto time_now = chrono::system_clock::now();
+ auto duration_in_ms =
chrono::duration_cast<chrono::milliseconds>(time_now.time_since_epoch());
+ auto dt = duration_in_ms.count();
+ if (tc_api_send_ext(inlong_group_id.c_str(), inlong_stream_id.c_str(),
msg.c_str(), msg.length(), dt, call_back_func))
+ {
+ cout << "tc_api_send_ext error;"
+ << " ";
+ }
+ }
+
+ cout << endl
+ << "---->start tc_api_send_base" << endl;
+ for (size_t i = 0; i < count; i++)
+ {
+ auto time_now = chrono::system_clock::now();
+ auto duration_in_ms =
chrono::duration_cast<chrono::milliseconds>(time_now.time_since_epoch());
+ auto dt = duration_in_ms.count();
+ if (tc_api_send_base(inlong_group_id.c_str(),
inlong_stream_id.c_str(), msg.c_str(), msg.length(), dt, "127.0.0.1"))
+ {
+ cout << "tc_api_send_base error;"
+ << " ";
+ }
+ }
+
+ // std::this_thread::sleep_for(std::chrono::minutes(2));
+
+ // step3. close
+ if (tc_api_close(1000))
+ {
+ cout << "close sdk error" << endl;
+ }
+ else
+ {
+ cout << "---->close sdk successfully" << endl;
+ }
+
+ return 0;
+}