mumlib.hpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include "mumlib/Callback.hpp"
  3. #include <boost/asio.hpp>
  4. #include <boost/noncopyable.hpp>
  5. #include <string>
  6. #include <mumlib/enums.hpp>
  7. namespace mumlib {
  8. constexpr int DEFAULT_OPUS_ENCODER_BITRATE = 16000;
  9. constexpr int DEFAULT_OPUS_SAMPLE_RATE = 48000;
  10. using namespace std;
  11. using namespace boost::asio;
  12. class MumlibException : public runtime_error {
  13. public:
  14. MumlibException(string message) : runtime_error(message) { }
  15. };
  16. struct MumlibConfiguration {
  17. int opusEncoderBitrate = DEFAULT_OPUS_ENCODER_BITRATE;
  18. int opusSampleRate = DEFAULT_OPUS_SAMPLE_RATE;
  19. // additional fields will be added in the future
  20. };
  21. struct _Mumlib_Private;
  22. class Mumlib : boost::noncopyable {
  23. public:
  24. explicit Mumlib(Callback &callback);
  25. Mumlib(Callback &callback, io_service &ioService);
  26. Mumlib(Callback &callback, MumlibConfiguration &configuration);
  27. Mumlib(Callback &callback, io_service &ioService, MumlibConfiguration &configuration);
  28. virtual ~Mumlib();
  29. void connect(string host, int port, string user, string password);
  30. void disconnect();
  31. void reconnect();
  32. void run();
  33. ConnectionState getConnectionState();
  34. int getChannelId();
  35. void sendAudioData(int16_t *pcmData, int pcmLength);
  36. void sendAudioDataTarget(int targetId, int16_t *pcmData, int pcmLength);
  37. void sendTextMessage(std::string message);
  38. void joinChannel(int channelId);
  39. void sendVoiceTarget(int targetId, int channelId);
  40. void sendUserState(mumlib::UserState state, bool val);
  41. void sendUserState(mumlib::UserState state, std::string value);
  42. private:
  43. _Mumlib_Private *impl;
  44. };
  45. }