GNU libmicrohttpd 0.9.77
Loading...
Searching...
No Matches
microhttpd_ws.h
Go to the documentation of this file.
1/*
2 This file is part of libmicrohttpd
3 Copyright (C) 2021 Christian Grothoff (and other contributing authors)
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/
24/*
25 * *** WARNING! ***
26 * * The websockets interface is currenly in "experimental" stage. *
27 * * It does not work on architectures with endianness different from *
28 * * big endian and little endian and may have some portability issues.*
29 * * API and ABI are not yet stable. *
30 */
31#ifndef MHD_MICROHTTPD_WS_H
32#define MHD_MICROHTTPD_WS_H
33
34
35#ifdef __cplusplus
36extern "C"
37{
38#if 0 /* keep Emacsens' auto-indent happy */
39}
40#endif
41#endif
42
43
49struct MHD_WebSocketStream;
50
59{
113
121{
152
160{
354
372{
433
447{
511
521{
557typedef void *
558(*MHD_WebSocketMallocCallback) (size_t buf_len);
575typedef void *
576(*MHD_WebSocketReallocCallback) (void *buf, size_t new_buf_len);
591typedef void
592(*MHD_WebSocketFreeCallback) (void *buf);
609typedef size_t
610(*MHD_WebSocketRandomNumberGenerator) (void *cls, void *buf, size_t buf_len);
611
625MHD_websocket_check_http_version (const char *http_version);
626
644MHD_websocket_check_connection_header (const char *connection_header);
645
663MHD_websocket_check_upgrade_header (const char *upgrade_header);
664
683MHD_websocket_check_version_header (const char *version_header);
684
705MHD_websocket_create_accept_header (const char *sec_websocket_key,
706 char *sec_websocket_accept);
707
721MHD_websocket_stream_init (struct MHD_WebSocketStream **ws,
722 int flags,
723 size_t max_payload_size);
724
756MHD_websocket_stream_init2 (struct MHD_WebSocketStream **ws,
757 int flags,
758 size_t max_payload_size,
759 MHD_WebSocketMallocCallback callback_malloc,
760 MHD_WebSocketReallocCallback callback_realloc,
761 MHD_WebSocketFreeCallback callback_free,
762 void *cls_rng,
764
774MHD_websocket_stream_free (struct MHD_WebSocketStream *ws);
775
787MHD_websocket_stream_invalidate (struct MHD_WebSocketStream *ws);
788
799MHD_websocket_stream_is_valid (struct MHD_WebSocketStream *ws);
800
846MHD_websocket_decode (struct MHD_WebSocketStream *ws,
847 const char *streambuf,
848 size_t streambuf_len,
849 size_t *streambuf_read_len,
850 char **payload,
851 size_t *payload_len);
852
881MHD_websocket_split_close_reason (const char *payload,
882 size_t payload_len,
883 unsigned short *reason_code,
884 const char **reason_utf8,
885 size_t *reason_utf8_len);
886
923MHD_websocket_encode_text (struct MHD_WebSocketStream *ws,
924 const char *payload_utf8,
925 size_t payload_utf8_len,
926 int fragmentation,
927 char **frame,
928 size_t *frame_len,
929 int *utf8_step);
930
958MHD_websocket_encode_binary (struct MHD_WebSocketStream *ws,
959 const char *payload,
960 size_t payload_len,
961 int fragmentation,
962 char **frame,
963 size_t *frame_len);
964
987MHD_websocket_encode_ping (struct MHD_WebSocketStream *ws,
988 const char *payload,
989 size_t payload_len,
990 char **frame,
991 size_t *frame_len);
992
1020MHD_websocket_encode_pong (struct MHD_WebSocketStream *ws,
1021 const char *payload,
1022 size_t payload_len,
1023 char **frame,
1024 size_t *frame_len);
1025
1062MHD_websocket_encode_close (struct MHD_WebSocketStream *ws,
1063 unsigned short reason_code,
1064 const char *reason_utf8,
1065 size_t reason_utf8_len,
1066 char **frame,
1067 size_t *frame_len);
1068
1079_MHD_EXTERN void *
1080MHD_websocket_malloc (struct MHD_WebSocketStream *ws,
1081 size_t buf_len);
1082
1096_MHD_EXTERN void *
1097MHD_websocket_realloc (struct MHD_WebSocketStream *ws,
1098 void *buf,
1099 size_t new_buf_len);
1100
1113_MHD_EXTERN int
1114MHD_websocket_free (struct MHD_WebSocketStream *ws,
1115 void *buf);
1116
1117#if 0 /* keep Emacsens' auto-indent happy */
1118{
1119#endif
1120#ifdef __cplusplus
1121}
1122#endif
1123
1124#endif
#define _MHD_EXTERN
Definition mhd_options.h:50
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_split_close_reason(const char *payload, size_t payload_len, unsigned short *reason_code, const char **reason_utf8, size_t *reason_utf8_len)
size_t(* MHD_WebSocketRandomNumberGenerator)(void *cls, void *buf, size_t buf_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_check_http_version(const char *http_version)
_MHD_EXTERN enum MHD_WEBSOCKET_VALIDITY MHD_websocket_stream_is_valid(struct MHD_WebSocketStream *ws)
MHD_WEBSOCKET_STATUS
Enum of the return value for almost every MHD_websocket function. Errors are negative and values equa...
@ MHD_WEBSOCKET_STATUS_MAXIMUM_SIZE_EXCEEDED
@ MHD_WEBSOCKET_STATUS_TEXT_NEXT_FRAGMENT
@ MHD_WEBSOCKET_STATUS_BINARY_FRAME
@ MHD_WEBSOCKET_STATUS_TEXT_LAST_FRAGMENT
@ MHD_WEBSOCKET_STATUS_STREAM_BROKEN
@ MHD_WEBSOCKET_STATUS_PARAMETER_ERROR
@ MHD_WEBSOCKET_STATUS_CLOSE_FRAME
@ MHD_WEBSOCKET_STATUS_OK
@ MHD_WEBSOCKET_STATUS_PING_FRAME
@ MHD_WEBSOCKET_STATUS_TEXT_FRAME
@ MHD_WEBSOCKET_STATUS_UTF8_ENCODING_ERROR
@ MHD_WEBSOCKET_STATUS_TEXT_FIRST_FRAGMENT
@ MHD_WEBSOCKET_STATUS_BINARY_FIRST_FRAGMENT
@ MHD_WEBSOCKET_STATUS_NO_WEBSOCKET_HANDSHAKE_HEADER
@ MHD_WEBSOCKET_STATUS_BINARY_NEXT_FRAGMENT
@ MHD_WEBSOCKET_STATUS_PONG_FRAME
@ MHD_WEBSOCKET_STATUS_PROTOCOL_ERROR
@ MHD_WEBSOCKET_STATUS_BINARY_LAST_FRAGMENT
@ MHD_WEBSOCKET_STATUS_MEMORY_ERROR
MHD_WEBSOCKET_FLAG
Flags for the initialization of a websocket stream struct MHD_WebSocketStream used by MHD_websocket_s...
@ MHD_WEBSOCKET_FLAG_SERVER
@ MHD_WEBSOCKET_FLAG_WANT_FRAGMENTS
@ MHD_WEBSOCKET_FLAG_NO_FRAGMENTS
@ MHD_WEBSOCKET_FLAG_CLIENT
@ MHD_WEBSOCKET_FLAG_GENERATE_CLOSE_FRAMES_ON_ERROR
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_stream_free(struct MHD_WebSocketStream *ws)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_encode_pong(struct MHD_WebSocketStream *ws, const char *payload, size_t payload_len, char **frame, size_t *frame_len)
MHD_WEBSOCKET_VALIDITY
Enumeration of validity values.
@ MHD_WEBSOCKET_VALIDITY_INVALID
@ MHD_WEBSOCKET_VALIDITY_ONLY_VALID_FOR_CONTROL_FRAMES
@ MHD_WEBSOCKET_VALIDITY_VALID
MHD_WEBSOCKET_UTF8STEP
Enumeration of possible UTF-8 check steps.
@ MHD_WEBSOCKET_UTF8STEP_UTF2TAIL_1OF1
@ MHD_WEBSOCKET_UTF8STEP_NORMAL
@ MHD_WEBSOCKET_UTF8STEP_UTF4TAIL1_1OF3
@ MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_3OF3
@ MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_2OF3
@ MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_1OF2
@ MHD_WEBSOCKET_UTF8STEP_UTF4TAIL_1OF3
@ MHD_WEBSOCKET_UTF8STEP_UTF3TAIL2_1OF2
@ MHD_WEBSOCKET_UTF8STEP_UTF3TAIL_2OF2
@ MHD_WEBSOCKET_UTF8STEP_UTF3TAIL1_1OF2
@ MHD_WEBSOCKET_UTF8STEP_UTF4TAIL2_1OF3
_MHD_EXTERN int MHD_websocket_free(struct MHD_WebSocketStream *ws, void *buf)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_stream_init(struct MHD_WebSocketStream **ws, int flags, size_t max_payload_size)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_encode_ping(struct MHD_WebSocketStream *ws, const char *payload, size_t payload_len, char **frame, size_t *frame_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_decode(struct MHD_WebSocketStream *ws, const char *streambuf, size_t streambuf_len, size_t *streambuf_read_len, char **payload, size_t *payload_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_encode_close(struct MHD_WebSocketStream *ws, unsigned short reason_code, const char *reason_utf8, size_t reason_utf8_len, char **frame, size_t *frame_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_check_connection_header(const char *connection_header)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_stream_init2(struct MHD_WebSocketStream **ws, int flags, size_t max_payload_size, MHD_WebSocketMallocCallback callback_malloc, MHD_WebSocketReallocCallback callback_realloc, MHD_WebSocketFreeCallback callback_free, void *cls_rng, MHD_WebSocketRandomNumberGenerator callback_rng)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_create_accept_header(const char *sec_websocket_key, char *sec_websocket_accept)
_MHD_EXTERN void * MHD_websocket_realloc(struct MHD_WebSocketStream *ws, void *buf, size_t new_buf_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_stream_invalidate(struct MHD_WebSocketStream *ws)
_MHD_EXTERN void * MHD_websocket_malloc(struct MHD_WebSocketStream *ws, size_t buf_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_encode_binary(struct MHD_WebSocketStream *ws, const char *payload, size_t payload_len, int fragmentation, char **frame, size_t *frame_len)
MHD_WEBSOCKET_CLOSEREASON
Enumeration of possible close reasons for close frames.
@ MHD_WEBSOCKET_CLOSEREASON_MAXIMUM_ALLOWED_PAYLOAD_SIZE_EXCEEDED
@ MHD_WEBSOCKET_CLOSEREASON_GOING_AWAY
@ MHD_WEBSOCKET_CLOSEREASON_MALFORMED_UTF8
@ MHD_WEBSOCKET_CLOSEREASON_MISSING_EXTENSION
@ MHD_WEBSOCKET_CLOSEREASON_UNEXPECTED_CONDITION
@ MHD_WEBSOCKET_CLOSEREASON_UNSUPPORTED_DATATYPE
@ MHD_WEBSOCKET_CLOSEREASON_REGULAR
@ MHD_WEBSOCKET_CLOSEREASON_POLICY_VIOLATED
@ MHD_WEBSOCKET_CLOSEREASON_PROTOCOL_ERROR
@ MHD_WEBSOCKET_CLOSEREASON_NO_REASON
MHD_WEBSOCKET_FRAGMENTATION
Enum to specify the fragmenting behavior while encoding with MHD_websocket_encode_text() or MHD_webso...
@ MHD_WEBSOCKET_FRAGMENTATION_FIRST
@ MHD_WEBSOCKET_FRAGMENTATION_LAST
@ MHD_WEBSOCKET_FRAGMENTATION_FOLLOWING
@ MHD_WEBSOCKET_FRAGMENTATION_NONE
void *(* MHD_WebSocketReallocCallback)(void *buf, size_t new_buf_len)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_encode_text(struct MHD_WebSocketStream *ws, const char *payload_utf8, size_t payload_utf8_len, int fragmentation, char **frame, size_t *frame_len, int *utf8_step)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_check_version_header(const char *version_header)
void *(* MHD_WebSocketMallocCallback)(size_t buf_len)
void(* MHD_WebSocketFreeCallback)(void *buf)
_MHD_EXTERN enum MHD_WEBSOCKET_STATUS MHD_websocket_check_upgrade_header(const char *upgrade_header)