Files
@ 0185f9487299
Branch filter:
Location: libtransport.git/backends/template/main.cpp - annotation
0185f9487299
1.3 KiB
text/x-c++hdr
Swiften backend: support MUC
8b6068588621 8b6068588621 40d678184272 40d678184272 40d678184272 7c93aee6f49a 40d678184272 40d678184272 40d678184272 40d678184272 15bdfab39ccf 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 4fe987b774d2 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 15bdfab39ccf ab2424659344 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 ab2424659344 40d678184272 40d678184272 40d678184272 40d678184272 40d678184272 15bdfab39ccf 40d678184272 40d678184272 40d678184272 40d678184272 ab2424659344 40d678184272 060510d6958e 060510d6958e 060510d6958e 060510d6958e 40d678184272 40d678184272 40d678184272 060510d6958e 40d678184272 40d678184272 8b6068588621 8b6068588621 40d678184272 40d678184272 40d678184272 | #include "plugin.h"
// Transport includes
#include "transport/config.h"
#include "transport/networkplugin.h"
#include "transport/logging.h"
// Swiften
#include "Swiften/Swiften.h"
#ifndef _WIN32
// for signal handler
#include "unistd.h"
#include "signal.h"
#include "sys/wait.h"
#include "sys/signal.h"
#endif
// Boost
#include <boost/algorithm/string.hpp>
using namespace boost::filesystem;
using namespace boost::program_options;
using namespace Transport;
#ifndef _WIN32
static void spectrum_sigchld_handler(int sig)
{
int status;
pid_t pid;
do {
pid = waitpid(-1, &status, WNOHANG);
} while (pid != 0 && pid != (pid_t)-1);
if ((pid == (pid_t) - 1) && (errno != ECHILD)) {
char errmsg[BUFSIZ];
snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid);
perror(errmsg);
}
}
#endif
int main (int argc, char* argv[]) {
std::string host;
int port;
#ifndef _WIN32
if (signal(SIGCHLD, spectrum_sigchld_handler) == SIG_ERR) {
std::cout << "SIGCHLD handler can't be set\n";
return -1;
}
#endif
std::string error;
Config *cfg = Config::createFromArgs(argc, argv, error, host, port);
if (cfg == NULL) {
std::cerr << error;
return 1;
}
Logging::initBackendLogging(cfg);
Swift::SimpleEventLoop eventLoop;
Plugin p(cfg, &eventLoop, host, port);
eventLoop.run();
return 0;
}
|