mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
use protobuf from inside grpc, even for parsing protofiles for easy version switch, fix html error
This commit is contained in:
parent
3e3bd6d012
commit
72b4389be4
@ -3,6 +3,8 @@ project(Gradido_LoginServer C CXX)
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin" )
|
||||
|
||||
SET ( CMAKE_CXX_FLAGS "-std=c++17" )
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
include_directories(
|
||||
"dependencies"
|
||||
@ -12,6 +14,7 @@ include_directories(
|
||||
"dependencies/mariadb-connector-c/build/include"
|
||||
"dependencies/spirit-po/include"
|
||||
"dependencies/grpc/include"
|
||||
"dependencies/grpc/third_party/protobuf/src"
|
||||
"src/cpp/proto"
|
||||
#"dependencies/mariadb-connector-c/build/include"
|
||||
#"dependencies/mariadb-connector-c/include"
|
||||
@ -99,6 +102,7 @@ set(GRPC_ABSL_PATH "dependencies/grpc/_build/third_party/abseil-cpp/absl/types/D
|
||||
set(GRPC_CARES_PATH "dependencies/grpc/_build/third_party/cares/cares/lib/Debug")
|
||||
set(GRPC_BORING_SSL_PATH "dependencies/grpc/_build/third_party/boringssl-with-bazel/Debug")
|
||||
set(GRPC_RE2_PATH "dependencies/grpc/_build/third_party/re2/Debug")
|
||||
set(GRPC_PROTOBUF_DEBUG_PATH "dependencies/grpc/_build/third_party/protobuf/Debug")
|
||||
find_library(GRPC_PLUSPLUS grpc++ PATHS ${GRPC_PATH} REQUIRED)
|
||||
find_library(GRPC_UNSECURE grpc++_unsecure PATHS ${GRPC_PATH} REQUIRED)
|
||||
find_library(GRPC_REFLECTION grpc++_reflection PATHS ${GRPC_PATH} REQUIRED)
|
||||
@ -112,6 +116,9 @@ find_library(GRPC_CARES cares PATHS ${GRPC_CARES_PATH} REQUIRED)
|
||||
find_library(GRPC_BORING_SSL_CRYPTO crypto ${GRPC_BORING_SSL_PATH} REQUIRED)
|
||||
find_library(GRPC_BORING_SSL_SSL ssl ${GRPC_BORING_SSL_PATH} REQUIRED)
|
||||
find_library(GRPC_RE2 re2 ${GRPC_RE2_PATH} REQUIRED)
|
||||
find_library(PROTOBUF_LIB_DEBUG libprotobufd ${GRPC_PROTOBUF_DEBUG_PATH} REQUIRED)
|
||||
find_library(PROTOBUF_LIB_LITE_DEBUG libprotobuf-lited ${GRPC_PROTOBUF_DEBUG_PATH} REQUIRED)
|
||||
find_library(PROTOBUF_LIBC_DEBUG libprotocd ${GRPC_PROTOBUF_DEBUG_PATH} REQUIRED)
|
||||
|
||||
find_library(GRPC_ABSL_BAD_OPTIONAL_ACCESS absl_bad_optional_access ${GRPC_ABSL_PATH} REQUIRED)
|
||||
set(GRPC_LIBS
|
||||
@ -123,6 +130,12 @@ set(GRPC_LIBS
|
||||
${GRPC_BORING_SSL_SSL}
|
||||
${GRPC_RE2}
|
||||
)
|
||||
set(PROTOBUF_DEBUG_LIBS
|
||||
${PROTOBUF_LIB_DEBUG}
|
||||
${PROTOBUF_LIB_LITE_DEBUG}
|
||||
${PROTOBUF_LIBC_DEBUG}
|
||||
)
|
||||
|
||||
|
||||
set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include")
|
||||
|
||||
@ -174,7 +187,7 @@ target_link_libraries(Gradido_LoginServer absl::base absl::flat_hash_map absl::f
|
||||
if(WIN32)
|
||||
TARGET_LINK_LIBRARIES(Gradido_LoginServer optimized ${MYSQL_LIBRARIES} Shlwapi)
|
||||
TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
|
||||
TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${GRPC_LIBS})
|
||||
TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
|
||||
else(WIN32)
|
||||
target_link_libraries(Gradido_LoginServer libmariadb protoc protobuf -pthread)
|
||||
endif(WIN32)
|
||||
|
||||
1
README
1
README
@ -25,6 +25,7 @@ mkdir _build
|
||||
cd _build
|
||||
cmake ..
|
||||
make
|
||||
# under windows build at least release for protoc.exe and grpc c++ plugin
|
||||
cd ../../../
|
||||
|
||||
# get more dependencies with conan (need conan from https://conan.io/)
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
[requires]
|
||||
Poco/1.9.4@pocoproject/stable
|
||||
libsodium/1.0.18@bincrafters/stable
|
||||
protobuf/3.9.1@bincrafters/stable
|
||||
boost/1.71.0@conan/stable
|
||||
gtest/1.8.1@bincrafters/stable
|
||||
|
||||
|
||||
0
compile_proto.sh → parse_proto.sh
Executable file → Normal file
0
compile_proto.sh → parse_proto.sh
Executable file → Normal file
@ -264,16 +264,15 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
#line 172 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( hedera_account_model->getUpdatedString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c5\">\n";
|
||||
responseStream << "\t\t\t\t\t<button class=\"form-button\" title=\"Anfrage an Hedera, kostet etwas\" onclick=\"window.location.href='";
|
||||
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( updateUrl );
|
||||
responseStream << "'\" >\n";
|
||||
responseStream << "\t\t\t\t\t\tUpdate Balance\n";
|
||||
responseStream << "\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 177 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
@ -282,7 +281,7 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\" action=\"";
|
||||
#line 185 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 184 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/hedera_account\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\">Hedera Account ID</label>\n";
|
||||
@ -296,21 +295,21 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-network-type\">Network Type</label>\n";
|
||||
responseStream << "\t\t\t<select class=\"form-control\" name=\"account-network-type\" id=\"account-network-type\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
for(int i = 0; i < model::table::HEDERA_NET_COUNT; i++) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<option value=\"";
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( i );
|
||||
responseStream << "\">";
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString((model::table::HederaNetworkType)i) );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"";
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( gettext("Add Account") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t</form>\n";
|
||||
|
||||
@ -28,7 +28,6 @@ namespace controller {
|
||||
{
|
||||
auto db = new model::table::HederaAccount();
|
||||
auto hedera_account_list = db->loadFromDB<int, model::table::HederaAccountTuple>(fieldName, fieldValue, 2);
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaAccount>> resultVector;
|
||||
resultVector.reserve(hedera_account_list.size());
|
||||
for (auto it = hedera_account_list.begin(); it != hedera_account_list.end(); it++) {
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
#include "HederaRequest.h"
|
||||
#include "../proto/hedera/CryptoService.grpc.pb.h"
|
||||
|
||||
#include "../lib/DataTypeConverter.h"
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpcpp/channel.h>
|
||||
#include <grpcpp/client_context.h>
|
||||
@ -22,16 +24,22 @@ HederaRequestReturn HederaRequest::request(model::hedera::Query* query)
|
||||
auto channel = grpc::CreateChannel(query->getConnectionString(), grpc::InsecureChannelCredentials());
|
||||
grpc::ClientContext context;
|
||||
std::chrono::system_clock::time_point deadline = std::chrono::system_clock::now() +
|
||||
std::chrono::milliseconds(100);
|
||||
std::chrono::milliseconds(10000);
|
||||
context.set_deadline(deadline);
|
||||
grpc::CompletionQueue cq;
|
||||
|
||||
auto proto_query = query->getProtoQuery();
|
||||
auto proto_query_serialized = proto_query->SerializeAsString();
|
||||
auto query_hex_string = DataTypeConverter::binToHex((unsigned char*)proto_query_serialized.data(), proto_query_serialized.size());
|
||||
printf("[HederaRequest::request] query as hex: %s\n", query_hex_string.data());
|
||||
proto::Response* response = nullptr;
|
||||
if (proto_query->has_cryptogetaccountbalance()) {
|
||||
auto stub = proto::CryptoService::NewStub(channel);
|
||||
auto connect_string = query->getConnectionString();
|
||||
printf("try connection to hedera with: %s\n", connect_string.data());
|
||||
//auto stream = stub->PrepareAsynccryptoGetBalance(&context, *proto_query, &cq);
|
||||
auto status = stub->cryptoGetBalance(&context, *proto_query, response);
|
||||
//stream->StartCall();
|
||||
addError(new ParamError("Hedera Request", "crypto get balance", status.error_message()));
|
||||
printf("[HederaRequest::request] error details: %s\n", status.error_details().data());
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ namespace model {
|
||||
auto get_account_balance = query->mQueryProto.mutable_cryptogetaccountbalance();
|
||||
accountId->copyToProtoAccountId(get_account_balance->mutable_accountid());
|
||||
auto query_header = get_account_balance->mutable_header();
|
||||
query_header->set_responsetype(proto::ANSWER_ONLY);
|
||||
query_header->set_responsetype(proto::COST_ANSWER);
|
||||
auto transaction = query_header->mutable_payment();
|
||||
//auto transaction_body = transaction->mutable_body();
|
||||
// body content
|
||||
@ -48,7 +48,7 @@ namespace model {
|
||||
auto account_amounts = transfer_list->mutable_accountamounts();
|
||||
account_amounts->Add();
|
||||
auto account_amount = account_amounts->Mutable(0);
|
||||
account_amount->set_amount(0);
|
||||
account_amount->set_amount(1000);
|
||||
connection.hederaId->copyToProtoAccountId(account_amount->mutable_accountid());
|
||||
|
||||
return query;
|
||||
|
||||
@ -170,7 +170,6 @@
|
||||
<div class="cell c3"><%= hedera_account_model->getBalanceDouble() %> hbar</div>
|
||||
<div class="cell c2"><%= model::table::HederaAccount::hederaNetworkTypeToString(hedera_account_model->getNetworkType()) %></div>
|
||||
<div class="cell c3"><%= hedera_account_model->getUpdatedString() %></div>
|
||||
<div class="cell c5">
|
||||
<button class="form-button" title="Anfrage an Hedera, kostet etwas" onclick="window.location.href='<%= updateUrl %>'" >
|
||||
Update Balance
|
||||
</button>
|
||||
|
||||
19
windows_parse_proto.sh
Normal file
19
windows_parse_proto.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
if [ ! -d "./src/cpp/proto" ] ; then
|
||||
mkdir ./src/cpp/proto
|
||||
fi
|
||||
if [ ! -d "./src/cpp/proto/gradido" ] ; then
|
||||
mkdir ./src/cpp/proto/gradido
|
||||
fi
|
||||
PROTOC_PATH=./dependencies/grpc/_build/third_party/protobuf/Release
|
||||
CPP_PLUGIN_PATH=./dependencies/grpc/_build/Release
|
||||
$PROTOC_PATH/protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto
|
||||
|
||||
if [ ! -d "./src/cpp/proto/hedera" ] ; then
|
||||
mkdir ./src/cpp/proto/hedera
|
||||
fi
|
||||
|
||||
GOOGLE_PROTOBUF_INCLUDES=./dependencies/grpc/third_party/protobuf/src
|
||||
$PROTOC_PATH/protoc --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin.exe --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user