Callback.hpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. #pragma once
  2. #include <cstdint>
  3. #include <string>
  4. #include <vector>
  5. namespace mumlib {
  6. using namespace std;
  7. class Callback {
  8. public:
  9. virtual void version(
  10. uint16_t major,
  11. uint8_t minor,
  12. uint8_t patch,
  13. string release,
  14. string os,
  15. string os_version) { };
  16. virtual void audio(
  17. int target,
  18. int sessionId,
  19. int sequenceNumber,
  20. int16_t *pcm_data,
  21. uint32_t pcm_data_size) { };
  22. virtual void unsupportedAudio(
  23. int target,
  24. int sessionId,
  25. int sequenceNumber,
  26. uint8_t *encoded_audio_data,
  27. uint32_t encoded_audio_data_size) { };
  28. virtual void serverSync(
  29. string welcome_text,
  30. int32_t session,
  31. int32_t max_bandwidth,
  32. int64_t permissions) { };
  33. virtual void channelRemove(uint32_t channel_id) { };
  34. virtual void channelState(
  35. string name,
  36. int32_t channel_id,
  37. int32_t parent,
  38. string description,
  39. vector<uint32_t> links,
  40. vector<uint32_t> inks_add,
  41. vector<uint32_t> links_remove,
  42. bool temporary,
  43. int32_t position) { };
  44. virtual void userRemove(
  45. uint32_t session,
  46. int32_t actor,
  47. string reason,
  48. bool ban) { };
  49. virtual void userState(
  50. int32_t session,
  51. int32_t actor,
  52. string name,
  53. int32_t user_id,
  54. int32_t channel_id,
  55. int32_t mute,
  56. int32_t deaf,
  57. int32_t suppress,
  58. int32_t self_mute,
  59. int32_t self_deaf,
  60. string comment,
  61. int32_t priority_speaker,
  62. int32_t recording) { };
  63. virtual void banList(
  64. const uint8_t *ip_data,
  65. uint32_t ip_data_size,
  66. uint32_t mask,
  67. string name,
  68. string hash,
  69. string reason,
  70. string start,
  71. int32_t duration) { };
  72. virtual void textMessage(
  73. uint32_t actor,
  74. std::vector<uint32_t> session,
  75. std::vector<uint32_t> channel_id,
  76. std::vector<uint32_t> tree_id,
  77. string message) { };
  78. virtual void permissionDenied(
  79. int32_t permission,
  80. int32_t channel_id,
  81. int32_t session,
  82. string reason,
  83. int32_t deny_type,
  84. string name) { };
  85. virtual void queryUsers(
  86. uint32_t n_ids,
  87. uint32_t *ids,
  88. uint32_t n_names,
  89. string *names) { };
  90. virtual void contextActionModify(
  91. string action,
  92. string text,
  93. uint32_t m_context,
  94. uint32_t operation) { };
  95. virtual void contextAction(
  96. int32_t session,
  97. int32_t channel_id,
  98. string action) { };
  99. virtual void userList(
  100. uint32_t user_id,
  101. string name,
  102. string last_seen,
  103. int32_t last_channel) { };
  104. virtual void permissionQuery(
  105. int32_t channel_id,
  106. uint32_t permissions,
  107. int32_t flush) { };
  108. virtual void codecVersion(
  109. int32_t alpha,
  110. int32_t beta,
  111. uint32_t prefer_alpha,
  112. int32_t opus) { };
  113. virtual void serverConfig(
  114. uint32_t max_bandwidth,
  115. string welcome_text,
  116. uint32_t allow_html,
  117. uint32_t message_length,
  118. uint32_t image_message_length) { };
  119. virtual void suggestConfig(
  120. uint32_t version,
  121. uint32_t positional,
  122. uint32_t push_to_talk) { };
  123. };
  124. class _BasicCallback_Private;
  125. class BasicCallback : public Callback {
  126. public:
  127. BasicCallback();
  128. ~BasicCallback();
  129. void version(
  130. uint16_t major,
  131. uint8_t minor,
  132. uint8_t patch,
  133. string release,
  134. string os,
  135. string os_version) override;
  136. void audio(
  137. int target,
  138. int sessionId,
  139. int sequenceNumber,
  140. int16_t *pcm_data,
  141. uint32_t pcm_data_size) override;
  142. void unsupportedAudio(
  143. int target,
  144. int sessionId,
  145. int sequenceNumber,
  146. uint8_t *encoded_audio_data,
  147. uint32_t encoded_audio_data_size) override;
  148. void serverSync(
  149. string welcome_text,
  150. int32_t session,
  151. int32_t max_bandwidth,
  152. int64_t permissions) override;
  153. void channelRemove(uint32_t channel_id) override;
  154. void channelState(
  155. string name,
  156. int32_t channel_id,
  157. int32_t parent,
  158. string description,
  159. vector<uint32_t> links,
  160. vector<uint32_t> inks_add,
  161. vector<uint32_t> links_remove,
  162. bool temporary,
  163. int32_t position) override;
  164. void userRemove(
  165. uint32_t session,
  166. int32_t actor,
  167. string reason,
  168. bool ban) override;
  169. void userState(
  170. int32_t session,
  171. int32_t actor,
  172. string name,
  173. int32_t user_id,
  174. int32_t channel_id,
  175. int32_t mute,
  176. int32_t deaf,
  177. int32_t suppress,
  178. int32_t self_mute,
  179. int32_t self_deaf,
  180. string comment,
  181. int32_t priority_speaker,
  182. int32_t recording) override;
  183. void banList(
  184. const uint8_t *ip_data,
  185. uint32_t ip_data_size,
  186. uint32_t mask,
  187. string name,
  188. string hash,
  189. string reason,
  190. string start,
  191. int32_t duration) override;
  192. void textMessage(
  193. uint32_t actor,
  194. std::vector<uint32_t> session,
  195. std::vector<uint32_t> channel_id,
  196. std::vector<uint32_t> tree_id,
  197. string message) override;
  198. void permissionDenied(
  199. int32_t permission,
  200. int32_t channel_id,
  201. int32_t session,
  202. string reason,
  203. int32_t deny_type,
  204. string name) override;
  205. void queryUsers(
  206. uint32_t n_ids,
  207. uint32_t *ids,
  208. uint32_t n_names,
  209. string *names) override;
  210. void contextActionModify(
  211. string action,
  212. string text,
  213. uint32_t m_context,
  214. uint32_t operation) override;
  215. void contextAction(
  216. int32_t session,
  217. int32_t channel_id,
  218. string action) override;
  219. void userList(
  220. uint32_t user_id,
  221. string name,
  222. string last_seen,
  223. int32_t last_channel) override;
  224. void permissionQuery(
  225. int32_t channel_id,
  226. uint32_t permissions,
  227. int32_t flush) override;
  228. void codecVersion(
  229. int32_t alpha,
  230. int32_t beta,
  231. uint32_t prefer_alpha,
  232. int32_t opus) override;
  233. void serverConfig(
  234. uint32_t max_bandwidth,
  235. string welcome_text,
  236. uint32_t allow_html,
  237. uint32_t message_length,
  238. uint32_t image_message_length) override;
  239. void suggestConfig(
  240. uint32_t version,
  241. uint32_t positional,
  242. uint32_t push_to_talk) override;
  243. private:
  244. _BasicCallback_Private *impl;
  245. };
  246. }