1
0
forked from oomer/bellatui

switched to connection_state only, server threads should never break loop, copy command bug fixed by switching to new form for vcxproj

This commit is contained in:
Harvey Fong 2025-03-01 11:29:27 -07:00
parent c26a1bf653
commit ff75e31383
2 changed files with 26 additions and 17 deletions

View File

@ -26,7 +26,7 @@
using namespace dl; using namespace dl;
using namespace dl::bella_sdk; using namespace dl::bella_sdk;
std::atomic<bool> heartbeat_state (true); //std::atomic<bool> heartbeat_state (true);
std::atomic<bool> connection_state (false); std::atomic<bool> connection_state (false);
std::atomic<bool> abort_state (false); std::atomic<bool> abort_state (false);
std::atomic<bool> server (false); std::atomic<bool> server (false);
@ -104,7 +104,6 @@ void heartbeat_thread( std::string server_pkey, //CLIENT
bool is_server, //BOTH bool is_server, //BOTH
std::string server_address, //CLIENT std::string server_address, //CLIENT
uint16_t heartbeat_port ) { //BOTH uint16_t heartbeat_port ) { //BOTH
heartbeat_state = true;
zmq::context_t ctx; zmq::context_t ctx;
zmq::socket_t heartbeat_sock; //top scope zmq::socket_t heartbeat_sock; //top scope
@ -121,7 +120,7 @@ void heartbeat_thread( std::string server_pkey, //CLIENT
zmq::pollitem_t response_item = { heartbeat_sock, 0, ZMQ_POLLIN, 0 }; zmq::pollitem_t response_item = { heartbeat_sock, 0, ZMQ_POLLIN, 0 };
zmq::poll(&response_item, 1, 5000); // Wait for response with timeout zmq::poll(&response_item, 1, 5000); // Wait for response with timeout
if (response_item.revents & ZMQ_POLLIN) { if (response_item.revents & ZMQ_POLLIN) { //heartbeat
zmq::message_t message; zmq::message_t message;
//ZIN<<< //ZIN<<<
heartbeat_sock.recv(message, zmq::recv_flags::none); heartbeat_sock.recv(message, zmq::recv_flags::none);
@ -129,7 +128,7 @@ void heartbeat_thread( std::string server_pkey, //CLIENT
heartbeat_sock.send(zmq::message_t("ACK"), zmq::send_flags::dontwait); // No block heartbeat_sock.send(zmq::message_t("ACK"), zmq::send_flags::dontwait); // No block
} else { //timeout } else { //timeout
std::cout << "Bella Client Lost" << std::endl; std::cout << "Bella Client Lost" << std::endl;
heartbeat_state = false; connection_state = false;
} }
} }
std::this_thread::sleep_for(std::chrono::milliseconds(100)); std::this_thread::sleep_for(std::chrono::milliseconds(100));
@ -161,7 +160,6 @@ void heartbeat_thread( std::string server_pkey, //CLIENT
//std::cout << "Heartbeat Response: " << std::endl; //std::cout << "Heartbeat Response: " << std::endl;
} else { } else {
std::cout << "Bella Server is unavailable" << std::endl; std::cout << "Bella Server is unavailable" << std::endl;
heartbeat_state = false;
connection_state = false; connection_state = false;
break; break;
} }
@ -285,25 +283,25 @@ int DL_main(Args& args)
heartbeat_port); //bind port heartbeat_port); //bind port
// //
while(true) { // awaiting new client loop while(true) { // awaiting new client loop
heartbeat_state = true;
std::cout << "Awaiting new client ..." << std::endl; std::cout << "Awaiting new client ..." << std::endl;
pkey_server(server_pkey, publickey_port); // blocking wait client to get public key pkey_server(server_pkey, publickey_port); // blocking wait client to get public key
std::cout << "Client connected" << std::endl; std::cout << "Client connected" << std::endl;
connection_state = true;
while(true) { // inner loop while(true) { // inner loop
if (heartbeat_state.load()==false) { if (connection_state.load()==false) {
std::cout << "Client connectiono dead" << std::endl; std::cout << "Client connectiono dead" << std::endl;
break; // Go back to awaiting client break; // Go back to awaiting client
} }
std::this_thread::sleep_for(std::chrono::milliseconds(10)); std::this_thread::sleep_for(std::chrono::milliseconds(10));
} }
} }
abort_state==true; //abort_state==true;
server_t.join(); server_t.join();
heartbeat_t.join(); heartbeat_t.join();
return 0; return 0;
} else { } else { //Client
char client_skey[41] = { 0 }; char client_skey[41] = { 0 };
char client_pkey[41] = { 0 }; char client_pkey[41] = { 0 };
if ( zmq_curve_keypair(&client_pkey[0], &client_skey[0])) { if ( zmq_curve_keypair(&client_pkey[0], &client_skey[0])) {
@ -334,11 +332,11 @@ int DL_main(Args& args)
heartbeat_port); //connect port heartbeat_port); //connect port
while (true) { while (true) {
if (!heartbeat_state.load()) { /*if (!heartbeat_state.load()) {
std::cout << "Dead" << std::endl; std::cout << "Dead" << std::endl;
abort_state==true; abort_state==true;
break; break;
} }*/
if (connection_state.load() == false) { if (connection_state.load() == false) {
std::cout << "Dead2" << std::endl; std::cout << "Dead2" << std::endl;
abort_state==true; abort_state==true;
@ -612,6 +610,7 @@ void server_thread( std::string server_skey,
std::ofstream binaryOutputFile;// for writing std::ofstream binaryOutputFile;// for writing
std::ifstream binaryInputFile;// for reading std::ifstream binaryInputFile;// for reading
while (true) { while (true) {
std::cout << "expect\n";
zmq::message_t msg_command; zmq::message_t msg_command;
//ZIN<<< //ZIN<<<
command_sock.recv(msg_command, zmq::recv_flags::none); command_sock.recv(msg_command, zmq::recv_flags::none);
@ -626,10 +625,7 @@ void server_thread( std::string server_skey,
std::cout << "Client disconnecting..." << std::endl; std::cout << "Client disconnecting..." << std::endl;
//>>>ZOUT //>>>ZOUT
command_sock.send(zmq::message_t("RDY"), zmq::send_flags::none); command_sock.send(zmq::message_t("RDY"), zmq::send_flags::none);
heartbeat_state = false; connection_state = false; //<<
connection_state = false;
abort_state = true;
break;
// RENDER // RENDER
} else if (client_command == "render") { } else if (client_command == "render") {
std::cout << "start render" << std::endl; std::cout << "start render" << std::endl;
@ -837,4 +833,4 @@ void pkey_server(const std::string& pub_key, uint16_t publickey_port) {
} }
sock.close(); sock.close();
ctx.close(); ctx.close();
} }

View File

@ -91,7 +91,19 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
<PostBuildEvent> <PostBuildEvent>
<Command>copy "$(ProjectDir)..\bella_engine_sdk\lib\*.dll" "$(TargetDir)"</Command> <Command>echo Post-build event started &amp;
copy "$(ProjectDir)..\bella_engine_sdk\lib\bella_engine_sdk.dll" "$(TargetDir)" &amp;
echo bella_engine_sdk.dll copied &amp;
copy "$(ProjectDir)..\bella_engine_sdk\lib\dl_core.dll" "$(TargetDir)" &amp;
echo dl_core.dll copied &amp;
copy "$(ProjectDir)..\bella_engine_sdk\lib\dl_oidn_core.dll" "$(TargetDir)" &amp;
echo dl_oidn_core.dll copied &amp;
copy "$(ProjectDir)..\..\vcpkg\installed\x64-windows\bin\libzmq-mt-4_3_5.dll" "$(TargetDir)" &amp;
echo libzmq-mt-4_3_5.dll copied &amp;
copy "$(ProjectDir)..\..\vcpkg\installed\x64-windows\bin\libsodium.dll" "$(TargetDir)" &amp;
echo libsodium.dll copied &amp;
echo Post-build event finished</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
@ -149,3 +161,4 @@
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>