1d4afb5ceSopenharmony_ci# lws minimal ws server
2d4afb5ceSopenharmony_ci
3d4afb5ceSopenharmony_ciThis demonstrates adopting a file descriptor into the lws event
4d4afb5ceSopenharmony_ciloop.  The filepath to open and adopt is given as an argument to the example app, eg
5d4afb5ceSopenharmony_ci
6d4afb5ceSopenharmony_ci```
7d4afb5ceSopenharmony_ci $ ./lws-minimal-raw-file <file>
8d4afb5ceSopenharmony_ci```
9d4afb5ceSopenharmony_ci
10d4afb5ceSopenharmony_ciOn a Linux system, some example files for testing might be
11d4afb5ceSopenharmony_ci
12d4afb5ceSopenharmony_ci - /proc/self/fd/0      (stdin)
13d4afb5ceSopenharmony_ci - /dev/ttyUSB0         (a USB <-> serial converter)
14d4afb5ceSopenharmony_ci - /dev/input/event<n>  (needs root... input device events)
15d4afb5ceSopenharmony_ci
16d4afb5ceSopenharmony_ciThe example application opens the file in the protocol init
17d4afb5ceSopenharmony_cihandler, and hexdumps data from the file to the lws log
18d4afb5ceSopenharmony_cias it becomes available.
19d4afb5ceSopenharmony_ci
20d4afb5ceSopenharmony_ciThis isn't very useful standalone as shown here for clarity, but you can
21d4afb5ceSopenharmony_cifreely combine raw file descriptor adoption with other lws server
22d4afb5ceSopenharmony_ciand client features.
23d4afb5ceSopenharmony_ci
24d4afb5ceSopenharmony_ciBecuase raw file events have their own callback reasons, the handlers can
25d4afb5ceSopenharmony_cibe integrated in a single protocol that also handles http and ws
26d4afb5ceSopenharmony_ciserver and client callbacks without conflict.
27d4afb5ceSopenharmony_ci
28d4afb5ceSopenharmony_ci## build
29d4afb5ceSopenharmony_ci
30d4afb5ceSopenharmony_ci```
31d4afb5ceSopenharmony_ci $ cmake . && make
32d4afb5ceSopenharmony_ci```
33d4afb5ceSopenharmony_ci
34d4afb5ceSopenharmony_ci## usage
35d4afb5ceSopenharmony_ci
36d4afb5ceSopenharmony_ci```
37d4afb5ceSopenharmony_ci $ ./lws-minimal-raw-file /proc/self/fd/0
38d4afb5ceSopenharmony_ci[2018/03/22 10:48:53:9709] USER: LWS minimal raw file
39d4afb5ceSopenharmony_ci[2018/03/22 10:48:53:9876] NOTICE: Creating Vhost 'default' port -2, 1 protocols, IPv6 off
40d4afb5ceSopenharmony_ci[2018/03/22 10:48:55:0037] NOTICE: LWS_CALLBACK_RAW_ADOPT_FILE
41d4afb5ceSopenharmony_ci
42d4afb5ceSopenharmony_ci[2018/03/22 10:48:55:9370] NOTICE: LWS_CALLBACK_RAW_RX_FILE
43d4afb5ceSopenharmony_ci[2018/03/22 10:48:55:9377] NOTICE: 
44d4afb5ceSopenharmony_ci[2018/03/22 10:48:55:9408] NOTICE: 0000: 0A                                                 .               
45d4afb5ceSopenharmony_ci
46d4afb5ceSopenharmony_ci```
47d4afb5ceSopenharmony_ci
48d4afb5ceSopenharmony_ciThe example logs above show the result of typing the Enter key.
49