#include "options.hpp"
#include <iostream>
#include "fake_cpp11.hpp"
private:
std::string url;
bool ready, canceled;
public:
scheduled_sender(const std::string &s, double d, double t) :
url(s),
work_queue(0),
ready(true),
canceled(false)
{}
}
sender = s;
s.
container().
schedule(timeout, [
this]() { this->work_queue->
add( [
this]() { this->cancel(); }); });
}
void cancel() {
canceled = true;
}
void tick() {
if (!canceled)
sender.
container().
schedule(interval, [
this]() { this->work_queue->
add( [
this]() { this->tick(); }); });
send();
else
ready = true;
}
if (ready)
send();
}
void send() {
std::cout << "send" << std::endl;
ready = false;
}
};
int main(int argc, char **argv) {
std::string address("127.0.0.1:5672/examples");
double interval = 1.0;
double timeout = 5.0;
example::options opts(argc, argv);
opts.add_value(address, 'a', "address", "connect and send to URL", "URL");
opts.add_value(interval, 'i', "interval", "send a message every INTERVAL seconds", "INTERVAL");
opts.add_value(timeout, 't', "timeout", "stop after T seconds", "T");
try {
opts.parse();
scheduled_sender h(address, interval, timeout);
return 0;
} catch (const example::bad_option& e) {
std::cout << opts << std::endl << e.what() << std::endl;
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 1;
}