view OrthancServer/Resources/Testing/Issue32/Cpp/main.cpp @ 5911:bfae0fc2ea1b get-scu-test

Started to work on handling errors as warnings when trying to store instances whose SOPClassUID has not been accepted during the negotiation. Work to be finalized later
author Alain Mazy <am@orthanc.team>
date Mon, 09 Dec 2024 10:07:19 +0100
parents cd363608551a
children
line wrap: on
line source

#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;
}