main.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "PjsuaCommunicator.hpp"
  2. #include "MumbleCommunicator.hpp"
  3. #include "IncomingConnectionValidator.hpp"
  4. #include "Configuration.hpp"
  5. #include <log4cpp/FileAppender.hh>
  6. #include <log4cpp/OstreamAppender.hh>
  7. #include <log4cpp/PatternLayout.hh>
  8. int main(int argc, char *argv[]) {
  9. log4cpp::Appender *appender1 = new log4cpp::OstreamAppender("console", &std::cout);
  10. log4cpp::PatternLayout layout;
  11. layout.setConversionPattern("%d [%p] %c: %m%n");
  12. appender1->setLayout(&layout);
  13. log4cpp::Category &logger = log4cpp::Category::getRoot();
  14. logger.setPriority(log4cpp::Priority::NOTICE);
  15. logger.addAppender(appender1);
  16. if (argc == 1) {
  17. logger.crit("No configuration file provided. Use %s {config file}", argv[0]);
  18. return 1;
  19. }
  20. config::Configuration conf(argv[1]);
  21. sip::IncomingConnectionValidator connectionValidator(conf.getString("sip.validUriExpression"));
  22. boost::asio::io_service ioService;
  23. sip::PjsuaCommunicator pjsuaCommunicator(connectionValidator);
  24. mumble::MumbleCommunicator mumbleCommunicator(ioService);
  25. using namespace std::placeholders;
  26. pjsuaCommunicator.onIncomingPcmSamples = std::bind(
  27. &mumble::MumbleCommunicator::sendPcmSamples,
  28. &mumbleCommunicator,
  29. _1, _2);
  30. pjsuaCommunicator.onStateChange = std::bind(
  31. &mumble::MumbleCommunicator::sendTextMessage,
  32. &mumbleCommunicator, _1);
  33. mumbleCommunicator.onIncomingPcmSamples = std::bind(
  34. &sip::PjsuaCommunicator::sendPcmSamples,
  35. &pjsuaCommunicator,
  36. _1, _2, _3, _4);
  37. mumbleCommunicator.connect(
  38. conf.getString("mumble.user"),
  39. conf.getString("mumble.password"),
  40. conf.getString("mumble.host"),
  41. conf.getInt("mumble.port"));
  42. pjsuaCommunicator.connect(
  43. conf.getString("sip.host"),
  44. conf.getString("sip.user"),
  45. conf.getString("sip.password"),
  46. conf.getInt("sip.port"));
  47. logger.info("Application started.");
  48. ioService.run();
  49. return 0;
  50. }