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