mirror of
https://github.com/falk-werner/webfuse
synced 2024-10-27 20:34:10 +00:00
64 lines
1.2 KiB
C++
64 lines
1.2 KiB
C++
#include "webfuse/test/fixture.hpp"
|
|
#include <csignal>
|
|
#include <cstring>
|
|
#include <chrono>
|
|
#include <iostream>
|
|
|
|
namespace webfuse
|
|
{
|
|
|
|
fixture::fixture(filesystem_i & fs)
|
|
: shutdown_requested(false)
|
|
, provider_running(false)
|
|
, fs_provider(fs, "")
|
|
, app(working_dir.name())
|
|
{
|
|
fs_provider.set_connection_listener([this](bool is_connected) {
|
|
if (is_connected)
|
|
{
|
|
this->provider_running = true;
|
|
}
|
|
|
|
if ((!is_connected) && (!this->provider_running))
|
|
{
|
|
this->reconnect();
|
|
}
|
|
});
|
|
provider_thread = std::thread(std::bind(&fixture::provider_run, this));
|
|
while (!provider_running)
|
|
{
|
|
std::this_thread::yield();
|
|
}
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
|
}
|
|
|
|
fixture::~fixture()
|
|
{
|
|
shutdown_requested = true;
|
|
fs_provider.interrupt();
|
|
provider_thread.join();
|
|
}
|
|
|
|
void fixture::provider_run()
|
|
{
|
|
fs_provider.connect("ws://localhost:8081/");
|
|
while (!shutdown_requested)
|
|
{
|
|
fs_provider.service();
|
|
}
|
|
}
|
|
|
|
void fixture::reconnect()
|
|
{
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
fs_provider.connect("ws://localhost:8081/");
|
|
}
|
|
|
|
std::string const & fixture::get_path() const
|
|
{
|
|
return working_dir.name();
|
|
}
|
|
|
|
|
|
}
|