ws.c
April 3, 2026 ยท View on GitHub
Purpose
WebSocket frame creation and parsing.
API Reference
Enum helpers
const char *XWebSock_GetStatusStr(xws_status_t eStatus)
const char *XWS_FrameTypeStr(xws_frame_type_t eType)
xws_frame_type_t XWS_FrameType(uint8_t nOpCode)
uint8_t XWS_OpCode(xws_frame_type_t eType)
- Convert between status/type enums and frame opcodes/text.
Lifecycle
void XWebFrame_Init(xws_frame_t *pFrame)
void XWebFrame_Clear(xws_frame_t *pFrame)
void XWebFrame_Reset(xws_frame_t *pFrame)
void XWebFrame_Free(xws_frame_t **pFrame)
- Init, clear owned data, reset parse state, or free allocated frame.
Creation
uint8_t *XWS_CreateFrame(const uint8_t *pPayload, size_t nLength, uint8_t nOpCode, xbool_t bFin, size_t *pFrameSize)
- Returns allocated raw frame bytes or
NULL.
xws_frame_t *XWebFrame_New(const uint8_t *pPayload, size_t nLength, xws_frame_type_t eType, xbool_t bMask, xbool_t bFin)
xws_frame_t *XWebFrame_Alloc(xws_frame_type_t eType, size_t nBuffSize)
- Allocate frame object from payload or empty buffer.
- Return frame or
NULL.
xws_status_t XWebFrame_Create(xws_frame_t *pFrame, const uint8_t *pPayload, size_t nLength, xws_frame_type_t eType, xbool_t bMask, xbool_t bFin)
- Fills frame buffer and metadata.
- Returns frame status.
Parse / mask
xws_status_t XWebFrame_AppendData(xws_frame_t *pFrame, uint8_t *pData, size_t nSize)
xws_status_t XWebFrame_ParseData(xws_frame_t *pFrame, uint8_t *pData, size_t nSize)
xws_status_t XWebFrame_TryParse(xws_frame_t *pFrame, uint8_t *pData, size_t nSize)
xws_status_t XWebFrame_ParseBuff(xws_frame_t *pFrame, xbyte_buffer_t *pBuffer)
xws_status_t XWebFrame_Parse(xws_frame_t *pFrame)
- Append/attach bytes and parse header/payload state.
- Return
XWS_FRAME_COMPLETE,XWS_FRAME_INCOMPLETEor error status.
xws_status_t XWebFrame_Mask(xws_frame_t *pFrame)
xws_status_t XWebFrame_Unmask(xws_frame_t *pFrame)
- Apply or remove mask in place.
- Return frame status.
Access helpers
size_t XWebFrame_GetPayloadLength / XWebFrame_GetFrameLength / XWebFrame_GetExtraLength(xws_frame_t *pFrame)
- Return payload size, full frame size or trailing extra-data size.
xbyte_buffer_t *XWebFrame_GetBuffer(xws_frame_t *pFrame)
const uint8_t *XWebFrame_GetPayload(xws_frame_t *pFrame)
- Return internal frame buffer or payload pointer.
XSTATUS XWebFrame_GetExtraData(xws_frame_t *pFrame, xbyte_buffer_t *pBuffer, xbool_t bAppend)
XSTATUS XWebFrame_CutExtraData(xws_frame_t *pFrame)
- Copy or remove bytes following the first complete frame.
- Return status code.