Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wt/WServer>
- #include <Wt/WResource>
- #include <Wt/Http/Client>
- #include <Wt/Http/Response>
- #include <memory>
- #include <atomic>
- #include <Wt/Http/Client>
- #include <Wt/Http/Response>
- #include <atomic>
- // $ while [ "$(curl -s 'http://localhost/TestCase')" == "done" ]; do echo -n '.'; sleep 1; done
- class TestCase : public Wt::WResource {
- public:
- TestCase (Wt::WServer& server) :server(server) { }
- ~TestCase () { beingDeleted(); }
- void handleRequest (const Wt::Http::Request& request, Wt::Http::Response& response) override
- {
- const auto& parameterMap = request.getParameterMap();
- auto send = parameterMap.find("secondCall") == parameterMap.end();
- if (send) {
- SimulationOfSomeCalculationInAnExternalSystemThatConnectsBack();
- }
- response.out().write("done", 4);
- }
- private:
- Wt::WServer& server;
- void SimulationOfSomeCalculationInAnExternalSystemThatConnectsBack ()
- {
- std::atomic<bool> done = false;
- auto client = std::make_unique<Wt::Http::Client>();
- client->done().connect([&] (boost::system::error_code err, const Http::Message& /*response*/, ...) {
- if (err) server.log("error") << err.message();
- done = true;
- });
- //if (client->get("http://localhost/TestCase?secondCall=true")) {
- if (client->get("http://localhost/TestCase2?secondCall=true")) {
- while (!done) {
- boost::this_thread::sleep_for(boost::chrono::milliseconds{20});
- }
- }
- else {
- server.log("error") << "something is wrong with the url";
- }
- }
- };
- int main (int argc, char** argv)
- {
- Wt::WServer wserver{argc, argv};
- TestCase testcase(wserver);
- wserver.addResource(&testcase, "/TestCase");
- TestCase testcase2(wserver);
- wserver.addResource(&testcase2, "/TestCase2");
- wserver.run();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment