PokerUnicorn
Loading...
Searching...
No Matches
Websocket

WebSocket protocol implementation for the server module. This WebSocket library turns a TCP stream protocol into a WebSocket protocol. More...

Data Structures

struct  pkrsrv_websocket_header_t
 
struct  pkrsrv_websocket_payload_t
 
struct  pkrsrv_websocket_t
 

Macros

#define PKRSRV_WEBSOCKET_EXPECTED_HTTP_HEADER   "GET / HTTP/1.1"
 
#define pkrsrv_websocket_packet_frame_header
 
#define PKRSRV_WEBSOCKET_GUID   "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
 
#define HTTP_HEADER_BUFF_SIZE   1000
 
#define HTTP_PROP_BUFF_SIZE   40
 
#define HTTP_VAL_BUFF_SIZE   50
 

Typedefs

typedef struct pkrsrv_websocket_packet_frame_len8 pkrsrv_websocket_packet_frame_len8_t
 
typedef struct pkrsrv_websocket_packet_frame_len16 pkrsrv_websocket_packet_frame_len16_t
 
typedef struct pkrsrv_websocket_packet_frame_len64 pkrsrv_websocket_packet_frame_len64_t
 

Enumerations

enum  PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE {
  PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_METHOD = 1 , PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_PROP , PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_SPACE , PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_VAL ,
  PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_CR , PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_END
}
 
enum  PKRSRV_WEBSOCKET_RESPONSE { PKRSRV_WEBSOCKET_RESPONSE_INSTANCE_PORT = 1 }
 

Functions

struct __attribute__ ((packed)) pkrsrv_websocket_packet_frame_len8
 
char * pkrsrv_websocket_generate_ws_accept_key (char *websocket_key)
 
void pkrsrv_websocket_init (pkrsrv_websocket_t *ws)
 
ssize_t pkrsrv_websocket_read_http_header (pkrsrv_websocket_t *ws, SSL *ssl)
 
ssize_t pkrsrv_websocket_read_header (pkrsrv_websocket_t *ws, SSL *ssl)
 
ssize_t pkrsrv_websocket_read_payload (pkrsrv_websocket_t *ws, SSL *ssl, void *buffer, ssize_t size)
 
ssize_t pkrsrv_websocket_send_header (pkrsrv_websocket_t *ws, SSL *ssl, ssize_t length)
 
void pkrsrv_websocket_fragmented_begin (pkrsrv_websocket_t *ws, SSL *ssl, size_t length)
 
ssize_t pkrsrv_websocket_fragmented_put (pkrsrv_websocket_t *ws, SSL *ssl, void *data, ssize_t length)
 

Detailed Description

WebSocket protocol implementation for the server module. This WebSocket library turns a TCP stream protocol into a WebSocket protocol.


Data Structure Documentation

◆ pkrsrv_websocket_header_t

struct pkrsrv_websocket_header_t
Data Fields
uint8_t header0_16[2]
uint8_t fin
uint64_t plen
uint16_t plen16
uint64_t plen64
uint8_t opcode
uint8_t is_masked
unsigned char mkey[4]
int mask_i

◆ pkrsrv_websocket_payload_t

struct pkrsrv_websocket_payload_t
Data Fields
ssize_t length
unsigned char * data

◆ pkrsrv_websocket_t

struct pkrsrv_websocket_t
Data Fields
int(*)(SSL *ssl, void *buffer, ssize_t length) read
int(*)(SSL *ssl, void *buffer, ssize_t length) write
pkrsrv_websocket_header_t current_header
bool is_fragmented
char * buffer
int buffer_length
int buffer_readed
pthread_mutex_t * write_mutex

Macro Definition Documentation

◆ PKRSRV_WEBSOCKET_EXPECTED_HTTP_HEADER

#define PKRSRV_WEBSOCKET_EXPECTED_HTTP_HEADER   "GET / HTTP/1.1"

◆ pkrsrv_websocket_packet_frame_header

#define pkrsrv_websocket_packet_frame_header
Value:
uint8_t fin_rsv_opcode; \
uint8_t mlen8;

◆ PKRSRV_WEBSOCKET_GUID

#define PKRSRV_WEBSOCKET_GUID   "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"

◆ HTTP_HEADER_BUFF_SIZE

#define HTTP_HEADER_BUFF_SIZE   1000

◆ HTTP_PROP_BUFF_SIZE

#define HTTP_PROP_BUFF_SIZE   40

◆ HTTP_VAL_BUFF_SIZE

#define HTTP_VAL_BUFF_SIZE   50

Typedef Documentation

◆ pkrsrv_websocket_packet_frame_len8_t

typedef struct pkrsrv_websocket_packet_frame_len8 pkrsrv_websocket_packet_frame_len8_t

◆ pkrsrv_websocket_packet_frame_len16_t

typedef struct pkrsrv_websocket_packet_frame_len16 pkrsrv_websocket_packet_frame_len16_t

◆ pkrsrv_websocket_packet_frame_len64_t

typedef struct pkrsrv_websocket_packet_frame_len64 pkrsrv_websocket_packet_frame_len64_t

Enumeration Type Documentation

◆ PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE

Enumerator
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_METHOD 
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_PROP 
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_SPACE 
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_VAL 
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_CR 
PKRSRV_WEBSOCKET_HTTP_HEADER_PARSER_STATE_END 

◆ PKRSRV_WEBSOCKET_RESPONSE

Enumerator
PKRSRV_WEBSOCKET_RESPONSE_INSTANCE_PORT 

Function Documentation

◆ __attribute__()

struct __attribute__ ( (packed) )

◆ pkrsrv_websocket_generate_ws_accept_key()

char * pkrsrv_websocket_generate_ws_accept_key ( char * websocket_key)
extern

◆ pkrsrv_websocket_init()

void pkrsrv_websocket_init ( pkrsrv_websocket_t * ws)
extern

◆ pkrsrv_websocket_read_http_header()

ssize_t pkrsrv_websocket_read_http_header ( pkrsrv_websocket_t * ws,
SSL * ssl )
extern

◆ pkrsrv_websocket_read_header()

ssize_t pkrsrv_websocket_read_header ( pkrsrv_websocket_t * ws,
SSL * ssl )
extern

◆ pkrsrv_websocket_read_payload()

ssize_t pkrsrv_websocket_read_payload ( pkrsrv_websocket_t * ws,
SSL * ssl,
void * buffer,
ssize_t size )
extern

◆ pkrsrv_websocket_send_header()

ssize_t pkrsrv_websocket_send_header ( pkrsrv_websocket_t * ws,
SSL * ssl,
ssize_t length )
extern

◆ pkrsrv_websocket_fragmented_begin()

void pkrsrv_websocket_fragmented_begin ( pkrsrv_websocket_t * ws,
SSL * ssl,
size_t length )
extern

◆ pkrsrv_websocket_fragmented_put()

ssize_t pkrsrv_websocket_fragmented_put ( pkrsrv_websocket_t * ws,
SSL * ssl,
void * data,
ssize_t length )
extern