From 90f592b64ea4d00d2d6cc5d1fd915857a321042a Mon Sep 17 00:00:00 2001 From: xwhqsj Date: Sat, 2 Nov 2019 20:34:44 +0800 Subject: [PATCH] add socket around ... --- callJvmThreadpool/CMakeLists.txt | 3 +- callJvmThreadpool/client.cpp | 57 +++++++ .../CMakeFiles/Makefile.cmake | 73 --------- .../cmake-build-debug/CMakeFiles/Makefile2 | 4 +- .../CMakeFiles/clion-log.txt | 14 -- .../CMakeFiles/main.dir/CXX.includecache | 24 +-- .../CMakeFiles/main.dir/DependInfo.cmake | 2 + .../CMakeFiles/main.dir/build.make | 34 ++++- .../CMakeFiles/main.dir/client.cpp.o | Bin 0 -> 104496 bytes .../CMakeFiles/main.dir/cmake_clean.cmake | 2 + .../CMakeFiles/main.dir/depend.internal | 7 +- .../CMakeFiles/main.dir/depend.make | 5 +- .../CMakeFiles/main.dir/link.txt | 2 +- .../CMakeFiles/main.dir/progress.make | 2 + .../CMakeFiles/main.dir/threadpool.cpp.o | Bin 93176 -> 0 bytes .../CMakeFiles/progress.marks | 2 +- callJvmThreadpool/cmake-build-debug/Makefile | 60 ++++++++ .../cmake-build-debug/callJvmThreadpool.cbp | 6 + callJvmThreadpool/cmake-build-debug/main | Bin 83056 -> 93320 bytes callJvmThreadpool/server.cpp | 77 ++++++++++ callJvmThreadpool/threadpool.cpp | 141 ++++++++++++++++-- callJvmThreadpool/tpool.cpp | 3 +- callJvmThreadpool/tpool.h | 3 +- 23 files changed, 385 insertions(+), 136 deletions(-) create mode 100644 callJvmThreadpool/client.cpp create mode 100644 callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/client.cpp.o delete mode 100644 callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/threadpool.cpp.o create mode 100644 callJvmThreadpool/server.cpp diff --git a/callJvmThreadpool/CMakeLists.txt b/callJvmThreadpool/CMakeLists.txt index 87595fe..7fcd91e 100755 --- a/callJvmThreadpool/CMakeLists.txt +++ b/callJvmThreadpool/CMakeLists.txt @@ -17,7 +17,8 @@ add_executable(main jni.h jni_md.h tpool.cpp tpool.h # main.cpp # multithread.cpp threadpool.cpp - ) + client.cpp + server.cpp) target_link_libraries(main /usr/local/java/jre/lib/amd64/server/libjvm.so /usr/lib/x86_64-linux-gnu/libpthread.so) diff --git a/callJvmThreadpool/client.cpp b/callJvmThreadpool/client.cpp new file mode 100644 index 0000000..7629759 --- /dev/null +++ b/callJvmThreadpool/client.cpp @@ -0,0 +1,57 @@ +// +// Created by wanhui on 11/2/19. +// + +#include +#include +#include +#include +#include +#include + +#define PORT 8080 + +int main() +{ + std::string plainsql, dbname; + int sock = 0, valread; + struct sockaddr_in serv_addr; + + plainsql = "select * from test;"; + char *psql = (char*)plainsql.data(); + dbname = "student"; + char *dbn = (char*)dbname.data(); + char split = '$'; + char buffer[1024] = {0}; + + if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) + { + printf("\n Socket creation error\n"); + return -1; + } + + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(PORT); + + // convert IPV4 and IPV6 addresses from text to binary form + if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) + { + printf("\n Invalid address/ Address not supported\n"); + return -1; + } + + if(connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) + { + printf("\nConnection Failed\n"); + return -1; + } + + send(sock, psql, strlen(psql), 0); + printf("Hello message: %s sent\n", psql); + send(sock, reinterpret_cast(split), 1, 0); + send(sock, dbn, strlen(dbn), 0); + printf("Talk message: %s send\n", dbn); + + valread = read(sock, buffer, 1024); + printf("%s\n", buffer); +} \ No newline at end of file diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile.cmake b/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile.cmake index 6032d02..691c87f 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile.cmake +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile.cmake @@ -11,90 +11,22 @@ set(CMAKE_MAKEFILE_DEPENDS "CMakeFiles/3.14.5/CMakeCCompiler.cmake" "CMakeFiles/3.14.5/CMakeCXXCompiler.cmake" "CMakeFiles/3.14.5/CMakeSystem.cmake" - "CMakeFiles/feature_tests.c" - "CMakeFiles/feature_tests.cxx" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCCompiler.cmake.in" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCCompilerABI.c" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCInformation.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXCompiler.cmake.in" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXCompilerABI.cpp" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCXXInformation.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCommonLanguageInclude.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeCompilerIdDetection.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCXXCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompileFeatures.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompilerABI.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineCompilerId.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeDetermineSystem.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeFindBinUtils.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeFindCodeBlocks.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeGenericSystem.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeInitializeConfigs.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeLanguageInformation.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeParseImplicitIncludeInfo.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeParseImplicitLinkInfo.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystem.cmake.in" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystemSpecificInformation.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeSystemSpecificInitialize.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCXXCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeTestCompilerCommon.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/CMakeUnixFindMake.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/ADSP-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/ARMCC-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/AppleClang-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Borland-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Clang-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Cray-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GHS-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C-FeatureTests.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-C.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX-FeatureTests.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-CXX.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU-FindBinUtils.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/GNU.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/HP-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/HP-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IAR-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Intel-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/MIPSpro-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/MSVC-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/PGI-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/PathScale-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SCO-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/TI-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/Watcom-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/XL-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/XL-CXX-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/zOS-C-DetermineCompiler.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Internal/CMakeCheckCompilerFlag.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Internal/FeatureTesting.cmake" - "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-Determine-CXX.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU-C.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU-CXX.cmake" "/home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/share/cmake-3.14/Modules/Platform/Linux-GNU.cmake" @@ -111,11 +43,6 @@ set(CMAKE_MAKEFILE_OUTPUTS # Byproducts of CMake generate step: set(CMAKE_MAKEFILE_PRODUCTS - "CMakeFiles/3.14.5/CMakeSystem.cmake" - "CMakeFiles/3.14.5/CMakeCCompiler.cmake" - "CMakeFiles/3.14.5/CMakeCXXCompiler.cmake" - "CMakeFiles/3.14.5/CMakeCCompiler.cmake" - "CMakeFiles/3.14.5/CMakeCXXCompiler.cmake" "CMakeFiles/CMakeDirectoryInformation.cmake" ) diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile2 b/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile2 index fe5c4b4..5a51647 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile2 +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/Makefile2 @@ -71,7 +71,7 @@ CMAKE_BINARY_DIR = /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug CMakeFiles/main.dir/all: $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/depend $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/build - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=1,2,3 "Built target main" + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=1,2,3,4,5 "Built target main" .PHONY : CMakeFiles/main.dir/all # Include target in all. @@ -81,7 +81,7 @@ all: CMakeFiles/main.dir/all # Build rule for subdir invocation for target. CMakeFiles/main.dir/rule: cmake_check_build_system - $(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 3 + $(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 5 $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/main.dir/all $(CMAKE_COMMAND) -E cmake_progress_start /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles 0 .PHONY : CMakeFiles/main.dir/rule diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/clion-log.txt b/callJvmThreadpool/cmake-build-debug/CMakeFiles/clion-log.txt index 8bdf84f..2de346b 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/clion-log.txt +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/clion-log.txt @@ -1,18 +1,4 @@ /home/wanhui/Downloads/clion-2019.2.1/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/wanhui/CallJvm/callJvmThreadpool --- The C compiler identification is GNU 7.4.0 --- The CXX compiler identification is GNU 7.4.0 --- Check for working C compiler: /usr/bin/cc --- Check for working C compiler: /usr/bin/cc -- works --- Detecting C compiler ABI info --- Detecting C compiler ABI info - done --- Detecting C compile features --- Detecting C compile features - done --- Check for working CXX compiler: /usr/bin/c++ --- Check for working CXX compiler: /usr/bin/c++ -- works --- Detecting CXX compiler ABI info --- Detecting CXX compiler ABI info - done --- Detecting CXX compile features --- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/CXX.includecache b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/CXX.includecache index 7f44e5f..2eb49d9 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/CXX.includecache +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/CXX.includecache @@ -6,27 +6,17 @@ #IncludeRegexTransform: -/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp -unistd.h +/home/wanhui/CallJvm/callJvmThreadpool/client.cpp +stdio.h - -cstdlib +sys/socket.h - -jni.h +arpa/inet.h - -tpool.h -/home/wanhui/CallJvm/callJvmThreadpool/tpool.h - -/home/wanhui/CallJvm/callJvmThreadpool/tpool.h -pthread.h +unistd.h - - -/usr/local/java/include/jni.h -stdio.h +string.h - -stdarg.h +iostream - -jni_md.h -/usr/local/java/include/jni_md.h - -/usr/local/java/include/linux/jni_md.h diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/DependInfo.cmake b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/DependInfo.cmake index 9ce854e..f1c9b69 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/DependInfo.cmake +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/DependInfo.cmake @@ -4,6 +4,8 @@ set(CMAKE_DEPENDS_LANGUAGES ) # The set of files for implicit dependencies of each language: set(CMAKE_DEPENDS_CHECK_CXX + "/home/wanhui/CallJvm/callJvmThreadpool/client.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/client.cpp.o" + "/home/wanhui/CallJvm/callJvmThreadpool/server.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/server.cpp.o" "/home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/threadpool.cpp.o" "/home/wanhui/CallJvm/callJvmThreadpool/tpool.cpp" "/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/tpool.cpp.o" ) diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/build.make b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/build.make index be69354..845a15f 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/build.make +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/build.make @@ -83,21 +83,51 @@ CMakeFiles/main.dir/threadpool.cpp.s: cmake_force @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/threadpool.cpp.s" /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp -o CMakeFiles/main.dir/threadpool.cpp.s +CMakeFiles/main.dir/client.cpp.o: CMakeFiles/main.dir/flags.make +CMakeFiles/main.dir/client.cpp.o: ../client.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/main.dir/client.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/main.dir/client.cpp.o -c /home/wanhui/CallJvm/callJvmThreadpool/client.cpp + +CMakeFiles/main.dir/client.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/main.dir/client.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/wanhui/CallJvm/callJvmThreadpool/client.cpp > CMakeFiles/main.dir/client.cpp.i + +CMakeFiles/main.dir/client.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/client.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/client.cpp -o CMakeFiles/main.dir/client.cpp.s + +CMakeFiles/main.dir/server.cpp.o: CMakeFiles/main.dir/flags.make +CMakeFiles/main.dir/server.cpp.o: ../server.cpp + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/main.dir/server.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/main.dir/server.cpp.o -c /home/wanhui/CallJvm/callJvmThreadpool/server.cpp + +CMakeFiles/main.dir/server.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/main.dir/server.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/wanhui/CallJvm/callJvmThreadpool/server.cpp > CMakeFiles/main.dir/server.cpp.i + +CMakeFiles/main.dir/server.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/main.dir/server.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/wanhui/CallJvm/callJvmThreadpool/server.cpp -o CMakeFiles/main.dir/server.cpp.s + # Object files for target main main_OBJECTS = \ "CMakeFiles/main.dir/tpool.cpp.o" \ -"CMakeFiles/main.dir/threadpool.cpp.o" +"CMakeFiles/main.dir/threadpool.cpp.o" \ +"CMakeFiles/main.dir/client.cpp.o" \ +"CMakeFiles/main.dir/server.cpp.o" # External object files for target main main_EXTERNAL_OBJECTS = main: CMakeFiles/main.dir/tpool.cpp.o main: CMakeFiles/main.dir/threadpool.cpp.o +main: CMakeFiles/main.dir/client.cpp.o +main: CMakeFiles/main.dir/server.cpp.o main: CMakeFiles/main.dir/build.make main: /usr/local/java/jre/lib/amd64/server/libjvm.so main: /usr/lib/x86_64-linux-gnu/libpthread.so main: CMakeFiles/main.dir/link.txt - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX executable main" + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/wanhui/CallJvm/callJvmThreadpool/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking CXX executable main" $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/main.dir/link.txt --verbose=$(VERBOSE) # Rule to build all files generated by this target. diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/client.cpp.o b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/client.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..91c7bc45a9a9ab87a570fbcb638b90b3725a1693 GIT binary patch literal 104496 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 T97e}fQRNpR{@+UhISl?64|yk< literal 0 HcmV?d00001 diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/cmake_clean.cmake b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/cmake_clean.cmake index b46813f..b0eb974 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/cmake_clean.cmake +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/cmake_clean.cmake @@ -1,6 +1,8 @@ file(REMOVE_RECURSE "CMakeFiles/main.dir/tpool.cpp.o" "CMakeFiles/main.dir/threadpool.cpp.o" + "CMakeFiles/main.dir/client.cpp.o" + "CMakeFiles/main.dir/server.cpp.o" "main.pdb" "main" ) diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.internal b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.internal index 6aa31eb..e119923 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.internal +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.internal @@ -1,11 +1,8 @@ # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 3.14 -CMakeFiles/main.dir/threadpool.cpp.o - /home/wanhui/CallJvm/callJvmThreadpool/threadpool.cpp - /home/wanhui/CallJvm/callJvmThreadpool/tpool.h - /usr/local/java/include/jni.h - /usr/local/java/include/linux/jni_md.h +CMakeFiles/main.dir/client.cpp.o + /home/wanhui/CallJvm/callJvmThreadpool/client.cpp CMakeFiles/main.dir/tpool.cpp.o /home/wanhui/CallJvm/callJvmThreadpool/tpool.cpp /home/wanhui/CallJvm/callJvmThreadpool/tpool.h diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.make b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.make index a0698b5..0357023 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.make +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/depend.make @@ -1,10 +1,7 @@ # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 3.14 -CMakeFiles/main.dir/threadpool.cpp.o: ../threadpool.cpp -CMakeFiles/main.dir/threadpool.cpp.o: ../tpool.h -CMakeFiles/main.dir/threadpool.cpp.o: /usr/local/java/include/jni.h -CMakeFiles/main.dir/threadpool.cpp.o: /usr/local/java/include/linux/jni_md.h +CMakeFiles/main.dir/client.cpp.o: ../client.cpp CMakeFiles/main.dir/tpool.cpp.o: ../tpool.cpp CMakeFiles/main.dir/tpool.cpp.o: ../tpool.h diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/link.txt b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/link.txt index af1c94b..3a047b6 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/link.txt +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -g CMakeFiles/main.dir/tpool.cpp.o CMakeFiles/main.dir/threadpool.cpp.o -o main -Wl,-rpath,/usr/local/java/jre/lib/amd64/server /usr/local/java/jre/lib/amd64/server/libjvm.so -lpthread +/usr/bin/c++ -g CMakeFiles/main.dir/tpool.cpp.o CMakeFiles/main.dir/threadpool.cpp.o CMakeFiles/main.dir/client.cpp.o CMakeFiles/main.dir/server.cpp.o -o main -Wl,-rpath,/usr/local/java/jre/lib/amd64/server /usr/local/java/jre/lib/amd64/server/libjvm.so -lpthread diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/progress.make b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/progress.make index 6a9dc74..33e6bff 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/progress.make +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/progress.make @@ -1,4 +1,6 @@ CMAKE_PROGRESS_1 = 1 CMAKE_PROGRESS_2 = 2 CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/threadpool.cpp.o b/callJvmThreadpool/cmake-build-debug/CMakeFiles/main.dir/threadpool.cpp.o deleted file mode 100644 index 2c705b90eaacc97f5553defa04273b3427b5b8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93176 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

0)=k!wrK9TJ+OW-TGU9A>)*P|%ilLdY`_tP5$ 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 Q_UG#VALM_RbdcTXe@EUEGynhq diff --git a/callJvmThreadpool/cmake-build-debug/CMakeFiles/progress.marks b/callJvmThreadpool/cmake-build-debug/CMakeFiles/progress.marks index 00750ed..7ed6ff8 100644 --- a/callJvmThreadpool/cmake-build-debug/CMakeFiles/progress.marks +++ b/callJvmThreadpool/cmake-build-debug/CMakeFiles/progress.marks @@ -1 +1 @@ -3 +5 diff --git a/callJvmThreadpool/cmake-build-debug/Makefile b/callJvmThreadpool/cmake-build-debug/Makefile index 3288b20..6909bf6 100644 --- a/callJvmThreadpool/cmake-build-debug/Makefile +++ b/callJvmThreadpool/cmake-build-debug/Makefile @@ -123,6 +123,60 @@ main/fast: $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/build .PHONY : main/fast +client.o: client.cpp.o + +.PHONY : client.o + +# target to build an object file +client.cpp.o: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.o +.PHONY : client.cpp.o + +client.i: client.cpp.i + +.PHONY : client.i + +# target to preprocess a source file +client.cpp.i: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.i +.PHONY : client.cpp.i + +client.s: client.cpp.s + +.PHONY : client.s + +# target to generate assembly for a file +client.cpp.s: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/client.cpp.s +.PHONY : client.cpp.s + +server.o: server.cpp.o + +.PHONY : server.o + +# target to build an object file +server.cpp.o: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.o +.PHONY : server.cpp.o + +server.i: server.cpp.i + +.PHONY : server.i + +# target to preprocess a source file +server.cpp.i: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.i +.PHONY : server.cpp.i + +server.s: server.cpp.s + +.PHONY : server.s + +# target to generate assembly for a file +server.cpp.s: + $(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/server.cpp.s +.PHONY : server.cpp.s + threadpool.o: threadpool.cpp.o .PHONY : threadpool.o @@ -186,6 +240,12 @@ help: @echo "... rebuild_cache" @echo "... main" @echo "... edit_cache" + @echo "... client.o" + @echo "... client.i" + @echo "... client.s" + @echo "... server.o" + @echo "... server.i" + @echo "... server.s" @echo "... threadpool.o" @echo "... threadpool.i" @echo "... threadpool.s" diff --git a/callJvmThreadpool/cmake-build-debug/callJvmThreadpool.cbp b/callJvmThreadpool/cmake-build-debug/callJvmThreadpool.cbp index 53206a6..edf7705 100644 --- a/callJvmThreadpool/cmake-build-debug/callJvmThreadpool.cbp +++ b/callJvmThreadpool/cmake-build-debug/callJvmThreadpool.cbp @@ -96,12 +96,18 @@ + + + + diff --git a/callJvmThreadpool/cmake-build-debug/main b/callJvmThreadpool/cmake-build-debug/main index ce04994a1757da4280776b337a85c3696654985c..1cc967a7e51d2c4b197d72deb45f0ca3ff69af57 100755 GIT binary patch literal 93320 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 diff --git a/callJvmThreadpool/server.cpp b/callJvmThreadpool/server.cpp new file mode 100644 index 0000000..31ab0f1 --- /dev/null +++ b/callJvmThreadpool/server.cpp @@ -0,0 +1,77 @@ +// +// Created by wanhui on 11/2/19. +// + +#include +#include +#include +#include +#include +#include +#include + +#define PORT 8080 + +int main() { + int server_fd, new_socket, valread; + struct sockaddr_in address; + + int opt = 1; + int addrlen = sizeof(address); + char buffer[1024] = {0}; + char *psql = nullptr; + char *dbn = nullptr; + char *hello = "Hello from server"; + + // Creating socket file descriptor + if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + perror("socket failed"); + exit(EXIT_FAILURE); + } + + // Forcefully attaching socket to the port 8080 + if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, + &opt, sizeof(opt))) { + perror("setsockopt"); + exit(EXIT_FAILURE); + } + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(PORT); + + // Forcefully attaching socket to the port 8080 + if (bind(server_fd, (struct sockaddr *) &address, + sizeof(address)) < 0) { + perror("bind failed"); + exit(EXIT_FAILURE); + } + if (listen(server_fd, 3) < 0) { + perror("listen"); + exit(EXIT_FAILURE); + } + if ((new_socket = accept(server_fd, (struct sockaddr *) &address, + (socklen_t *) &addrlen)) < 0) { + perror("accept"); + exit(EXIT_FAILURE); + } + + valread = read(new_socket, buffer, 1024); + printf("%s\n", buffer); + + int i; + for(i = 0; i < strlen(buffer); i++) + { + if(buffer[i] == '$') + { + strncpy(psql, buffer, i); + strncpy(dbn, buffer + i + 1, strlen(buffer) - i - 1); + } + } + printf("%s\n", psql); + printf("%s\n", dbn); + + + send(new_socket, hello, strlen(hello), 0); + printf("Hello message sent\n"); + return 0; +} \ No newline at end of file diff --git a/callJvmThreadpool/threadpool.cpp b/callJvmThreadpool/threadpool.cpp index 6068d2d..bdbb76f 100644 --- a/callJvmThreadpool/threadpool.cpp +++ b/callJvmThreadpool/threadpool.cpp @@ -2,22 +2,106 @@ // Created by wanhui on 10/12/19. // -#include +#include #include +#include +#include +#include +#include +#include #include #include "tpool.h" #define NUM_THREADS 6 +#define PORT 8080 + struct JVM { JavaVM *jvm; }; -void invoke_class(JNIEnv* env); -void* jvmThreads(void *myJvm) +void *jvmThreads(void *myJvm, char* plainsql, char* dbname); + +JNIEnv *create_vm(struct JVM *jvm); + +void invoke_class(JNIEnv* env, std::string str1, std::string str2); + +int socket_init(); + +void* handle_stream(void* myJvm, void* arg); + + + +void* handle_stream(void* myJvm, void* arg) +{ + int server_fd = (int&)arg; + char buf[1024]; + char* psql; + char* dbn; + + read(server_fd, buf, 1024); + printf("%s\n", buf); + + int i; + for(i = 0; i < strlen(buf); i++) + { + if(buf[i] == '$') + { + strncpy(psql, buf, i); + strncpy(dbn, buf + i + 1, strlen(buf) - i - 1); + } + } + + jvmThreads(arg, psql, dbn); + +} + +int socket_init() +{ + int server_fd; + struct sockaddr_in address; + int opt = 1; + + socklen_t addrlen = sizeof(address); + + // crating socket file descriptor + if((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) + { + perror("socket failed"); + exit(EXIT_FAILURE); + } + + // forcefully attaching socket to the port 8080 + if(setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) + { + perror("socketopt"); + exit(EXIT_FAILURE); + } + + address.sin_family = AF_INET; + // change the clients' address and port + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(PORT); + + if(bind(server_fd, (struct sockaddr *)&address, addrlen) < 0) + { + perror("bind failed"); + exit(EXIT_FAILURE); + } + + if(listen(server_fd, 3) < 0) + { + perror("listen"); + exit(EXIT_FAILURE); + } + + return server_fd; +} + +void* jvmThreads(void *myJvm, char* plainsql, char* dbname) { auto* myJvmptr = (struct JVM*) myJvm; JavaVM *jvmPtr = myJvmptr->jvm; @@ -25,7 +109,7 @@ void* jvmThreads(void *myJvm) JNIEnv* env = nullptr; jvmPtr->AttachCurrentThread((void**)&(env), nullptr); - invoke_class(env); + invoke_class(env, plainsql, dbname); jvmPtr->DetachCurrentThread(); return nullptr; @@ -55,7 +139,7 @@ JNIEnv *create_vm (struct JVM *jvm) { } -void invoke_class (JNIEnv * env) { +void invoke_class (JNIEnv * env, char* plainsql, char* dbname) { jclass Main_class; jmethodID fun_id; jmethodID static_id; @@ -80,9 +164,11 @@ void invoke_class (JNIEnv * env) { // test generally function student() hello_id = env->GetMethodID(Main_class, "", "()V"); obj1 = env->NewObject(Main_class, hello_id); - jstring name = env->NewStringUTF("XWH"); + jstring plainsqlstr = env->NewStringUTF(plainsql); + jstring dbnamestr = env->NewStringUTF(dbname); + stu_id = env->GetMethodID(Main_class, "student", "([Ljava/lang/String;)V"); - env->CallObjectMethod(obj1, stu_id, name); + env->CallObjectMethod(obj1, stu_id, dbnamestr); } int main () { @@ -90,7 +176,10 @@ int main () { JNIEnv *myEnv = create_vm (&myJvm); if (myEnv == nullptr) - return 1; + { + printf("create_vm failed\n"); + exit(1); + } if(tpool_create(NUM_THREADS) != 0) { @@ -98,15 +187,39 @@ int main () { exit(1); } - int i; - for(i = 0; i < 10; i++) + int sock = socket_init(); + struct sockaddr_in address; + printf("listening...\n"); + socklen_t len = sizeof(address); + + + // endless loop + while(true) { - tpool_add_work(reinterpret_cast(jvmThreads), reinterpret_cast(&myJvm)); + int sock = accept(sock, (struct sockaddr*)&address, &len); + if(sock < 0) + { + perror("\nAccept Failed\n"); + continue; + } + + tpool_add_work(reinterpret_cast(handle_stream), reinterpret_cast(&myJvm), (void *)sock); } - sleep(2); - tpool_destroy(); - myJvm.jvm->DestroyJavaVM (); + + + // only 10 tasks + +// int i; +// for(i = 0; i < 10; i++) +// { +// tpool_add_work(reinterpret_cast(jvmThreads), reinterpret_cast(&myJvm), ); +// } +// +// sleep(2); +// tpool_destroy(); +// myJvm.jvm->DestroyJavaVM (); + return 0; } diff --git a/callJvmThreadpool/tpool.cpp b/callJvmThreadpool/tpool.cpp index c707176..5481357 100644 --- a/callJvmThreadpool/tpool.cpp +++ b/callJvmThreadpool/tpool.cpp @@ -118,7 +118,7 @@ void tpool_destroy() free(tpool); } -int tpool_add_work(void*(*routine)(void*), void* arg) +int tpool_add_work(void*(*routine)(void*), void* arg, void* arg1) { tpool_work_t *work, *member; @@ -137,6 +137,7 @@ int tpool_add_work(void*(*routine)(void*), void* arg) work->routine = routine; work->arg = arg; + work->arg1 = arg1; work->next = nullptr; pthread_mutex_lock(&tpool->queue_lock); diff --git a/callJvmThreadpool/tpool.h b/callJvmThreadpool/tpool.h index 879503f..1a2e9f3 100644 --- a/callJvmThreadpool/tpool.h +++ b/callJvmThreadpool/tpool.h @@ -12,6 +12,7 @@ typedef struct tpool_work { void* (*routine)(void*); void *arg; + void *arg1; struct tpool_work *next; } tpool_work_t; @@ -29,7 +30,7 @@ int tpool_create(int max_thr_num); void tpool_destroy(); -int tpool_add_work(void*(*routine)(void*), void* arg); +int tpool_add_work(void*(*routine)(void*), void* arg, void* arg1); #endif //CALLJVMTHREADPOOL_TPOOL_H -- GitLab