add websocket protocol

This commit is contained in:
Terrence
2024-11-16 05:49:35 +08:00
parent cabb29a1bb
commit 794e6f4bef
12 changed files with 277 additions and 59 deletions

View File

@@ -5,22 +5,42 @@
#include <string>
#include <functional>
struct BinaryProtocol3 {
uint8_t type;
uint8_t reserved;
uint16_t payload_size;
uint8_t payload[];
} __attribute__((packed));
class Protocol {
public:
virtual ~Protocol() = default;
virtual void OnIncomingAudio(std::function<void(const std::string& data)> callback) = 0;
virtual void OnIncomingJson(std::function<void(const cJSON* root)> callback) = 0;
inline int server_sample_rate() const {
return server_sample_rate_;
}
void OnIncomingAudio(std::function<void(const std::string& data)> callback);
void OnIncomingJson(std::function<void(const cJSON* root)> callback);
void OnAudioChannelOpened(std::function<void()> callback);
void OnAudioChannelClosed(std::function<void()> callback);
virtual void SendAudio(const std::string& data) = 0;
virtual void SendText(const std::string& text) = 0;
virtual void SendState(const std::string& state) = 0;
virtual void SendAbort() = 0;
virtual bool OpenAudioChannel() = 0;
virtual void CloseAudioChannel() = 0;
virtual void OnAudioChannelOpened(std::function<void()> callback) = 0;
virtual void OnAudioChannelClosed(std::function<void()> callback) = 0;
virtual bool IsAudioChannelOpened() const = 0;
virtual int GetServerSampleRate() const = 0;
protected:
std::function<void(const cJSON* root)> on_incoming_json_;
std::function<void(const std::string& data)> on_incoming_audio_;
std::function<void()> on_audio_channel_opened_;
std::function<void()> on_audio_channel_closed_;
int server_sample_rate_ = 16000;
};
#endif // PROTOCOL_H