main: :ohno: linked to libcurl and did a webconnect

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2025-02-10 17:58:07 -05:00
parent 98ec9e2a9c
commit 7628ecc915
Signed by: vbatts
GPG key ID: E30EFAA812C6E5ED
3 changed files with 35 additions and 2 deletions

View file

@ -21,6 +21,8 @@
#include <cstdlib> #include <cstdlib>
#include <cassert> #include <cassert>
#include <curl/curl.h>
#include "./common.h" #include "./common.h"
#include "./account.h" #include "./account.h"
#include "./worker.h" #include "./worker.h"
@ -53,13 +55,32 @@ void scoped_account() {
delete account; delete account;
} }
void webtest() {
log_out("begin webtest");
CURL* c = curl_easy_init();
if (c) {
CURLcode res;
curl_easy_setopt(c, CURLOPT_URL, "https://hashbangbash.com/");
res = curl_easy_perform(c);
curl_easy_cleanup(c);
if (res==CURLE_OK) {
log_out("connected to hashbangbash.com");
}
}
log_out("end webtest");
}
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
int ret; int ret;
scoped_account(); scoped_account();
webtest();
Dang::Worker worker; Dang::Worker worker;
worker.setTimeout(1);
ret = worker.work(); ret = worker.work();
if (ret != 0) { if (ret != 0) {
std::cout << "worker failed" << std::endl; std::cout << "worker failed" << std::endl;

View file

@ -3,7 +3,8 @@ project('tmp.c', 'cpp', 'c',
license: 'MIT' license: 'MIT'
) )
a = run_command('date', check: true) curl_dep = dependency('libcurl', version : '>=8.0.0')
curl_libs = run_command('curl-config', '--libs', check: true).stdout().strip()
read_exe = executable('read', 'read.c', link_language : 'c',) read_exe = executable('read', 'read.c', link_language : 'c',)
readpp_exe = executable('read++', 'read++.cpp') readpp_exe = executable('read++', 'read++.cpp')
@ -18,4 +19,5 @@ account_sources = [
] ]
account_exe = executable('account', account_sources, account_exe = executable('account', account_sources,
cpp_args: ['-std=c++23'], cpp_args: ['-std=c++23'],
link_args : [curl_libs],
) )

View file

@ -18,6 +18,7 @@ class Worker {
public: public:
Worker() { Worker() {
this->ready = false; this->ready = false;
this->timeout = 5;
} }
void run() { void run() {
@ -27,10 +28,18 @@ class Worker {
std::cout << "Daemon process woke up!" << std::endl; std::cout << "Daemon process woke up!" << std::endl;
} }
int getTimeout() {
return this->timeout;
}
void setTimeout(int t) {
this->timeout = t;
}
int work() { int work() {
std::thread daemon([this] {this->run();}); std::thread daemon([this] {this->run();});
std::this_thread::sleep_for(std::chrono::seconds(5)); std::this_thread::sleep_for(std::chrono::seconds(this->timeout));
{ {
std::lock_guard<std::mutex> lock(this->mtx); std::lock_guard<std::mutex> lock(this->mtx);
this->ready = true; this->ready = true;
@ -42,6 +51,7 @@ class Worker {
} }
private: private:
int timeout;
std::mutex mtx; std::mutex mtx;
std::condition_variable cv; std::condition_variable cv;
bool ready; bool ready;