2 * libwebsockets-test-server - libwebsockets test implementation
4 * Copyright (C) 2010-2016 Andy Green <andy@warmcat.com>
6 * This file is made available under the Creative Commons CC0 1.0
7 * Universal Public Domain Dedication.
9 * The person who associated a work with this deed has dedicated
10 * the work to the public domain by waiving all of his or her rights
11 * to the work worldwide under copyright law, including all related
12 * and neighboring rights, to the extent allowed by law. You can copy,
13 * modify, distribute and perform the work, even for commercial purposes,
14 * all without asking permission.
16 * The test apps are intended to be adapted for use in your code, which
17 * may be proprietary. So unlike the library itself, they are licensed
21 #if defined(_WIN32) && defined(EXTERNAL_POLL)
23 #define _WIN32_WINNT 0x0600
24 #define poll(fdArray, fds, timeout) WSAPoll((LPWSAPOLLFD)(fdArray), (ULONG)(fds), (INT)(timeout))
27 #include "lws_config.h"
38 #include "../lib/libwebsockets.h"
42 #include "gettimeofday.h"
49 extern int close_testing;
50 extern int max_poll_elements;
53 extern struct lws_pollfd *pollfds;
54 extern int *fd_lookup;
55 extern int count_pollfds;
57 extern volatile int force_exit;
58 extern struct lws_context *context;
59 extern char *resource_path;
61 extern void test_server_lock(int care);
62 extern void test_server_unlock(int care);
65 #define __func__ __FUNCTION__
68 struct per_session_data__http {
73 * one of these is auto-created for each connection and a pointer to the
74 * appropriate instance is passed to the callback in the user parameter
76 * for this example protocol we use it to individualize the count for each
80 struct per_session_data__dumb_increment {
84 struct per_session_data__lws_mirror {
89 struct per_session_data__echogen {
98 callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
99 void *in, size_t len);
101 callback_lws_mirror(struct lws *wsi, enum lws_callback_reasons reason,
102 void *user, void *in, size_t len);
104 callback_dumb_increment(struct lws *wsi, enum lws_callback_reasons reason,
105 void *user, void *in, size_t len);
107 callback_lws_echogen(struct lws *wsi, enum lws_callback_reasons reason,
108 void *user, void *in, size_t len);
111 dump_handshake_info(struct lws *wsi);