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