36 lines
804 B
C
36 lines
804 B
C
|
#ifndef HV_WEBSOCKET_PARSER_H_
|
||
|
#define HV_WEBSOCKET_PARSER_H_
|
||
|
|
||
|
#include "hexport.h"
|
||
|
|
||
|
#include <string>
|
||
|
#include <memory>
|
||
|
#include <functional>
|
||
|
|
||
|
enum websocket_parser_state {
|
||
|
WS_FRAME_BEGIN,
|
||
|
WS_FRAME_HEADER,
|
||
|
WS_FRAME_BODY,
|
||
|
WS_FRAME_END,
|
||
|
WS_FRAME_FIN,
|
||
|
};
|
||
|
|
||
|
struct websocket_parser;
|
||
|
class HV_EXPORT WebSocketParser {
|
||
|
public:
|
||
|
websocket_parser* parser;
|
||
|
websocket_parser_state state;
|
||
|
int opcode;
|
||
|
std::string message;
|
||
|
std::function<void(int opcode, const std::string& msg)> onMessage;
|
||
|
|
||
|
WebSocketParser();
|
||
|
~WebSocketParser();
|
||
|
|
||
|
int FeedRecvData(const char* data, size_t len);
|
||
|
};
|
||
|
|
||
|
typedef std::shared_ptr<WebSocketParser> WebSocketParserPtr;
|
||
|
|
||
|
#endif // HV_WEBSOCKET_PARSER_H_
|