Orthanc/OrthancServer/Resources/Testing/Issue32/Cpp/main.cpp
2025-06-23 19:07:37 +05:30

87 lines
1.8 KiB
C++

#include "../../../../../OrthancFramework/Sources/HttpClient.h"
#include "../../../../../OrthancFramework/Sources/Logging.h"
#include "../../../../../OrthancFramework/Sources/OrthancException.h"
#include "../../../../../OrthancFramework/Sources/SystemToolbox.h"
#include <iostream>
#include <boost/thread.hpp>
static void Worker(bool *done)
{
LOG(WARNING) << "One thread has started";
Orthanc::HttpClient client;
//client.SetUrl("http://localhost:8042/studies");
//client.SetUrl("http://localhost:8042/tools/default-encoding");
client.SetUrl("http://localhost:8042/system");
//client.SetUrl("http://localhost:8042/");
//client.SetCredentials("orthanc", "orthanc");
client.SetRedirectionFollowed(false);
while (!(*done))
{
try
{
#if 0
Json::Value v;
if (!client.Apply(v) ||
v.type() != Json::objectValue)
{
printf("ERROR\n");
}
#else
std::string s;
if (!client.Apply(s) ||
s.empty())
{
printf("ERROR\n");
}
#endif
}
catch (Orthanc::OrthancException& e)
{
printf("EXCEPTION: %s", e.What());
}
}
LOG(WARNING) << "One thread has stopped";
}
int main()
{
Orthanc::Logging::Initialize();
//Orthanc::Logging::EnableInfoLevel(true);
Orthanc::HttpClient::GlobalInitialize();
{
bool done = false;
std::vector<boost::thread*> threads;
for (size_t i = 0; i < 100; i++)
{
threads.push_back(new boost::thread(Worker, &done));
}
LOG(WARNING) << "STARTED";
Orthanc::SystemToolbox::ServerBarrier();
LOG(WARNING) << "STOPPING";
done = true;
for (size_t i = 0; i < threads.size(); i++)
{
if (threads[i]->joinable())
{
threads[i]->join();
}
delete threads[i];
}
}
Orthanc::HttpClient::GlobalFinalize();
printf("OK\n");
return 0;
}