summaryrefslogtreecommitdiff
path: root/src/test_sender.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@yahoo.com>2015-06-09 00:21:45 +0200
committerJoel Klinghed <the_jk@yahoo.com>2015-06-09 00:21:45 +0200
commit8f01c9a51e32891b862489e4082d2c20aa1fc883 (patch)
treec8f21cb9768c0853da6f68decae316c1f9c7a2f5 /src/test_sender.cc
parent913cfd1c7ef7a145036a8416d4ea815cb5cdb601 (diff)
Improve sender and sender_client
1) Add sockguard in sockutils.hh to help with closing sockets 2) Make sender fork in background 3) Make sender_client start a sender if needed (and sender_bin specified in config)
Diffstat (limited to 'src/test_sender.cc')
-rw-r--r--src/test_sender.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test_sender.cc b/src/test_sender.cc
new file mode 100644
index 0000000..6622ed1
--- /dev/null
+++ b/src/test_sender.cc
@@ -0,0 +1,41 @@
+#include "common.hh"
+
+#include <cstdlib>
+#include <cstring>
+#include <iostream>
+
+#include "config.hh"
+#include "sender_client.hh"
+
+using namespace stuff;
+
+int main(int argc, char** argv) {
+ class StdError : public SenderClient::Error {
+ public:
+ StdError() {
+ }
+ void error(const std::string& message) override {
+ std::cerr << message << std::endl;
+ }
+ void error(const std::string& message, int error) override {
+ std::cerr << message << ": " << strerror(error) << std::endl;
+ }
+ };
+
+ if (argc != 4) {
+ std::cerr << "Usage: `test_sender CONFIG CHANNEL MESSAGE`" << std::endl;
+ return EXIT_FAILURE;
+ }
+ auto config = Config::create();
+ if (!config->load(argv[1])) {
+ std::cerr << "Error loading config: " << argv[1] << std::endl;
+ return EXIT_FAILURE;
+ }
+ auto error = std::make_shared<StdError>();
+ auto client = SenderClient::create(config.get(), error);
+ if (!client) {
+ return EXIT_FAILURE;
+ }
+ client->send(argv[2], argv[3]);
+ return EXIT_SUCCESS;
+}