MumbleCommunicator.hpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma once
  2. #include "ICommunicator.hpp"
  3. #include <mumlib.hpp>
  4. #include <log4cpp/Category.hh>
  5. #include <boost/noncopyable.hpp>
  6. #include <string>
  7. #include <stdexcept>
  8. namespace mumble {
  9. class Exception : public std::runtime_error {
  10. public:
  11. Exception(const char *message) : std::runtime_error(message) { }
  12. };
  13. class MumlibCallback;
  14. class MumbleCommunicator : public ICommunicator, boost::noncopyable {
  15. public:
  16. MumbleCommunicator(
  17. boost::asio::io_service &ioService);
  18. void connect(
  19. std::string user,
  20. std::string password,
  21. std::string host,
  22. int port = 0);
  23. ~MumbleCommunicator();
  24. virtual void sendPcmSamples(int16_t *samples, unsigned int length) override;
  25. void sendTextMessage(std::string message);
  26. public:
  27. boost::asio::io_service &ioService;
  28. log4cpp::Category &logger;
  29. std::shared_ptr<mumlib::Mumlib> mum;
  30. std::unique_ptr<MumlibCallback> callback;
  31. friend class MumlibCallback;
  32. };
  33. }