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