From c0a281cedb7361e9c5fd9b452a9e05bccf594898 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Wed, 8 Feb 2012 13:05:23 +0100 Subject: [PATCH] added first generated documentation --- .doxygen | 277 ++++++ README | 5 + docs/html/accept_8c.html | 192 +++++ docs/html/accept_8c__incl.map | 2 + docs/html/accept_8c__incl.md5 | 1 + docs/html/accept_8c__incl.png | Bin 0 -> 2049 bytes ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.map | 3 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 | 1 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.png | Bin 0 -> 680 bytes docs/html/accept_8c_source.html | 141 +++ docs/html/annotated.html | 126 +++ docs/html/bc_s.png | Bin 0 -> 677 bytes docs/html/class_8c.html | 200 +++++ docs/html/class_8c__incl.map | 2 + docs/html/class_8c__incl.md5 | 1 + docs/html/class_8c__incl.png | Bin 0 -> 1636 bytes ...71582148d8bd8a9387e89843e1904a_icgraph.map | 3 + ...71582148d8bd8a9387e89843e1904a_icgraph.md5 | 1 + ...71582148d8bd8a9387e89843e1904a_icgraph.png | Bin 0 -> 779 bytes docs/html/class_8c_source.html | 136 +++ docs/html/class_8h.html | 625 ++++++++++++++ docs/html/class_8h__dep__incl.map | 5 + docs/html/class_8h__dep__incl.md5 | 1 + docs/html/class_8h__dep__incl.png | Bin 0 -> 2280 bytes docs/html/class_8h__incl.map | 3 + docs/html/class_8h__incl.md5 | 1 + docs/html/class_8h__incl.png | Bin 0 -> 2611 bytes ...382a42de272d5cc4d6bb5b17db6ede_icgraph.map | 3 + ...382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 | 1 + ...382a42de272d5cc4d6bb5b17db6ede_icgraph.png | Bin 0 -> 779 bytes docs/html/class_8h_source.html | 196 +++++ docs/html/classes.html | 118 +++ docs/html/close__conn_8c.html | 176 ++++ docs/html/close__conn_8c__incl.map | 2 + docs/html/close__conn_8c__incl.md5 | 1 + docs/html/close__conn_8c__incl.png | Bin 0 -> 1646 bytes ...21e61c8676f0b4c3b8fc401e26f266_icgraph.map | 4 + ...21e61c8676f0b4c3b8fc401e26f266_icgraph.md5 | 1 + ...21e61c8676f0b4c3b8fc401e26f266_icgraph.png | Bin 0 -> 935 bytes docs/html/close__conn_8c_source.html | 129 +++ docs/html/closed.png | Bin 0 -> 126 bytes docs/html/connect_8c.html | 180 ++++ docs/html/connect_8c__incl.map | 2 + docs/html/connect_8c__incl.md5 | 1 + docs/html/connect_8c__incl.png | Bin 0 -> 2328 bytes ...bfc4792c437102f20e2c86c4ee8581b_cgraph.map | 3 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.md5 | 1 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.png | Bin 0 -> 693 bytes docs/html/connect_8c_source.html | 134 +++ docs/html/daemonize_8c.html | 165 ++++ docs/html/daemonize_8c__incl.map | 2 + docs/html/daemonize_8c__incl.md5 | 1 + docs/html/daemonize_8c__incl.png | Bin 0 -> 1276 bytes docs/html/daemonize_8c_source.html | 133 +++ docs/html/doxygen.css | 800 ++++++++++++++++++ docs/html/doxygen.png | Bin 0 -> 3942 bytes docs/html/files.html | 147 ++++ docs/html/ftv2blank.png | Bin 0 -> 82 bytes docs/html/ftv2doc.png | Bin 0 -> 762 bytes docs/html/ftv2folderclosed.png | Bin 0 -> 598 bytes docs/html/ftv2folderopen.png | Bin 0 -> 590 bytes docs/html/ftv2lastnode.png | Bin 0 -> 82 bytes docs/html/ftv2link.png | Bin 0 -> 762 bytes docs/html/ftv2mlastnode.png | Bin 0 -> 221 bytes docs/html/ftv2mnode.png | Bin 0 -> 221 bytes docs/html/ftv2node.png | Bin 0 -> 82 bytes docs/html/ftv2plastnode.png | Bin 0 -> 215 bytes docs/html/ftv2pnode.png | Bin 0 -> 215 bytes docs/html/ftv2splitbar.png | Bin 0 -> 249 bytes docs/html/ftv2vertline.png | Bin 0 -> 82 bytes docs/html/functions.html | 336 ++++++++ docs/html/functions_func.html | 119 +++ docs/html/functions_vars.html | 327 +++++++ docs/html/globals.html | 455 ++++++++++ docs/html/globals_defs.html | 274 ++++++ docs/html/globals_enum.html | 124 +++ docs/html/globals_eval.html | 157 ++++ docs/html/globals_func.html | 242 ++++++ docs/html/globals_type.html | 151 ++++ docs/html/globals_vars.html | 126 +++ docs/html/graph_legend.html | 167 ++++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.png | Bin 0 -> 3907 bytes docs/html/handle__accept_8c.html | 121 +++ docs/html/handle__accept_8c__dep__incl.map | 3 + docs/html/handle__accept_8c__dep__incl.md5 | 1 + docs/html/handle__accept_8c__dep__incl.png | Bin 0 -> 1085 bytes docs/html/handle__accept_8c_source.html | 137 +++ docs/html/index.html | 103 +++ docs/html/installdox | 112 +++ docs/html/interface_2class_8c.html | 241 ++++++ docs/html/interface_2class_8c__incl.map | 2 + docs/html/interface_2class_8c__incl.md5 | 1 + docs/html/interface_2class_8c__incl.png | Bin 0 -> 2089 bytes ...a46f0179448063a30f6f219270bf1e0_cgraph.map | 3 + ...a46f0179448063a30f6f219270bf1e0_cgraph.md5 | 1 + ...a46f0179448063a30f6f219270bf1e0_cgraph.png | Bin 0 -> 778 bytes docs/html/interface_2class_8c_source.html | 166 ++++ docs/html/interface_2class_8h.html | 374 ++++++++ docs/html/interface_2class_8h__dep__incl.map | 2 + docs/html/interface_2class_8h__dep__incl.md5 | 1 + docs/html/interface_2class_8h__dep__incl.png | Bin 0 -> 651 bytes docs/html/interface_2class_8h__incl.map | 2 + docs/html/interface_2class_8h__incl.md5 | 1 + docs/html/interface_2class_8h__incl.png | Bin 0 -> 1386 bytes ...1116659174ec46c5a04721d31631053_cgraph.map | 3 + ...1116659174ec46c5a04721d31631053_cgraph.md5 | 1 + ...1116659174ec46c5a04721d31631053_cgraph.png | Bin 0 -> 778 bytes docs/html/interface_2class_8h_source.html | 142 ++++ docs/html/interface_2logger_8c.html | 202 +++++ docs/html/interface_2logger_8c__incl.map | 2 + docs/html/interface_2logger_8c__incl.md5 | 1 + docs/html/interface_2logger_8c__incl.png | Bin 0 -> 1941 bytes ...53743a944f1faef3866efaa52d3c7f_icgraph.map | 7 + ...53743a944f1faef3866efaa52d3c7f_icgraph.md5 | 1 + ...53743a944f1faef3866efaa52d3c7f_icgraph.png | Bin 0 -> 2102 bytes docs/html/interface_2logger_8c_source.html | 147 ++++ docs/html/interface_2logger_8h.html | 230 +++++ docs/html/interface_2logger_8h__dep__incl.map | 2 + docs/html/interface_2logger_8h__dep__incl.md5 | 1 + docs/html/interface_2logger_8h__dep__incl.png | Bin 0 -> 640 bytes docs/html/interface_2logger_8h__incl.map | 2 + docs/html/interface_2logger_8h__incl.md5 | 1 + docs/html/interface_2logger_8h__incl.png | Bin 0 -> 1409 bytes ...f8662ec8b300dcfb5064906937553e_icgraph.map | 7 + ...f8662ec8b300dcfb5064906937553e_icgraph.md5 | 1 + ...f8662ec8b300dcfb5064906937553e_icgraph.png | Bin 0 -> 2102 bytes docs/html/interface_2logger_8h_source.html | 132 +++ docs/html/interface_8c.html | 196 +++++ docs/html/interface_8c__incl.map | 2 + docs/html/interface_8c__incl.md5 | 1 + docs/html/interface_8c__incl.png | Bin 0 -> 1522 bytes docs/html/interface_8c_source.html | 151 ++++ docs/html/interface_8h.html | 382 +++++++++ docs/html/interface_8h__dep__incl.map | 6 + docs/html/interface_8h__dep__incl.md5 | 1 + docs/html/interface_8h__dep__incl.png | Bin 0 -> 2660 bytes docs/html/interface_8h__incl.map | 2 + docs/html/interface_8h__incl.md5 | 1 + docs/html/interface_8h__incl.png | Bin 0 -> 875 bytes docs/html/interface_8h_source.html | 149 ++++ docs/html/jquery.js | 54 ++ docs/html/listen_8c.html | 189 +++++ docs/html/listen_8c__incl.map | 2 + docs/html/listen_8c__incl.md5 | 1 + docs/html/listen_8c__incl.png | Bin 0 -> 2305 bytes ...57c220e9371523ef55b1137a1efed57_cgraph.map | 3 + ...57c220e9371523ef55b1137a1efed57_cgraph.md5 | 1 + ...57c220e9371523ef55b1137a1efed57_cgraph.png | Bin 0 -> 655 bytes docs/html/listen_8c_source.html | 143 ++++ docs/html/logger_8c.html | 232 +++++ docs/html/logger_8c__incl.map | 2 + docs/html/logger_8c__incl.md5 | 1 + docs/html/logger_8c__incl.png | Bin 0 -> 1960 bytes docs/html/logger_8c_source.html | 143 ++++ docs/html/logger_8h.html | 235 +++++ docs/html/logger_8h__dep__incl.map | 4 + docs/html/logger_8h__dep__incl.md5 | 1 + docs/html/logger_8h__dep__incl.png | Bin 0 -> 1413 bytes docs/html/logger_8h__incl.map | 4 + docs/html/logger_8h__incl.md5 | 1 + docs/html/logger_8h__incl.png | Bin 0 -> 3031 bytes docs/html/logger_8h_source.html | 143 ++++ docs/html/nav_f.png | Bin 0 -> 159 bytes docs/html/nav_h.png | Bin 0 -> 97 bytes docs/html/navtree.css | 123 +++ docs/html/navtree.js | 308 +++++++ docs/html/open.png | Bin 0 -> 118 bytes docs/html/poll_8c.html | 146 ++++ docs/html/poll_8c__dep__incl.map | 3 + docs/html/poll_8c__dep__incl.md5 | 1 + docs/html/poll_8c__dep__incl.png | Bin 0 -> 827 bytes docs/html/poll_8c_source.html | 167 ++++ docs/html/read_8c.html | 121 +++ docs/html/read_8c__dep__incl.map | 3 + docs/html/read_8c__dep__incl.md5 | 1 + docs/html/read_8c__dep__incl.png | Bin 0 -> 884 bytes docs/html/read_8c_source.html | 148 ++++ docs/html/request_8c.html | 203 +++++ docs/html/request_8c__incl.map | 2 + docs/html/request_8c__incl.md5 | 1 + docs/html/request_8c__incl.png | Bin 0 -> 2339 bytes docs/html/request_8c_source.html | 154 ++++ docs/html/request_8h.html | 125 +++ docs/html/request_8h__incl.map | 2 + docs/html/request_8h__incl.md5 | 1 + docs/html/request_8h__incl.png | Bin 0 -> 854 bytes docs/html/request_8h_source.html | 132 +++ docs/html/request__parser_8c.html | 244 ++++++ docs/html/request__parser_8c__incl.map | 2 + docs/html/request__parser_8c__incl.md5 | 1 + docs/html/request__parser_8c__incl.png | Bin 0 -> 4935 bytes docs/html/request__parser_8c_source.html | 348 ++++++++ docs/html/request__parser_8h.html | 213 +++++ docs/html/request__parser_8h__incl.map | 2 + docs/html/request__parser_8h__incl.md5 | 1 + docs/html/request__parser_8h__incl.png | Bin 0 -> 1460 bytes docs/html/request__parser_8h_source.html | 139 +++ docs/html/request__queue_8c.html | 202 +++++ docs/html/request__queue_8c__incl.map | 2 + docs/html/request__queue_8c__incl.md5 | 1 + docs/html/request__queue_8c__incl.png | Bin 0 -> 2190 bytes docs/html/request__queue_8c_source.html | 137 +++ docs/html/request__queue_8h.html | 146 ++++ docs/html/request__queue_8h__incl.map | 2 + docs/html/request__queue_8h__incl.md5 | 1 + docs/html/request__queue_8h__incl.png | Bin 0 -> 1317 bytes docs/html/request__queue_8h_source.html | 127 +++ docs/html/resize.js | 81 ++ docs/html/run_8c.html | 342 ++++++++ docs/html/run_8c__incl.map | 5 + docs/html/run_8c__incl.md5 | 1 + docs/html/run_8c__incl.png | Bin 0 -> 7222 bytes ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.map | 4 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 | 1 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.png | Bin 0 -> 1162 bytes ...a4d9073b80d8ae1459fb11ddd23675_icgraph.map | 3 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 | 1 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.png | Bin 0 -> 532 bytes docs/html/run_8c_source.html | 217 +++++ docs/html/search/all_5f.html | 48 ++ docs/html/search/all_61.html | 25 + docs/html/search/all_62.html | 44 + docs/html/search/all_63.html | 171 ++++ docs/html/search/all_64.html | 58 ++ docs/html/search/all_65.html | 36 + docs/html/search/all_66.html | 56 ++ docs/html/search/all_68.html | 112 +++ docs/html/search/all_69.html | 138 +++ docs/html/search/all_6c.html | 148 ++++ docs/html/search/all_6d.html | 68 ++ docs/html/search/all_6e.html | 71 ++ docs/html/search/all_6f.html | 26 + docs/html/search/all_70.html | 55 ++ docs/html/search/all_72.html | 114 +++ docs/html/search/all_73.html | 150 ++++ docs/html/search/all_74.html | 40 + docs/html/search/all_75.html | 26 + docs/html/search/all_76.html | 26 + docs/html/search/all_77.html | 32 + docs/html/search/classes_63.html | 25 + docs/html/search/classes_68.html | 35 + docs/html/search/classes_69.html | 45 + docs/html/search/classes_6c.html | 35 + docs/html/search/classes_73.html | 30 + docs/html/search/close.png | Bin 0 -> 273 bytes docs/html/search/defines_5f.html | 38 + docs/html/search/defines_63.html | 62 ++ docs/html/search/defines_64.html | 26 + docs/html/search/defines_65.html | 26 + docs/html/search/defines_68.html | 38 + docs/html/search/defines_69.html | 50 ++ docs/html/search/defines_6d.html | 44 + docs/html/search/defines_6e.html | 32 + docs/html/search/defines_70.html | 38 + docs/html/search/defines_72.html | 38 + docs/html/search/defines_74.html | 26 + docs/html/search/enums_65.html | 26 + docs/html/search/enums_6c.html | 26 + docs/html/search/enumvalues_68.html | 50 ++ docs/html/search/enumvalues_6c.html | 68 ++ docs/html/search/files_61.html | 25 + docs/html/search/files_63.html | 50 ++ docs/html/search/files_64.html | 25 + docs/html/search/files_68.html | 25 + docs/html/search/files_69.html | 30 + docs/html/search/files_6c.html | 45 + docs/html/search/files_70.html | 25 + docs/html/search/files_72.html | 60 ++ docs/html/search/files_73.html | 70 ++ docs/html/search/files_74.html | 25 + docs/html/search/functions_63.html | 80 ++ docs/html/search/functions_64.html | 26 + docs/html/search/functions_65.html | 29 + docs/html/search/functions_69.html | 54 ++ docs/html/search/functions_6c.html | 29 + docs/html/search/functions_6d.html | 26 + docs/html/search/functions_73.html | 74 ++ docs/html/search/functions_74.html | 29 + docs/html/search/mag_sel.png | Bin 0 -> 563 bytes docs/html/search/nomatches.html | 12 + docs/html/search/search.css | 240 ++++++ docs/html/search/search.js | 742 ++++++++++++++++ docs/html/search/search_l.png | Bin 0 -> 604 bytes docs/html/search/search_m.png | Bin 0 -> 158 bytes docs/html/search/search_r.png | Bin 0 -> 612 bytes docs/html/search/typedefs_63.html | 26 + docs/html/search/typedefs_66.html | 56 ++ docs/html/search/typedefs_68.html | 26 + docs/html/search/typedefs_69.html | 32 + docs/html/search/typedefs_6c.html | 26 + docs/html/search/variables_5f.html | 30 + docs/html/search/variables_62.html | 44 + docs/html/search/variables_63.html | 38 + docs/html/search/variables_64.html | 41 + docs/html/search/variables_68.html | 38 + docs/html/search/variables_69.html | 32 + docs/html/search/variables_6c.html | 44 + docs/html/search/variables_6d.html | 38 + docs/html/search/variables_6e.html | 59 ++ docs/html/search/variables_6f.html | 26 + docs/html/search/variables_70.html | 32 + docs/html/search/variables_72.html | 56 ++ docs/html/search/variables_73.html | 38 + docs/html/search/variables_75.html | 26 + docs/html/search/variables_76.html | 26 + docs/html/search/variables_77.html | 32 + docs/html/server_8c.html | 206 +++++ docs/html/server_8c__incl.map | 2 + docs/html/server_8c__incl.md5 | 1 + docs/html/server_8c__incl.png | Bin 0 -> 2926 bytes docs/html/server_8c_source.html | 163 ++++ docs/html/server_8h.html | 409 +++++++++ docs/html/server_8h__incl.map | 6 + docs/html/server_8h__incl.md5 | 1 + docs/html/server_8h__incl.png | Bin 0 -> 5532 bytes ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.map | 4 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 | 1 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.png | Bin 0 -> 1162 bytes ...a4d9073b80d8ae1459fb11ddd23675_icgraph.map | 3 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 | 1 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.png | Bin 0 -> 532 bytes ...f787254ea87cbc851d292e5a7d195d_icgraph.map | 4 + ...f787254ea87cbc851d292e5a7d195d_icgraph.md5 | 1 + ...f787254ea87cbc851d292e5a7d195d_icgraph.png | Bin 0 -> 935 bytes docs/html/server_8h_source.html | 159 ++++ docs/html/signalHandling_8c.html | 230 +++++ docs/html/signalHandling_8c__incl.map | 2 + docs/html/signalHandling_8c__incl.md5 | 1 + docs/html/signalHandling_8c__incl.png | Bin 0 -> 886 bytes ...de31bdef82f181f8045b94ae0933916_cgraph.map | 3 + ...de31bdef82f181f8045b94ae0933916_cgraph.md5 | 1 + ...de31bdef82f181f8045b94ae0933916_cgraph.png | Bin 0 -> 608 bytes ...e31bdef82f181f8045b94ae0933916_icgraph.map | 3 + ...e31bdef82f181f8045b94ae0933916_icgraph.md5 | 1 + ...e31bdef82f181f8045b94ae0933916_icgraph.png | Bin 0 -> 535 bytes ...612b9588ed0fb05d70680db02b3630_icgraph.map | 4 + ...612b9588ed0fb05d70680db02b3630_icgraph.md5 | 1 + ...612b9588ed0fb05d70680db02b3630_icgraph.png | Bin 0 -> 761 bytes docs/html/signalHandling_8c_source.html | 135 +++ docs/html/signalHandling_8h.html | 224 +++++ ...de31bdef82f181f8045b94ae0933916_cgraph.map | 3 + ...de31bdef82f181f8045b94ae0933916_cgraph.md5 | 1 + ...de31bdef82f181f8045b94ae0933916_cgraph.png | Bin 0 -> 608 bytes ...e31bdef82f181f8045b94ae0933916_icgraph.map | 3 + ...e31bdef82f181f8045b94ae0933916_icgraph.md5 | 1 + ...e31bdef82f181f8045b94ae0933916_icgraph.png | Bin 0 -> 535 bytes ...612b9588ed0fb05d70680db02b3630_icgraph.map | 4 + ...612b9588ed0fb05d70680db02b3630_icgraph.md5 | 1 + ...612b9588ed0fb05d70680db02b3630_icgraph.png | Bin 0 -> 761 bytes docs/html/signalHandling_8h_source.html | 120 +++ docs/html/socket_8c.html | 204 +++++ docs/html/socket_8c__incl.map | 2 + docs/html/socket_8c__incl.md5 | 1 + docs/html/socket_8c__incl.png | Bin 0 -> 2459 bytes docs/html/socket_8c_source.html | 157 ++++ docs/html/socket_8h.html | 315 +++++++ docs/html/socket_8h__dep__incl.map | 3 + docs/html/socket_8h__dep__incl.md5 | 1 + docs/html/socket_8h__dep__incl.png | Bin 0 -> 848 bytes docs/html/socket_8h__incl.map | 5 + docs/html/socket_8h__incl.md5 | 1 + docs/html/socket_8h__incl.png | Bin 0 -> 3965 bytes ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.map | 3 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 | 1 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.png | Bin 0 -> 680 bytes ...57c220e9371523ef55b1137a1efed57_cgraph.map | 3 + ...57c220e9371523ef55b1137a1efed57_cgraph.md5 | 1 + ...57c220e9371523ef55b1137a1efed57_cgraph.png | Bin 0 -> 655 bytes ...bfc4792c437102f20e2c86c4ee8581b_cgraph.map | 3 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.md5 | 1 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.png | Bin 0 -> 693 bytes docs/html/socket_8h_source.html | 133 +++ docs/html/stderr_8c.html | 189 +++++ docs/html/stderr_8c__incl.map | 2 + docs/html/stderr_8c__incl.md5 | 1 + docs/html/stderr_8c__incl.png | Bin 0 -> 1568 bytes docs/html/stderr_8c_source.html | 126 +++ docs/html/stream__reader_8c.html | 163 ++++ docs/html/stream__reader_8c__incl.map | 2 + docs/html/stream__reader_8c__incl.md5 | 1 + docs/html/stream__reader_8c__incl.png | Bin 0 -> 1518 bytes docs/html/stream__reader_8c_source.html | 129 +++ docs/html/stream__reader_8h.html | 186 ++++ docs/html/stream__reader_8h__incl.map | 2 + docs/html/stream__reader_8h__incl.md5 | 1 + docs/html/stream__reader_8h__incl.png | Bin 0 -> 1104 bytes docs/html/stream__reader_8h_source.html | 129 +++ docs/html/structHttpRequest.html | 253 ++++++ docs/html/structHttpRequestParser.html | 213 +++++ .../structHttpRequestParser__coll__graph.map | 4 + .../structHttpRequestParser__coll__graph.md5 | 1 + .../structHttpRequestParser__coll__graph.png | Bin 0 -> 3604 bytes docs/html/structHttpRequestQueue.html | 165 ++++ .../structHttpRequestQueue__coll__graph.map | 3 + .../structHttpRequestQueue__coll__graph.md5 | 1 + .../structHttpRequestQueue__coll__graph.png | Bin 0 -> 2390 bytes docs/html/structLogger.html | 142 ++++ docs/html/structLoggerStderr.html | 144 ++++ docs/html/structLoggerSyslog.html | 144 ++++ docs/html/structServer.html | 295 +++++++ docs/html/structServer__coll__graph.map | 4 + docs/html/structServer__coll__graph.md5 | 1 + docs/html/structServer__coll__graph.png | Bin 0 -> 3018 bytes docs/html/structSock.html | 181 ++++ docs/html/structSock__coll__graph.map | 3 + docs/html/structSock__coll__graph.md5 | 1 + docs/html/structSock__coll__graph.png | Bin 0 -> 1161 bytes docs/html/structclass.html | 195 +++++ docs/html/structclass__coll__graph.map | 2 + docs/html/structclass__coll__graph.md5 | 1 + docs/html/structclass__coll__graph.png | Bin 0 -> 1208 bytes docs/html/structi__Class.html | 197 +++++ docs/html/structi__Class__coll__graph.map | 3 + docs/html/structi__Class__coll__graph.md5 | 1 + docs/html/structi__Class__coll__graph.png | Bin 0 -> 1241 bytes docs/html/structi__Logger.html | 165 ++++ docs/html/structi__Logger__coll__graph.map | 3 + docs/html/structi__Logger__coll__graph.md5 | 1 + docs/html/structi__Logger__coll__graph.png | Bin 0 -> 1038 bytes docs/html/structi__StreamReader.html | 165 ++++ .../structi__StreamReader__coll__graph.map | 3 + .../structi__StreamReader__coll__graph.md5 | 1 + .../structi__StreamReader__coll__graph.png | Bin 0 -> 1227 bytes docs/html/structiface__impl.html | 174 ++++ docs/html/structinterface.html | 158 ++++ docs/html/syslog_8c.html | 189 +++++ docs/html/syslog_8c__incl.map | 2 + docs/html/syslog_8c__incl.md5 | 1 + docs/html/syslog_8c__incl.png | Bin 0 -> 1618 bytes docs/html/syslog_8c_source.html | 139 +++ docs/html/tab_a.png | Bin 0 -> 140 bytes docs/html/tab_b.png | Bin 0 -> 178 bytes docs/html/tab_h.png | Bin 0 -> 192 bytes docs/html/tab_s.png | Bin 0 -> 189 bytes docs/html/tabs.css | 59 ++ docs/html/testserver_8c.html | 175 ++++ docs/html/testserver_8c__incl.map | 2 + docs/html/testserver_8c__incl.md5 | 1 + docs/html/testserver_8c__incl.png | Bin 0 -> 3460 bytes ...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map | 7 + ...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 | 1 + ...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png | Bin 0 -> 1800 bytes docs/html/testserver_8c_source.html | 141 +++ docs/latex/Makefile | 19 + docs/latex/accept_8c.tex | 68 ++ docs/latex/accept_8c__incl.dot | 15 + docs/latex/accept_8c__incl.md5 | 1 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.dot | 10 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 | 1 + docs/latex/annotated.tex | 17 + docs/latex/class_8c.tex | 70 ++ docs/latex/class_8c__incl.dot | 15 + docs/latex/class_8c__incl.md5 | 1 + ...71582148d8bd8a9387e89843e1904a_icgraph.dot | 10 + ...71582148d8bd8a9387e89843e1904a_icgraph.md5 | 1 + docs/latex/class_8h.tex | 350 ++++++++ docs/latex/class_8h__dep__incl.dot | 16 + docs/latex/class_8h__dep__incl.md5 | 1 + docs/latex/class_8h__incl.dot | 18 + docs/latex/class_8h__incl.md5 | 1 + ...382a42de272d5cc4d6bb5b17db6ede_icgraph.dot | 10 + ...382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 | 1 + docs/latex/close__conn_8c.tex | 48 ++ docs/latex/close__conn_8c__incl.dot | 13 + docs/latex/close__conn_8c__incl.md5 | 1 + ...21e61c8676f0b4c3b8fc401e26f266_icgraph.dot | 12 + ...21e61c8676f0b4c3b8fc401e26f266_icgraph.md5 | 1 + docs/latex/connect_8c.tex | 53 ++ docs/latex/connect_8c__incl.dot | 17 + docs/latex/connect_8c__incl.md5 | 1 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.dot | 10 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.md5 | 1 + docs/latex/daemonize_8c.tex | 50 ++ docs/latex/daemonize_8c__incl.dot | 13 + docs/latex/daemonize_8c__incl.md5 | 1 + docs/latex/doxygen.sty | 445 ++++++++++ docs/latex/files.tex | 39 + docs/latex/handle__accept_8c.tex | 5 + docs/latex/handle__accept_8c__dep__incl.dot | 9 + docs/latex/handle__accept_8c__dep__incl.md5 | 1 + docs/latex/interface_2class_8c.tex | 109 +++ docs/latex/interface_2class_8c__incl.dot | 17 + docs/latex/interface_2class_8c__incl.md5 | 1 + ...a46f0179448063a30f6f219270bf1e0_cgraph.dot | 10 + ...a46f0179448063a30f6f219270bf1e0_cgraph.md5 | 1 + docs/latex/interface_2class_8h.tex | 204 +++++ docs/latex/interface_2class_8h__dep__incl.dot | 8 + docs/latex/interface_2class_8h__dep__incl.md5 | 1 + docs/latex/interface_2class_8h__incl.dot | 12 + docs/latex/interface_2class_8h__incl.md5 | 1 + ...1116659174ec46c5a04721d31631053_cgraph.dot | 10 + ...1116659174ec46c5a04721d31631053_cgraph.md5 | 1 + docs/latex/interface_2logger_8c.tex | 64 ++ docs/latex/interface_2logger_8c__incl.dot | 15 + docs/latex/interface_2logger_8c__incl.md5 | 1 + ...53743a944f1faef3866efaa52d3c7f_icgraph.dot | 18 + ...53743a944f1faef3866efaa52d3c7f_icgraph.md5 | 1 + docs/latex/interface_2logger_8h.tex | 86 ++ .../latex/interface_2logger_8h__dep__incl.dot | 8 + .../latex/interface_2logger_8h__dep__incl.md5 | 1 + docs/latex/interface_2logger_8h__incl.dot | 12 + docs/latex/interface_2logger_8h__incl.md5 | 1 + ...f8662ec8b300dcfb5064906937553e_icgraph.dot | 18 + ...f8662ec8b300dcfb5064906937553e_icgraph.md5 | 1 + docs/latex/interface_8c.tex | 69 ++ docs/latex/interface_8c__incl.dot | 13 + docs/latex/interface_8c__incl.md5 | 1 + docs/latex/interface_8h.tex | 195 +++++ docs/latex/interface_8h__dep__incl.dot | 18 + docs/latex/interface_8h__dep__incl.md5 | 1 + docs/latex/interface_8h__incl.dot | 9 + docs/latex/interface_8h__incl.md5 | 1 + docs/latex/listen_8c.tex | 64 ++ docs/latex/listen_8c__incl.dot | 17 + docs/latex/listen_8c__incl.md5 | 1 + ...57c220e9371523ef55b1137a1efed57_cgraph.dot | 10 + ...57c220e9371523ef55b1137a1efed57_cgraph.md5 | 1 + docs/latex/logger_8c.tex | 72 ++ docs/latex/logger_8c__incl.dot | 15 + docs/latex/logger_8c__incl.md5 | 1 + docs/latex/logger_8h.tex | 124 +++ docs/latex/logger_8h__dep__incl.dot | 12 + docs/latex/logger_8h__dep__incl.md5 | 1 + docs/latex/logger_8h__incl.dot | 20 + docs/latex/logger_8h__incl.md5 | 1 + docs/latex/poll_8c.tex | 26 + docs/latex/poll_8c__dep__incl.dot | 9 + docs/latex/poll_8c__dep__incl.md5 | 1 + docs/latex/read_8c.tex | 5 + docs/latex/read_8c__dep__incl.dot | 9 + docs/latex/read_8c__dep__incl.md5 | 1 + docs/latex/refman.tex | 113 +++ docs/latex/request_8c.tex | 43 + docs/latex/request_8c__incl.dot | 17 + docs/latex/request_8c__incl.md5 | 1 + docs/latex/request_8h.tex | 11 + docs/latex/request_8h__incl.dot | 9 + docs/latex/request_8h__incl.md5 | 1 + docs/latex/request__parser_8c.tex | 63 ++ docs/latex/request__parser_8c__incl.dot | 31 + docs/latex/request__parser_8c__incl.md5 | 1 + docs/latex/request__parser_8h.tex | 102 +++ docs/latex/request__parser_8h__incl.dot | 11 + docs/latex/request__parser_8h__incl.md5 | 1 + docs/latex/request__queue_8c.tex | 42 + docs/latex/request__queue_8c__incl.dot | 15 + docs/latex/request__queue_8c__incl.md5 | 1 + docs/latex/request__queue_8h.tex | 29 + docs/latex/request__queue_8h__incl.dot | 11 + docs/latex/request__queue_8h__incl.md5 | 1 + docs/latex/run_8c.tex | 226 +++++ docs/latex/run_8c__incl.dot | 45 + docs/latex/run_8c__incl.md5 | 1 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.dot | 12 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 | 1 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.dot | 10 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 | 1 + docs/latex/server_8c.tex | 46 + docs/latex/server_8c__incl.dot | 23 + docs/latex/server_8c__incl.md5 | 1 + docs/latex/server_8h.tex | 259 ++++++ docs/latex/server_8h__incl.dot | 33 + docs/latex/server_8h__incl.md5 | 1 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.dot | 12 + ...7a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 | 1 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.dot | 10 + ...a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 | 1 + ...f787254ea87cbc851d292e5a7d195d_icgraph.dot | 12 + ...f787254ea87cbc851d292e5a7d195d_icgraph.md5 | 1 + docs/latex/signalHandling_8c.tex | 98 +++ docs/latex/signalHandling_8c__incl.dot | 9 + docs/latex/signalHandling_8c__incl.md5 | 1 + ...de31bdef82f181f8045b94ae0933916_cgraph.dot | 10 + ...de31bdef82f181f8045b94ae0933916_cgraph.md5 | 1 + ...e31bdef82f181f8045b94ae0933916_icgraph.dot | 10 + ...e31bdef82f181f8045b94ae0933916_icgraph.md5 | 1 + ...612b9588ed0fb05d70680db02b3630_icgraph.dot | 12 + ...612b9588ed0fb05d70680db02b3630_icgraph.md5 | 1 + docs/latex/signalHandling_8h.tex | 96 +++ ...de31bdef82f181f8045b94ae0933916_cgraph.dot | 10 + ...de31bdef82f181f8045b94ae0933916_cgraph.md5 | 1 + ...e31bdef82f181f8045b94ae0933916_icgraph.dot | 10 + ...e31bdef82f181f8045b94ae0933916_icgraph.md5 | 1 + ...612b9588ed0fb05d70680db02b3630_icgraph.dot | 12 + ...612b9588ed0fb05d70680db02b3630_icgraph.md5 | 1 + docs/latex/socket_8c.tex | 44 + docs/latex/socket_8c__incl.dot | 19 + docs/latex/socket_8c__incl.md5 | 1 + docs/latex/socket_8h.tex | 158 ++++ docs/latex/socket_8h__dep__incl.dot | 9 + docs/latex/socket_8h__dep__incl.md5 | 1 + docs/latex/socket_8h__incl.dot | 25 + docs/latex/socket_8h__incl.md5 | 1 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.dot | 10 + ...6aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 | 1 + ...57c220e9371523ef55b1137a1efed57_cgraph.dot | 10 + ...57c220e9371523ef55b1137a1efed57_cgraph.md5 | 1 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.dot | 10 + ...bfc4792c437102f20e2c86c4ee8581b_cgraph.md5 | 1 + docs/latex/stderr_8c.tex | 39 + docs/latex/stderr_8c__incl.dot | 13 + docs/latex/stderr_8c__incl.md5 | 1 + docs/latex/stream__reader_8c.tex | 39 + docs/latex/stream__reader_8c__incl.dot | 11 + docs/latex/stream__reader_8c__incl.md5 | 1 + docs/latex/stream__reader_8h.tex | 60 ++ docs/latex/stream__reader_8h__incl.dot | 9 + docs/latex/stream__reader_8h__incl.md5 | 1 + docs/latex/structHttpRequest.tex | 112 +++ docs/latex/structHttpRequestParser.tex | 84 ++ .../structHttpRequestParser__coll__graph.dot | 11 + .../structHttpRequestParser__coll__graph.md5 | 1 + docs/latex/structHttpRequestQueue.tex | 51 ++ .../structHttpRequestQueue__coll__graph.dot | 9 + .../structHttpRequestQueue__coll__graph.md5 | 1 + docs/latex/structLogger.tex | 37 + docs/latex/structLoggerStderr.tex | 37 + docs/latex/structLoggerSyslog.tex | 37 + docs/latex/structServer.tex | 137 +++ docs/latex/structServer__coll__graph.dot | 12 + docs/latex/structServer__coll__graph.md5 | 1 + docs/latex/structSock.tex | 62 ++ docs/latex/structSock__coll__graph.dot | 9 + docs/latex/structSock__coll__graph.md5 | 1 + docs/latex/structclass.tex | 73 ++ docs/latex/structclass__coll__graph.dot | 8 + docs/latex/structclass__coll__graph.md5 | 1 + docs/latex/structi__Class.tex | 73 ++ docs/latex/structi__Class__coll__graph.dot | 9 + docs/latex/structi__Class__coll__graph.md5 | 1 + docs/latex/structi__Logger.tex | 51 ++ docs/latex/structi__Logger__coll__graph.dot | 9 + docs/latex/structi__Logger__coll__graph.md5 | 1 + docs/latex/structi__StreamReader.tex | 51 ++ .../structi__StreamReader__coll__graph.dot | 9 + .../structi__StreamReader__coll__graph.md5 | 1 + docs/latex/structiface__impl.tex | 59 ++ docs/latex/structinterface.tex | 48 ++ docs/latex/syslog_8c.tex | 39 + docs/latex/syslog_8c__incl.dot | 13 + docs/latex/syslog_8c__incl.md5 | 1 + docs/latex/testserver_8c.tex | 58 ++ docs/latex/testserver_8c__incl.dot | 23 + docs/latex/testserver_8c__incl.md5 | 1 + ...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot | 18 + ...66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 | 1 + 647 files changed, 31697 insertions(+) create mode 100644 .doxygen create mode 100644 docs/html/accept_8c.html create mode 100644 docs/html/accept_8c__incl.map create mode 100644 docs/html/accept_8c__incl.md5 create mode 100644 docs/html/accept_8c__incl.png create mode 100644 docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map create mode 100644 docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 create mode 100644 docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png create mode 100644 docs/html/accept_8c_source.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/class_8c.html create mode 100644 docs/html/class_8c__incl.map create mode 100644 docs/html/class_8c__incl.md5 create mode 100644 docs/html/class_8c__incl.png create mode 100644 docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.map create mode 100644 docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 create mode 100644 docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.png create mode 100644 docs/html/class_8c_source.html create mode 100644 docs/html/class_8h.html create mode 100644 docs/html/class_8h__dep__incl.map create mode 100644 docs/html/class_8h__dep__incl.md5 create mode 100644 docs/html/class_8h__dep__incl.png create mode 100644 docs/html/class_8h__incl.map create mode 100644 docs/html/class_8h__incl.md5 create mode 100644 docs/html/class_8h__incl.png create mode 100644 docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.map create mode 100644 docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 create mode 100644 docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.png create mode 100644 docs/html/class_8h_source.html create mode 100644 docs/html/classes.html create mode 100644 docs/html/close__conn_8c.html create mode 100644 docs/html/close__conn_8c__incl.map create mode 100644 docs/html/close__conn_8c__incl.md5 create mode 100644 docs/html/close__conn_8c__incl.png create mode 100644 docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.map create mode 100644 docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 create mode 100644 docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png create mode 100644 docs/html/close__conn_8c_source.html create mode 100644 docs/html/closed.png create mode 100644 docs/html/connect_8c.html create mode 100644 docs/html/connect_8c__incl.map create mode 100644 docs/html/connect_8c__incl.md5 create mode 100644 docs/html/connect_8c__incl.png create mode 100644 docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.map create mode 100644 docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 create mode 100644 docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png create mode 100644 docs/html/connect_8c_source.html create mode 100644 docs/html/daemonize_8c.html create mode 100644 docs/html/daemonize_8c__incl.map create mode 100644 docs/html/daemonize_8c__incl.md5 create mode 100644 docs/html/daemonize_8c__incl.png create mode 100644 docs/html/daemonize_8c_source.html create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.png create mode 100644 docs/html/files.html create mode 100644 docs/html/ftv2blank.png create mode 100644 docs/html/ftv2doc.png create mode 100644 docs/html/ftv2folderclosed.png create mode 100644 docs/html/ftv2folderopen.png create mode 100644 docs/html/ftv2lastnode.png create mode 100644 docs/html/ftv2link.png create mode 100644 docs/html/ftv2mlastnode.png create mode 100644 docs/html/ftv2mnode.png create mode 100644 docs/html/ftv2node.png create mode 100644 docs/html/ftv2plastnode.png create mode 100644 docs/html/ftv2pnode.png create mode 100644 docs/html/ftv2splitbar.png create mode 100644 docs/html/ftv2vertline.png create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_func.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/globals.html create mode 100644 docs/html/globals_defs.html create mode 100644 docs/html/globals_enum.html create mode 100644 docs/html/globals_eval.html create mode 100644 docs/html/globals_func.html create mode 100644 docs/html/globals_type.html create mode 100644 docs/html/globals_vars.html create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/graph_legend.md5 create mode 100644 docs/html/graph_legend.png create mode 100644 docs/html/handle__accept_8c.html create mode 100644 docs/html/handle__accept_8c__dep__incl.map create mode 100644 docs/html/handle__accept_8c__dep__incl.md5 create mode 100644 docs/html/handle__accept_8c__dep__incl.png create mode 100644 docs/html/handle__accept_8c_source.html create mode 100644 docs/html/index.html create mode 100755 docs/html/installdox create mode 100644 docs/html/interface_2class_8c.html create mode 100644 docs/html/interface_2class_8c__incl.map create mode 100644 docs/html/interface_2class_8c__incl.md5 create mode 100644 docs/html/interface_2class_8c__incl.png create mode 100644 docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.map create mode 100644 docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 create mode 100644 docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.png create mode 100644 docs/html/interface_2class_8c_source.html create mode 100644 docs/html/interface_2class_8h.html create mode 100644 docs/html/interface_2class_8h__dep__incl.map create mode 100644 docs/html/interface_2class_8h__dep__incl.md5 create mode 100644 docs/html/interface_2class_8h__dep__incl.png create mode 100644 docs/html/interface_2class_8h__incl.map create mode 100644 docs/html/interface_2class_8h__incl.md5 create mode 100644 docs/html/interface_2class_8h__incl.png create mode 100644 docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.map create mode 100644 docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 create mode 100644 docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.png create mode 100644 docs/html/interface_2class_8h_source.html create mode 100644 docs/html/interface_2logger_8c.html create mode 100644 docs/html/interface_2logger_8c__incl.map create mode 100644 docs/html/interface_2logger_8c__incl.md5 create mode 100644 docs/html/interface_2logger_8c__incl.png create mode 100644 docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.map create mode 100644 docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 create mode 100644 docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png create mode 100644 docs/html/interface_2logger_8c_source.html create mode 100644 docs/html/interface_2logger_8h.html create mode 100644 docs/html/interface_2logger_8h__dep__incl.map create mode 100644 docs/html/interface_2logger_8h__dep__incl.md5 create mode 100644 docs/html/interface_2logger_8h__dep__incl.png create mode 100644 docs/html/interface_2logger_8h__incl.map create mode 100644 docs/html/interface_2logger_8h__incl.md5 create mode 100644 docs/html/interface_2logger_8h__incl.png create mode 100644 docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map create mode 100644 docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 create mode 100644 docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png create mode 100644 docs/html/interface_2logger_8h_source.html create mode 100644 docs/html/interface_8c.html create mode 100644 docs/html/interface_8c__incl.map create mode 100644 docs/html/interface_8c__incl.md5 create mode 100644 docs/html/interface_8c__incl.png create mode 100644 docs/html/interface_8c_source.html create mode 100644 docs/html/interface_8h.html create mode 100644 docs/html/interface_8h__dep__incl.map create mode 100644 docs/html/interface_8h__dep__incl.md5 create mode 100644 docs/html/interface_8h__dep__incl.png create mode 100644 docs/html/interface_8h__incl.map create mode 100644 docs/html/interface_8h__incl.md5 create mode 100644 docs/html/interface_8h__incl.png create mode 100644 docs/html/interface_8h_source.html create mode 100644 docs/html/jquery.js create mode 100644 docs/html/listen_8c.html create mode 100644 docs/html/listen_8c__incl.map create mode 100644 docs/html/listen_8c__incl.md5 create mode 100644 docs/html/listen_8c__incl.png create mode 100644 docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map create mode 100644 docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 create mode 100644 docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png create mode 100644 docs/html/listen_8c_source.html create mode 100644 docs/html/logger_8c.html create mode 100644 docs/html/logger_8c__incl.map create mode 100644 docs/html/logger_8c__incl.md5 create mode 100644 docs/html/logger_8c__incl.png create mode 100644 docs/html/logger_8c_source.html create mode 100644 docs/html/logger_8h.html create mode 100644 docs/html/logger_8h__dep__incl.map create mode 100644 docs/html/logger_8h__dep__incl.md5 create mode 100644 docs/html/logger_8h__dep__incl.png create mode 100644 docs/html/logger_8h__incl.map create mode 100644 docs/html/logger_8h__incl.md5 create mode 100644 docs/html/logger_8h__incl.png create mode 100644 docs/html/logger_8h_source.html create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/open.png create mode 100644 docs/html/poll_8c.html create mode 100644 docs/html/poll_8c__dep__incl.map create mode 100644 docs/html/poll_8c__dep__incl.md5 create mode 100644 docs/html/poll_8c__dep__incl.png create mode 100644 docs/html/poll_8c_source.html create mode 100644 docs/html/read_8c.html create mode 100644 docs/html/read_8c__dep__incl.map create mode 100644 docs/html/read_8c__dep__incl.md5 create mode 100644 docs/html/read_8c__dep__incl.png create mode 100644 docs/html/read_8c_source.html create mode 100644 docs/html/request_8c.html create mode 100644 docs/html/request_8c__incl.map create mode 100644 docs/html/request_8c__incl.md5 create mode 100644 docs/html/request_8c__incl.png create mode 100644 docs/html/request_8c_source.html create mode 100644 docs/html/request_8h.html create mode 100644 docs/html/request_8h__incl.map create mode 100644 docs/html/request_8h__incl.md5 create mode 100644 docs/html/request_8h__incl.png create mode 100644 docs/html/request_8h_source.html create mode 100644 docs/html/request__parser_8c.html create mode 100644 docs/html/request__parser_8c__incl.map create mode 100644 docs/html/request__parser_8c__incl.md5 create mode 100644 docs/html/request__parser_8c__incl.png create mode 100644 docs/html/request__parser_8c_source.html create mode 100644 docs/html/request__parser_8h.html create mode 100644 docs/html/request__parser_8h__incl.map create mode 100644 docs/html/request__parser_8h__incl.md5 create mode 100644 docs/html/request__parser_8h__incl.png create mode 100644 docs/html/request__parser_8h_source.html create mode 100644 docs/html/request__queue_8c.html create mode 100644 docs/html/request__queue_8c__incl.map create mode 100644 docs/html/request__queue_8c__incl.md5 create mode 100644 docs/html/request__queue_8c__incl.png create mode 100644 docs/html/request__queue_8c_source.html create mode 100644 docs/html/request__queue_8h.html create mode 100644 docs/html/request__queue_8h__incl.map create mode 100644 docs/html/request__queue_8h__incl.md5 create mode 100644 docs/html/request__queue_8h__incl.png create mode 100644 docs/html/request__queue_8h_source.html create mode 100644 docs/html/resize.js create mode 100644 docs/html/run_8c.html create mode 100644 docs/html/run_8c__incl.map create mode 100644 docs/html/run_8c__incl.md5 create mode 100644 docs/html/run_8c__incl.png create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 create mode 100644 docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png create mode 100644 docs/html/run_8c_source.html create mode 100644 docs/html/search/all_5f.html create mode 100644 docs/html/search/all_61.html create mode 100644 docs/html/search/all_62.html create mode 100644 docs/html/search/all_63.html create mode 100644 docs/html/search/all_64.html create mode 100644 docs/html/search/all_65.html create mode 100644 docs/html/search/all_66.html create mode 100644 docs/html/search/all_68.html create mode 100644 docs/html/search/all_69.html create mode 100644 docs/html/search/all_6c.html create mode 100644 docs/html/search/all_6d.html create mode 100644 docs/html/search/all_6e.html create mode 100644 docs/html/search/all_6f.html create mode 100644 docs/html/search/all_70.html create mode 100644 docs/html/search/all_72.html create mode 100644 docs/html/search/all_73.html create mode 100644 docs/html/search/all_74.html create mode 100644 docs/html/search/all_75.html create mode 100644 docs/html/search/all_76.html create mode 100644 docs/html/search/all_77.html create mode 100644 docs/html/search/classes_63.html create mode 100644 docs/html/search/classes_68.html create mode 100644 docs/html/search/classes_69.html create mode 100644 docs/html/search/classes_6c.html create mode 100644 docs/html/search/classes_73.html create mode 100644 docs/html/search/close.png create mode 100644 docs/html/search/defines_5f.html create mode 100644 docs/html/search/defines_63.html create mode 100644 docs/html/search/defines_64.html create mode 100644 docs/html/search/defines_65.html create mode 100644 docs/html/search/defines_68.html create mode 100644 docs/html/search/defines_69.html create mode 100644 docs/html/search/defines_6d.html create mode 100644 docs/html/search/defines_6e.html create mode 100644 docs/html/search/defines_70.html create mode 100644 docs/html/search/defines_72.html create mode 100644 docs/html/search/defines_74.html create mode 100644 docs/html/search/enums_65.html create mode 100644 docs/html/search/enums_6c.html create mode 100644 docs/html/search/enumvalues_68.html create mode 100644 docs/html/search/enumvalues_6c.html create mode 100644 docs/html/search/files_61.html create mode 100644 docs/html/search/files_63.html create mode 100644 docs/html/search/files_64.html create mode 100644 docs/html/search/files_68.html create mode 100644 docs/html/search/files_69.html create mode 100644 docs/html/search/files_6c.html create mode 100644 docs/html/search/files_70.html create mode 100644 docs/html/search/files_72.html create mode 100644 docs/html/search/files_73.html create mode 100644 docs/html/search/files_74.html create mode 100644 docs/html/search/functions_63.html create mode 100644 docs/html/search/functions_64.html create mode 100644 docs/html/search/functions_65.html create mode 100644 docs/html/search/functions_69.html create mode 100644 docs/html/search/functions_6c.html create mode 100644 docs/html/search/functions_6d.html create mode 100644 docs/html/search/functions_73.html create mode 100644 docs/html/search/functions_74.html create mode 100644 docs/html/search/mag_sel.png create mode 100644 docs/html/search/nomatches.html create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/search_l.png create mode 100644 docs/html/search/search_m.png create mode 100644 docs/html/search/search_r.png create mode 100644 docs/html/search/typedefs_63.html create mode 100644 docs/html/search/typedefs_66.html create mode 100644 docs/html/search/typedefs_68.html create mode 100644 docs/html/search/typedefs_69.html create mode 100644 docs/html/search/typedefs_6c.html create mode 100644 docs/html/search/variables_5f.html create mode 100644 docs/html/search/variables_62.html create mode 100644 docs/html/search/variables_63.html create mode 100644 docs/html/search/variables_64.html create mode 100644 docs/html/search/variables_68.html create mode 100644 docs/html/search/variables_69.html create mode 100644 docs/html/search/variables_6c.html create mode 100644 docs/html/search/variables_6d.html create mode 100644 docs/html/search/variables_6e.html create mode 100644 docs/html/search/variables_6f.html create mode 100644 docs/html/search/variables_70.html create mode 100644 docs/html/search/variables_72.html create mode 100644 docs/html/search/variables_73.html create mode 100644 docs/html/search/variables_75.html create mode 100644 docs/html/search/variables_76.html create mode 100644 docs/html/search/variables_77.html create mode 100644 docs/html/server_8c.html create mode 100644 docs/html/server_8c__incl.map create mode 100644 docs/html/server_8c__incl.md5 create mode 100644 docs/html/server_8c__incl.png create mode 100644 docs/html/server_8c_source.html create mode 100644 docs/html/server_8h.html create mode 100644 docs/html/server_8h__incl.map create mode 100644 docs/html/server_8h__incl.md5 create mode 100644 docs/html/server_8h__incl.png create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.map create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.map create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 create mode 100644 docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png create mode 100644 docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.map create mode 100644 docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 create mode 100644 docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.png create mode 100644 docs/html/server_8h_source.html create mode 100644 docs/html/signalHandling_8c.html create mode 100644 docs/html/signalHandling_8c__incl.map create mode 100644 docs/html/signalHandling_8c__incl.md5 create mode 100644 docs/html/signalHandling_8c__incl.png create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.map create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.map create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 create mode 100644 docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png create mode 100644 docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map create mode 100644 docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 create mode 100644 docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png create mode 100644 docs/html/signalHandling_8c_source.html create mode 100644 docs/html/signalHandling_8h.html create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.map create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 create mode 100644 docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png create mode 100644 docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map create mode 100644 docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 create mode 100644 docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png create mode 100644 docs/html/signalHandling_8h_source.html create mode 100644 docs/html/socket_8c.html create mode 100644 docs/html/socket_8c__incl.map create mode 100644 docs/html/socket_8c__incl.md5 create mode 100644 docs/html/socket_8c__incl.png create mode 100644 docs/html/socket_8c_source.html create mode 100644 docs/html/socket_8h.html create mode 100644 docs/html/socket_8h__dep__incl.map create mode 100644 docs/html/socket_8h__dep__incl.md5 create mode 100644 docs/html/socket_8h__dep__incl.png create mode 100644 docs/html/socket_8h__incl.map create mode 100644 docs/html/socket_8h__incl.md5 create mode 100644 docs/html/socket_8h__incl.png create mode 100644 docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map create mode 100644 docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 create mode 100644 docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png create mode 100644 docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.map create mode 100644 docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 create mode 100644 docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png create mode 100644 docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.map create mode 100644 docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 create mode 100644 docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png create mode 100644 docs/html/socket_8h_source.html create mode 100644 docs/html/stderr_8c.html create mode 100644 docs/html/stderr_8c__incl.map create mode 100644 docs/html/stderr_8c__incl.md5 create mode 100644 docs/html/stderr_8c__incl.png create mode 100644 docs/html/stderr_8c_source.html create mode 100644 docs/html/stream__reader_8c.html create mode 100644 docs/html/stream__reader_8c__incl.map create mode 100644 docs/html/stream__reader_8c__incl.md5 create mode 100644 docs/html/stream__reader_8c__incl.png create mode 100644 docs/html/stream__reader_8c_source.html create mode 100644 docs/html/stream__reader_8h.html create mode 100644 docs/html/stream__reader_8h__incl.map create mode 100644 docs/html/stream__reader_8h__incl.md5 create mode 100644 docs/html/stream__reader_8h__incl.png create mode 100644 docs/html/stream__reader_8h_source.html create mode 100644 docs/html/structHttpRequest.html create mode 100644 docs/html/structHttpRequestParser.html create mode 100644 docs/html/structHttpRequestParser__coll__graph.map create mode 100644 docs/html/structHttpRequestParser__coll__graph.md5 create mode 100644 docs/html/structHttpRequestParser__coll__graph.png create mode 100644 docs/html/structHttpRequestQueue.html create mode 100644 docs/html/structHttpRequestQueue__coll__graph.map create mode 100644 docs/html/structHttpRequestQueue__coll__graph.md5 create mode 100644 docs/html/structHttpRequestQueue__coll__graph.png create mode 100644 docs/html/structLogger.html create mode 100644 docs/html/structLoggerStderr.html create mode 100644 docs/html/structLoggerSyslog.html create mode 100644 docs/html/structServer.html create mode 100644 docs/html/structServer__coll__graph.map create mode 100644 docs/html/structServer__coll__graph.md5 create mode 100644 docs/html/structServer__coll__graph.png create mode 100644 docs/html/structSock.html create mode 100644 docs/html/structSock__coll__graph.map create mode 100644 docs/html/structSock__coll__graph.md5 create mode 100644 docs/html/structSock__coll__graph.png create mode 100644 docs/html/structclass.html create mode 100644 docs/html/structclass__coll__graph.map create mode 100644 docs/html/structclass__coll__graph.md5 create mode 100644 docs/html/structclass__coll__graph.png create mode 100644 docs/html/structi__Class.html create mode 100644 docs/html/structi__Class__coll__graph.map create mode 100644 docs/html/structi__Class__coll__graph.md5 create mode 100644 docs/html/structi__Class__coll__graph.png create mode 100644 docs/html/structi__Logger.html create mode 100644 docs/html/structi__Logger__coll__graph.map create mode 100644 docs/html/structi__Logger__coll__graph.md5 create mode 100644 docs/html/structi__Logger__coll__graph.png create mode 100644 docs/html/structi__StreamReader.html create mode 100644 docs/html/structi__StreamReader__coll__graph.map create mode 100644 docs/html/structi__StreamReader__coll__graph.md5 create mode 100644 docs/html/structi__StreamReader__coll__graph.png create mode 100644 docs/html/structiface__impl.html create mode 100644 docs/html/structinterface.html create mode 100644 docs/html/syslog_8c.html create mode 100644 docs/html/syslog_8c__incl.map create mode 100644 docs/html/syslog_8c__incl.md5 create mode 100644 docs/html/syslog_8c__incl.png create mode 100644 docs/html/syslog_8c_source.html create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tabs.css create mode 100644 docs/html/testserver_8c.html create mode 100644 docs/html/testserver_8c__incl.map create mode 100644 docs/html/testserver_8c__incl.md5 create mode 100644 docs/html/testserver_8c__incl.png create mode 100644 docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map create mode 100644 docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 create mode 100644 docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png create mode 100644 docs/html/testserver_8c_source.html create mode 100644 docs/latex/Makefile create mode 100644 docs/latex/accept_8c.tex create mode 100644 docs/latex/accept_8c__incl.dot create mode 100644 docs/latex/accept_8c__incl.md5 create mode 100644 docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot create mode 100644 docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 create mode 100644 docs/latex/annotated.tex create mode 100644 docs/latex/class_8c.tex create mode 100644 docs/latex/class_8c__incl.dot create mode 100644 docs/latex/class_8c__incl.md5 create mode 100644 docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.dot create mode 100644 docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 create mode 100644 docs/latex/class_8h.tex create mode 100644 docs/latex/class_8h__dep__incl.dot create mode 100644 docs/latex/class_8h__dep__incl.md5 create mode 100644 docs/latex/class_8h__incl.dot create mode 100644 docs/latex/class_8h__incl.md5 create mode 100644 docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.dot create mode 100644 docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 create mode 100644 docs/latex/close__conn_8c.tex create mode 100644 docs/latex/close__conn_8c__incl.dot create mode 100644 docs/latex/close__conn_8c__incl.md5 create mode 100644 docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.dot create mode 100644 docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 create mode 100644 docs/latex/connect_8c.tex create mode 100644 docs/latex/connect_8c__incl.dot create mode 100644 docs/latex/connect_8c__incl.md5 create mode 100644 docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot create mode 100644 docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 create mode 100644 docs/latex/daemonize_8c.tex create mode 100644 docs/latex/daemonize_8c__incl.dot create mode 100644 docs/latex/daemonize_8c__incl.md5 create mode 100644 docs/latex/doxygen.sty create mode 100644 docs/latex/files.tex create mode 100644 docs/latex/handle__accept_8c.tex create mode 100644 docs/latex/handle__accept_8c__dep__incl.dot create mode 100644 docs/latex/handle__accept_8c__dep__incl.md5 create mode 100644 docs/latex/interface_2class_8c.tex create mode 100644 docs/latex/interface_2class_8c__incl.dot create mode 100644 docs/latex/interface_2class_8c__incl.md5 create mode 100644 docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.dot create mode 100644 docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 create mode 100644 docs/latex/interface_2class_8h.tex create mode 100644 docs/latex/interface_2class_8h__dep__incl.dot create mode 100644 docs/latex/interface_2class_8h__dep__incl.md5 create mode 100644 docs/latex/interface_2class_8h__incl.dot create mode 100644 docs/latex/interface_2class_8h__incl.md5 create mode 100644 docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.dot create mode 100644 docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 create mode 100644 docs/latex/interface_2logger_8c.tex create mode 100644 docs/latex/interface_2logger_8c__incl.dot create mode 100644 docs/latex/interface_2logger_8c__incl.md5 create mode 100644 docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.dot create mode 100644 docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 create mode 100644 docs/latex/interface_2logger_8h.tex create mode 100644 docs/latex/interface_2logger_8h__dep__incl.dot create mode 100644 docs/latex/interface_2logger_8h__dep__incl.md5 create mode 100644 docs/latex/interface_2logger_8h__incl.dot create mode 100644 docs/latex/interface_2logger_8h__incl.md5 create mode 100644 docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.dot create mode 100644 docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 create mode 100644 docs/latex/interface_8c.tex create mode 100644 docs/latex/interface_8c__incl.dot create mode 100644 docs/latex/interface_8c__incl.md5 create mode 100644 docs/latex/interface_8h.tex create mode 100644 docs/latex/interface_8h__dep__incl.dot create mode 100644 docs/latex/interface_8h__dep__incl.md5 create mode 100644 docs/latex/interface_8h__incl.dot create mode 100644 docs/latex/interface_8h__incl.md5 create mode 100644 docs/latex/listen_8c.tex create mode 100644 docs/latex/listen_8c__incl.dot create mode 100644 docs/latex/listen_8c__incl.md5 create mode 100644 docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.dot create mode 100644 docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 create mode 100644 docs/latex/logger_8c.tex create mode 100644 docs/latex/logger_8c__incl.dot create mode 100644 docs/latex/logger_8c__incl.md5 create mode 100644 docs/latex/logger_8h.tex create mode 100644 docs/latex/logger_8h__dep__incl.dot create mode 100644 docs/latex/logger_8h__dep__incl.md5 create mode 100644 docs/latex/logger_8h__incl.dot create mode 100644 docs/latex/logger_8h__incl.md5 create mode 100644 docs/latex/poll_8c.tex create mode 100644 docs/latex/poll_8c__dep__incl.dot create mode 100644 docs/latex/poll_8c__dep__incl.md5 create mode 100644 docs/latex/read_8c.tex create mode 100644 docs/latex/read_8c__dep__incl.dot create mode 100644 docs/latex/read_8c__dep__incl.md5 create mode 100644 docs/latex/refman.tex create mode 100644 docs/latex/request_8c.tex create mode 100644 docs/latex/request_8c__incl.dot create mode 100644 docs/latex/request_8c__incl.md5 create mode 100644 docs/latex/request_8h.tex create mode 100644 docs/latex/request_8h__incl.dot create mode 100644 docs/latex/request_8h__incl.md5 create mode 100644 docs/latex/request__parser_8c.tex create mode 100644 docs/latex/request__parser_8c__incl.dot create mode 100644 docs/latex/request__parser_8c__incl.md5 create mode 100644 docs/latex/request__parser_8h.tex create mode 100644 docs/latex/request__parser_8h__incl.dot create mode 100644 docs/latex/request__parser_8h__incl.md5 create mode 100644 docs/latex/request__queue_8c.tex create mode 100644 docs/latex/request__queue_8c__incl.dot create mode 100644 docs/latex/request__queue_8c__incl.md5 create mode 100644 docs/latex/request__queue_8h.tex create mode 100644 docs/latex/request__queue_8h__incl.dot create mode 100644 docs/latex/request__queue_8h__incl.md5 create mode 100644 docs/latex/run_8c.tex create mode 100644 docs/latex/run_8c__incl.dot create mode 100644 docs/latex/run_8c__incl.md5 create mode 100644 docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot create mode 100644 docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 create mode 100644 docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot create mode 100644 docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 create mode 100644 docs/latex/server_8c.tex create mode 100644 docs/latex/server_8c__incl.dot create mode 100644 docs/latex/server_8c__incl.md5 create mode 100644 docs/latex/server_8h.tex create mode 100644 docs/latex/server_8h__incl.dot create mode 100644 docs/latex/server_8h__incl.md5 create mode 100644 docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot create mode 100644 docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 create mode 100644 docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot create mode 100644 docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 create mode 100644 docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.dot create mode 100644 docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 create mode 100644 docs/latex/signalHandling_8c.tex create mode 100644 docs/latex/signalHandling_8c__incl.dot create mode 100644 docs/latex/signalHandling_8c__incl.md5 create mode 100644 docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.dot create mode 100644 docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 create mode 100644 docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.dot create mode 100644 docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 create mode 100644 docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.dot create mode 100644 docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 create mode 100644 docs/latex/signalHandling_8h.tex create mode 100644 docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.dot create mode 100644 docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 create mode 100644 docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.dot create mode 100644 docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 create mode 100644 docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.dot create mode 100644 docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 create mode 100644 docs/latex/socket_8c.tex create mode 100644 docs/latex/socket_8c__incl.dot create mode 100644 docs/latex/socket_8c__incl.md5 create mode 100644 docs/latex/socket_8h.tex create mode 100644 docs/latex/socket_8h__dep__incl.dot create mode 100644 docs/latex/socket_8h__dep__incl.md5 create mode 100644 docs/latex/socket_8h__incl.dot create mode 100644 docs/latex/socket_8h__incl.md5 create mode 100644 docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot create mode 100644 docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 create mode 100644 docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.dot create mode 100644 docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 create mode 100644 docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot create mode 100644 docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 create mode 100644 docs/latex/stderr_8c.tex create mode 100644 docs/latex/stderr_8c__incl.dot create mode 100644 docs/latex/stderr_8c__incl.md5 create mode 100644 docs/latex/stream__reader_8c.tex create mode 100644 docs/latex/stream__reader_8c__incl.dot create mode 100644 docs/latex/stream__reader_8c__incl.md5 create mode 100644 docs/latex/stream__reader_8h.tex create mode 100644 docs/latex/stream__reader_8h__incl.dot create mode 100644 docs/latex/stream__reader_8h__incl.md5 create mode 100644 docs/latex/structHttpRequest.tex create mode 100644 docs/latex/structHttpRequestParser.tex create mode 100644 docs/latex/structHttpRequestParser__coll__graph.dot create mode 100644 docs/latex/structHttpRequestParser__coll__graph.md5 create mode 100644 docs/latex/structHttpRequestQueue.tex create mode 100644 docs/latex/structHttpRequestQueue__coll__graph.dot create mode 100644 docs/latex/structHttpRequestQueue__coll__graph.md5 create mode 100644 docs/latex/structLogger.tex create mode 100644 docs/latex/structLoggerStderr.tex create mode 100644 docs/latex/structLoggerSyslog.tex create mode 100644 docs/latex/structServer.tex create mode 100644 docs/latex/structServer__coll__graph.dot create mode 100644 docs/latex/structServer__coll__graph.md5 create mode 100644 docs/latex/structSock.tex create mode 100644 docs/latex/structSock__coll__graph.dot create mode 100644 docs/latex/structSock__coll__graph.md5 create mode 100644 docs/latex/structclass.tex create mode 100644 docs/latex/structclass__coll__graph.dot create mode 100644 docs/latex/structclass__coll__graph.md5 create mode 100644 docs/latex/structi__Class.tex create mode 100644 docs/latex/structi__Class__coll__graph.dot create mode 100644 docs/latex/structi__Class__coll__graph.md5 create mode 100644 docs/latex/structi__Logger.tex create mode 100644 docs/latex/structi__Logger__coll__graph.dot create mode 100644 docs/latex/structi__Logger__coll__graph.md5 create mode 100644 docs/latex/structi__StreamReader.tex create mode 100644 docs/latex/structi__StreamReader__coll__graph.dot create mode 100644 docs/latex/structi__StreamReader__coll__graph.md5 create mode 100644 docs/latex/structiface__impl.tex create mode 100644 docs/latex/structinterface.tex create mode 100644 docs/latex/syslog_8c.tex create mode 100644 docs/latex/syslog_8c__incl.dot create mode 100644 docs/latex/syslog_8c__incl.md5 create mode 100644 docs/latex/testserver_8c.tex create mode 100644 docs/latex/testserver_8c__incl.dot create mode 100644 docs/latex/testserver_8c__incl.md5 create mode 100644 docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot create mode 100644 docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 diff --git a/.doxygen b/.doxygen new file mode 100644 index 0000000..ac0af9c --- /dev/null +++ b/.doxygen @@ -0,0 +1,277 @@ +# Doxyfile 1.7.3 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = server +PROJECT_NUMBER = 0.0.1 +PROJECT_BRIEF = basic server infrastructure +PROJECT_LOGO = +OUTPUT_DIRECTORY = docs +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = YES +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +SYMBOL_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = YES +EXTRACT_ANON_NSPACES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = YES +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = */tests/* */doc/* */docs/* */.git/* +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = YES +HTML_ALIGN_MEMBERS = YES +HTML_DYNAMIC_SECTIONS = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +USE_INLINE_TREES = YES +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_RELPATH = http://www.mathjax.org/mathjax +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = NO +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = YES +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +CALLER_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/README b/README index 3ec6f5c..fa21666 100644 --- a/README +++ b/README @@ -1,3 +1,8 @@ +Actually this is some kind of server toolkit, also containing +a class and interface toolkit for C. +I use a gcc preprocessor extension to use empty variadoc +argument lists so actually this is gcc only code. + This should become a server that has a dynamic time-sliced part that updates an internal state all the time. Clients might connect as they want and get some information diff --git a/docs/html/accept_8c.html b/docs/html/accept_8c.html new file mode 100644 index 0000000..e4b0be4 --- /dev/null +++ b/docs/html/accept_8c.html @@ -0,0 +1,192 @@ + + + + +server: src/socket/accept.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/accept.c File Reference

+
+
+
#include <errno.h>
+#include "socket.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+
+Include dependency graph for accept.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

Sock socketAccept (Sock this, char remoteAddr[16])
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Sock socketAccept (Sock this,
char remoteAddr[16] 
)
+
+
+ +

: Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D

+

: change port to remote port on success

+

+ +

Definition at line 8 of file accept.c.

+
{
+    Sock         sock;   /* Socket for client */
+    unsigned int len;    /* Length of client address data structure */
+
+    /* Set the size of the in-out parameter */
+    len = sizeof(this->addr);
+
+        sock = new(Sock, this->log, this->port);
+        close(sock->handle);
+    /* Wait for a client to connect */
+    sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+    if (-1 == sock->handle) {
+        loggerLog(this->log, LOGGER_WARNING,
+                "error accepting connection: %s", strerror(errno));
+    } else {
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+    }
+
+    return sock;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + +
+ All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines
+ + +
+ +
+ + + + diff --git a/docs/html/accept_8c__incl.map b/docs/html/accept_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/accept_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/accept_8c__incl.md5 b/docs/html/accept_8c__incl.md5 new file mode 100644 index 0000000..a779cce --- /dev/null +++ b/docs/html/accept_8c__incl.md5 @@ -0,0 +1 @@ +1f351f0407c3df2f6b6e1d1a4f5422ba \ No newline at end of file diff --git a/docs/html/accept_8c__incl.png b/docs/html/accept_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8b16546e588d84d1bb87f71af1d9a4d6d509ca9f GIT binary patch literal 2049 zcmV+c2>$npP)A#!cNZ5IkB^VPzrWMd z(*OVf|Ns9HsHYeJ0004WQchCs5$WEp`#AP@)y0)apv{2=&M@NFS(06ts;%lm-5 zybs9B`+&T>56H{=VBgEGS#MtHwGm2Qo`-!eUvCF5yM8Bh(Xl5l(_!Ds=Y}Qx^K2t@ zuOoRG7q+sDK%(Hv< zt(lklB6%4VmX{rGJMjuHawfh8IR#ree?;r6*X__KqdGAcm6u|ciBsO`7;`W&vcK_C zUnDQ1Vz$OMFejzlT&;gk)2RIFxNe78_JlQ6eJQT4$xvwJosKaFD+VsJTJ}j ztdYBu&*x>M_dY|@jAwF*1ut9v)-n1p#!S!4m*FQb56H{=fV{j9oc~>Uo-Z5Lg50|=@ogb~2YLR{vL1(_ zAbbHUHf$NQXIM^lejBR}_;|U+MK}rT>Tg?eWEM@%Z(&3D-Idgrl#mizqVId*;1s!e zGByQ2Tt-942??+%w!&q1I3WM>>W2#I?N`V~QT2E#=| z>@zT3C4_A_>4(+W+Y_3c{&17dV>g5DF?A(3ec&jYkGLU*keg_@O6I3*kRP z#ec@lkR4A{jS^5!+`nL__j6M8i>yzcRP(#L={>$&ejbnRWuEk7{+-M#_!OL5iDsvX)1`yfD)hHh@r6%7xtq*- zpFUp_M3U=I&&x60l=hU2kr7L*G^(HKWv1;sH)TA;y7QB1ezKYI6geHyR)HOGnRzrX6A%1MUE_&zCL)%ce9&j^e!gX9!2ee+N*#vyymO@H zk5P>svG6iKv7{}nT(PNjAn#fHIBa=&ZWUX($x95#%PaHaKwe&%9|!XC%KSKxmsjS; z;Z9z1wnOFAuEEy-Xpay71{I*){>wnDJ?f09#%lJgX15O4k}lyTs{;60{Xt`Le6Wou z%C$Nc@bc2Hnj3j(&cgT?g6!$@aES5p(zBZQUe;Ar18rITgP$_vg*b;5KprGjQSsXD z;iPq0@v0bUAW6$a?RCX;O1SRN4^+BPNmHwuVF0~2EgyW!YOcy9cC5pMs4~?nuA2E8 z>r)MMGx|W%N6F2>GNn8!$*!)3u{~-A9O4H$wyb~~p?xr>&E$`)nBN*MUh)EX3=KFa zlVtUSO({*J2ft8H6)JBKNtmfYWaAiAR&zBgim470qRUjTxM~(&dQ`(keTu4Na6jpT zZOUOuc6DN&ln*BB5b?Z}lUlql)Wp#(D6N64mTZbf-1Mw~HpydB>QEnkp`Pj{XcS?_ z^l2te;l0Xgu4XM8>li~+nYvh9H4862suA5LeZVh$uuVBEX*Pc(|XD&96DNT>39tj)N#6kG>zrbnKH>*nfeu1&B9BMY8apC z!?->y71}LnIWHModO4eyeqM?@jG6lm&PuViF>#MgDZTmU>M6oWJ$)mqtmY~#YEvEK zy{^hsuefS9y>zZ-e_l=sIeXcPrMdm^(mXEXr+q9}`^QY2 z%9PoIPi6XhDQOhpI0)DU7Hy@oj_ESH4ilovRIj*dR=q@3W9?&Wv4O43!7}BrB>D~y zgA=~PD}__VLmyBjk(U^p;AIV~LRl61fGUZ+#NdqY)?slKYpp(DN+K^YxYO@RcB!1& zuf~r9d3j}i9LUQn^W#8XUYQ>U^76|3IFOfD=EvdUUdH<;@beV0keWY6HD4-buOtG2 fKp+qZg!|%uIgw}^l9Z+c00000NkvXXu0mjfvI+Im literal 0 HcmV?d00001 diff --git a/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map b/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map new file mode 100644 index 0000000..26da2f8 --- /dev/null +++ b/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 b/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 new file mode 100644 index 0000000..9a38935 --- /dev/null +++ b/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 @@ -0,0 +1 @@ +fa824e3c68242e391222394188b16371 \ No newline at end of file diff --git a/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png b/docs/html/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..631e47c0af5016309c2642222f012f85dda4731f GIT binary patch literal 680 zcmV;Z0$2TsP)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0v$<2K~!jg?U)U7f-nq*u|PjkN-zKa&n`(*z|A>u zlet~rJB_7pxjrQ6sa@C9)YSCXh3Dw^ceTBHK0}9@5BiVYu`xI1#@v`2^S@$_x8?!i zJZ86NExM;M$0Q*o{{^EOk1$^@FUpMNea3iX*-qvS^?A&5!ZhU=QsUZ$ltSdqLy9tj zO!GY9^J>@zkmo@|H6CVOu&BmOK|{b?jh{ z2wbvUw^L%W94ERab@R>Km+aCV-ZyJCJI&ma3alrt>n5bCI$*)z_?pguMH zL_fdV;ivr!+|QuQ#*rTAXUY#!*4A?y! + + + +server: src/socket/accept.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/accept.c

+
+
+Go to the documentation of this file.
00001 #include <errno.h>      /* for errno */
+00002 
+00003 #include "socket.h"
+00004 #include "interface/class.h"
+00005 #include "interface/logger.h"
+00006 
+00007 Sock
+00008 socketAccept(Sock this, char remoteAddr[16])
+00009 {
+00010     Sock         sock;   /* Socket for client */
+00011     unsigned int len;    /* Length of client address data structure */
+00012 
+00013     /* Set the size of the in-out parameter */
+00014     len = sizeof(this->addr);
+00015 
+00023         sock = new(Sock, this->log, this->port);
+00024         close(sock->handle);
+00029     /* Wait for a client to connect */
+00030     sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+00031     if (-1 == sock->handle) {
+00032         loggerLog(this->log, LOGGER_WARNING,
+00033                 "error accepting connection: %s", strerror(errno));
+00034     } else {
+00035         loggerLog(this->log, LOGGER_INFO,
+00036                                 "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+00037     }
+00038 
+00039     return sock;
+00040 }
+00041 
+00042 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..59bfa99 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,126 @@ + + + + +server: Data Structures + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

Data Structures

+
+ +
+ + + + + +
+ +
+ + + + diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..e4018628b5b45cb4301037485a29d7d74ac22138 GIT binary patch literal 677 zcmV;W0$TlvP)X?0Pv5h+5!wElpi=&YL!gfY!djl#UDdPKy97F|A-deTa@qo3BWh1YQIvzmHR^g zFjV4I6pLB7_*vEZk^%p7c7Bh>0`4r^X#gpJE_Vz9fSHKqclcZaV^k3gX%h+1`u||O zZ+BY?7(R=ayr^kXE=E0Dw=$Ud3VJ?9^Cz@hP?388Cw5>9TloOJ>^KczCgj zns2=|0!a|)Yq3{hjL{xyy7|Tk0N}Pe+g9PUTL!4{#;eUhrNd@!_T<>Vu+35c)h>sq ztgb?(6W3oFLz#%?OMEV@{j#4LuDvjVGZ~6hpQT8li5b0yjvK8c4efl+vSz5)P6 zle78)00_Iv5)&E~hnOdcd}L}i+MU>k+Q8#@KjqJJN`gRj(~)RmNrck9ht@LelPtVO zwp(J;k!T=gC#%o(13-^E+g@aqc()pf{+j|0w)AH*Mq$54UjLv#jV$RYpz3Vjg$$=u z>yjfBQOhL=^@+#4#$l|{~}HZ-?1Yy{lI*$N}*YDC`<{+;>_#gMXZdz4NI00000 LNkvXXu0mjfx86dR literal 0 HcmV?d00001 diff --git a/docs/html/class_8c.html b/docs/html/class_8c.html new file mode 100644 index 0000000..8c82541 --- /dev/null +++ b/docs/html/class_8c.html @@ -0,0 +1,200 @@ + + + + +server: src/class.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/class.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include "class.h"
+#include "interface.h"
+
+Include dependency graph for class.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

void * class_getInterface (class_ptr *class, iface_ptr _iface)
class_ptr class_getClass (void *object)
+

Function Documentation

+ +
+
+ + + + + + + + +
class_ptr class_getClass (void * object)
+
+
+ +

Definition at line 21 of file class.c.

+
{
+        return *(class_ptr *)(object - sizeof(void*));
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* class_getInterface (class_ptrclass,
iface_ptr _iface 
)
+
+
+ +

Definition at line 8 of file class.c.

+
{
+        void * iface = (void *)IFACE_GET(*class, _iface);
+
+        while(NULL == iface && HAS_PARENT(*class)) {
+                *class = (*class)->parent;
+                iface = (void *)IFACE_GET(*class, _iface);
+        }
+
+        return iface;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/class_8c__incl.map b/docs/html/class_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/class_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/class_8c__incl.md5 b/docs/html/class_8c__incl.md5 new file mode 100644 index 0000000..0bea6af --- /dev/null +++ b/docs/html/class_8c__incl.md5 @@ -0,0 +1 @@ +0faa5486e8244c2d53a573e205a0b141 \ No newline at end of file diff --git a/docs/html/class_8c__incl.png b/docs/html/class_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e1230295b497d89492b71bd254b54233e2c49a20 GIT binary patch literal 1636 zcmZ`(dobIH7LKh)ThV$}#iA*q+$A1OZKb71h(`&nAng@g&9r_EU1=gL)uBbUiZrflD)jY2PX3vKelhMz=#)@ZD(F8nAG`T6k%I&)2e8 zc6N4sLLq~}fWzUz!NCLq;qKkLnVFfEmX>8@WkR7)DwS#pG#br@03pyKor}>CCqTy* zUJyYbJ!uHa|0JziReg=o>|>06wf1P|z3Upyq%;ef7?5yWpO;x{2rW(>c%Udbs*gzZy&!>#N0e)PU~PWOUWDC(w&onz zD|7rXnoi?Bju#zYNA!>NBt)+N#>d#uE!)E_1o=HMn_FNG0koN$%exP2DbGI-Ear#3 zw>|pbt5NKAdYrtGtBsVho=jn24nHvMN11Lw4TGl26v40-(i7V{R$1*muZr@u}U#+c+6 ze!xu_F%77F9l!9H$s8stF_ZRZXSyZcRvsgly!g4^CCIP#txgW*i40B_vFdHw`j{6D=75oPV26&&Q2Pi9`Cy1 z%8P-L47(Fq-yvRaZ5Qc2Gx*m-V%?Rtn0)?IQqC{J)mbn;&Dg$z|Qvh|U=>H&IWv%S?<`T!oTkK{A2%kl(eE6ZE%x9#`FR4P=n*EDi$~$EJu%tDr z;wOmEfgTJHA_W)JR3w^2l{SkG$ zllrV>*=pl6FQasKluy2^0CUEw3asM2*=awsiZR>coF6Tr+lkAj)U83*cef-(0-{kb z$#Uf%vsFy>@Wk-fE~iZv1xc<7I)c0&%Eq*)9G-Se zjxY)Lov|E)I`?Jdv!TiV89wq9pWE8?pfRVzg_-f!OK&%W-3@`-G>z+8c2?4jEStgX zH)%u4z4N8y>j)GFC$7}4jFTN9-&z>KKV}SU#FO2FdvTAgmUYoae%IX2in*UJ5+;;! zgeXsgR}QfP&SdL3^((ePLU~aoztpin*}0HNlznopgS)_3=C=#`ReT$tEJt*#Q_kzS z^jYnOl=7E`X={g3t+*%83{;iXMWqgvHRxt W>#;WY&~LQA9u$I(Kyd;R^ZyOiBOpfr literal 0 HcmV?d00001 diff --git a/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.map b/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.map new file mode 100644 index 0000000..3b39aa3 --- /dev/null +++ b/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 b/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 new file mode 100644 index 0000000..1ea4dc6 --- /dev/null +++ b/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 @@ -0,0 +1 @@ +26bc749db3f2482bfaa222c2df1cdda1 \ No newline at end of file diff --git a/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.png b/docs/html/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f38c39705cbbc90e4fba74339af38055bc9d4d04 GIT binary patch literal 779 zcmV+m1N8ifP)%c00960 z|CUL=SO5S30d!JMQvg8b*k%9#0)R4Ldvu4ejH7kujZQruM^RL)GYxN9j1@(_@3>t%U-xxFoU1N~$ z8-r^G{s}5RL|&JNq^~nDHy>fh@-*Iy_$v&2Oqbw1v8!g#_wQt2EDdJn;o}S>It00; zwUR;Kzn1}#T<7T}1{7oPl89S55?tiC94^~}ws)-2wBbkF7M=1qNwcVwo*DFNb&H*? zB_kOQ6WbZivKH(ubj-R%gRM`nl)d$dRB z(G*#lMTPXjpg*jN!EBA0W?{f&MmES0uFKBg8)}H4$r#Bx2hJqQ2N+1j{F1Ul9T{aM zpE4s~25pj8l%VyBfl9NelY%>Z2WIHfAVm2w|>`n~iezZ`dH*jx7Fg?IP zQ_+TA13tNcw%>Ml3Q7e}mPUZ?1qG6&SyV_>-`Cn{ttMxPd?v!Dfp|ia+38*wWFDl6 zkQ&CMuj@ZqZ}oxXt9!wvWSvy}a6j~c_otZ{;z^oCh4l44kbHG7XnAoRFHUD7*`g23 z(Fexdcu5gc{*=RpWLx;Ptm>HT@oJ;xx;1Cogc266}%^Po5zk9nXBNag`O zzyJ_f&jpP9B}6#_q&Kp=1g$Qnx<}N1O%UWA$!#ZT7M0QqgM&jA13+Ls7ck~W6nw;i zAWfi7-;su{I2V)wy2H}V$JV|TI_d0XtyKNQpnLKi={@!e143QhZ)g6~3~CqqMth3E z{(m^^h4d2iKQefeH3p4AW6&5h24BwL(^kFMFIh*kX3hR_`vupX(Qmg_6iomC002ov JPDHLkV1mf@U-AF| literal 0 HcmV?d00001 diff --git a/docs/html/class_8c_source.html b/docs/html/class_8c_source.html new file mode 100644 index 0000000..a85ff87 --- /dev/null +++ b/docs/html/class_8c_source.html @@ -0,0 +1,136 @@ + + + + +server: src/class.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/class.c

+
+
+Go to the documentation of this file.
00001 #include <stdarg.h>
+00002 #include <stdlib.h>
+00003 
+00004 #include "class.h"
+00005 #include "interface.h"
+00006 
+00007 void *
+00008 class_getInterface(class_ptr * class, iface_ptr _iface)
+00009 {
+00010         void * iface = (void *)IFACE_GET(*class, _iface);
+00011 
+00012         while(NULL == iface && HAS_PARENT(*class)) {
+00013                 *class = (*class)->parent;
+00014                 iface = (void *)IFACE_GET(*class, _iface);
+00015         }
+00016 
+00017         return iface;
+00018 }
+00019 
+00020 class_ptr
+00021 class_getClass(void * object)
+00022 {
+00023         return *(class_ptr *)(object - sizeof(void*));
+00024 }
+00025 
+00026 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/class_8h.html b/docs/html/class_8h.html new file mode 100644 index 0000000..3d8fb9b --- /dev/null +++ b/docs/html/class_8h.html @@ -0,0 +1,625 @@ + + + + +server: include/class.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/class.h File Reference

+
+
+
#include <stdarg.h>
+#include <sys/types.h>
+#include <string.h>
+#include <assert.h>
+#include "interface.h"
+
+Include dependency graph for class.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  class

+Defines

#define _ISOC99_SOURCE
#define CLASS_MAGIC   0xFEFE
#define CLASS(name)
#define EXTENDS(parent)   const char _[sizeof(struct c_##parent)]
#define _NULL   NULL
#define CREATE_CLASS(name, _parent,...)
#define _CALL(object, _iface, method,...)
#define CALL(object, _iface, method,...)
#define RETCALL(object, _iface, method, ret,...)
#define IFACE_GET(class, iface)   (interfaceGet(&((class)->impl),(iface)))
#define IFACE_EXISTS(class, iface)   (NULL != IFACE_GET((class),(iface)))
#define HAS_PARENT(class)   (NULL != ((class)->parent))

+Typedefs

typedef void(* fptr_classInit )(void)
typedef struct classclass_ptr

+Functions

void * class_getInterface (class_ptr *, iface_ptr)
class_ptr class_getClass (void *)
+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define _CALL( object,
 _iface,
 method,
 ... 
)
+
+
+Value:
class_ptr           class = class_getClass((object));                     \
+        struct i_##_iface * iface;                                                \
+        if (class->init)        class->init();                                        \
+        iface = (struct i_##_iface *)class_getInterface(&class, &i_##_iface);     \
+        while ((NULL == iface || NULL == iface->method) && HAS_PARENT(class)) {   \
+                class = class->parent;                                                \
+                if (class->init)        class->init();                                    \
+                iface = (struct i_##_iface *)class_getInterface(&class, &i_##_iface); \
+        };                                                                        \
+        assert(NULL != iface->method);
+

: actually i use gcc feature ## for variadoc... think about a way to make this standard.

+ +

Definition at line 43 of file class.h.

+ +
+
+ +
+
+ + + + +
#define _ISOC99_SOURCE
+
+
+ +

Definition at line 11 of file class.h.

+ +
+
+ +
+
+ + + + +
#define _NULL   NULL
+
+
+ +

Definition at line 24 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define CALL( object,
 _iface,
 method,
 ... 
)
+
+
+Value:
do {                                             \
+                _CALL(object, _iface, method, ##__VA_ARGS__); \
+                iface->method(object, ##__VA_ARGS__);        \
+        } while(0)
+
+

Definition at line 55 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define CLASS( name)
+
+
+Value:
struct c_##name;                   \
+        typedef struct c_##name * name;    \
+        extern struct class * const _##name; \
+        struct c_##name
+
+

Definition at line 15 of file class.h.

+ +
+
+ +
+
+ + + + +
#define CLASS_MAGIC   0xFEFE
+
+
+ +

Definition at line 13 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define CREATE_CLASS( name,
 _parent,
 ... 
)
+
+
+Value:
static struct class c_##name;      \
+        static void _classInit_(void) {    \
+                c_##name.parent = _##_parent;  \
+                c_##name.init   = NULL;        \
+        }                                  \
+        static struct class c_##name = {   \
+                CLASS_MAGIC,                   \
+                NULL,                          \
+                sizeof(struct c_##name),       \
+                _classInit_,                   \
+                INIT_IMPL(__VA_ARGS__)         \
+        }; struct class * const _##name = &c_##name
+
+

Definition at line 25 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define EXTENDS( parent)   const char _[sizeof(struct c_##parent)]
+
+
+ +

Definition at line 21 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define HAS_PARENT( class)   (NULL != ((class)->parent))
+
+
+ +

Definition at line 71 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IFACE_EXISTS( class,
 iface 
)   (NULL != IFACE_GET((class),(iface)))
+
+
+ +

Definition at line 69 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define IFACE_GET( class,
 iface 
)   (interfaceGet(&((class)->impl),(iface)))
+
+
+ +

Definition at line 68 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define RETCALL( object,
 _iface,
 method,
 ret,
 ... 
)
+
+
+Value:
do {                                             \
+                _CALL(object, _iface, method, ##__VA_ARGS__); \
+                ret = iface->method(object, ##__VA_ARGS__);  \
+        } while(0)
+
+

Definition at line 61 of file class.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct class* class_ptr
+
+
+ +

Definition at line 76 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_classInit)(void)
+
+
+ +

Definition at line 73 of file class.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
class_ptr class_getClass (void * )
+
+
+ +

Definition at line 21 of file class.c.

+
{
+        return *(class_ptr *)(object - sizeof(void*));
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* class_getInterface (class_ptr,
iface_ptr  
)
+
+
+ +

Definition at line 8 of file class.c.

+
{
+        void * iface = (void *)IFACE_GET(*class, _iface);
+
+        while(NULL == iface && HAS_PARENT(*class)) {
+                *class = (*class)->parent;
+                iface = (void *)IFACE_GET(*class, _iface);
+        }
+
+        return iface;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/class_8h__dep__incl.map b/docs/html/class_8h__dep__incl.map new file mode 100644 index 0000000..fe1fa30 --- /dev/null +++ b/docs/html/class_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/class_8h__dep__incl.md5 b/docs/html/class_8h__dep__incl.md5 new file mode 100644 index 0000000..bae8614 --- /dev/null +++ b/docs/html/class_8h__dep__incl.md5 @@ -0,0 +1 @@ +67b05a97c7d2bb2f2ee8cbd85edaea47 \ No newline at end of file diff --git a/docs/html/class_8h__dep__incl.png b/docs/html/class_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..08c702657957ed789d875377656479d1db1e5df9 GIT binary patch literal 2280 zcmVP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|HxAzzyJUM0d!JMQvg8b*k%9#2wh1;K~#90?VX91s~`+Oaiy(dkN^L(kIlYn1=$G> zIcLTZl8{>#mud!~DpjgfsZu44tVtyU-#ejHzRFkmD&H;nmIJD0e|af%_B0DDK4Q!_ zKMUkLiiYo@(t*rJV_oNIV!cSF>9x>(7CuKH)B2cKUO~k0Q`LB9CNG%qypH+iv&_dH7#UMY>%d10S`+;E!5d*1h9cD^ScRjdP+ z`HPSD2n~B$Sa-c&n~G4NWh?D%vT!HlLnOUH;#+t`BB(DuUht&#T-fxJaf|W!c+uVG zYkg24x!L9)NWO{1xsA`~q5qbJ4o|5f;6*n*-+VO64QM_-xn7)ae!r;3JU#jRd$IXP zf4!xO=;P;`(4YPMn<4YD<&v+TH1O%Ut)J|V7hN^Q(SfVT#b=sd6a5TU)~Rx{c>=_j zKq_D5t9+HO@>RadmxfO-O>4ZS*7XGJa7F7LWyIGQl(+cqLFk z9##lGn1Ic0bEifH&s@6j~I(Z>JYe6GxHAd^?{xp7;LV zi2!(WzP-oF7hL`nUvR*Kzdyu>53HJfOpcXGS@BPaE*@{u@QwQ_4d2iO;|mOU^ri_@ z!`J>)Dg_Q74S5~#$H_)PC--pMZ z4+(h1*YN?>4|H$%;$sCgOw`jryA~15OIg@Mzf~S|u!NE>f$(7-jELupj~CFfC(n=D zPvvGrw{o-TY!g(vOvCr<>XeU7oNgPR-J$<59tL#Le;9-2<_wP5;i<{>nE@5w~f&GbTAw~SLs;vLn}Ae z`la!Wbh>u^AUD_g@%T<0g*d;a1CxzYxw(|$_$=km@dX2{d?}>zxk}|rA!+$6;cLzh1vV)fOxnohgj=b* zuXMgfWowmV!?2a~PSiFb4}aPCE=)>4ykA+|oe#o=n}?TcgQEEi^h@S5Q7@R!NV{A< zLuEjxpH^N>bqnP)RxOh+h9)2{F*+KMml*3%bRXt!A{<5%_%L=8;VdA94^uZ0PU4dI zFmw~)96XH=GdB?~p%VEp^Ar9OKZyrZM`7>Kr1N0t$ma%|hos{3xIgM8iTK=aZ+l7_ zKId;I9PL7SFmUADh<9|s@N}Ns8v(?pcIDAV34C5n_{JBX&#wjOe7@fTqKA>G-@{x=IYbb7N3^UVxP^okZYMm{z_R zQu(aqn$Iff$Eh<#CW*_u5&tFly$#o-AE(at7P#NqfWdbZZPE_|i_abqKC7f3sOx!} z0r}!OH<0-=u+*XovW=^}AO3twJJ+NiG-y105)TLiraHFxf7*|&jmx|r$@naievCX~ zkvKvautK)~N&B(2ahdlc8J}^|57ZHsl|?50kkR9{Z3#N2{V>U^;K`>pb4~hzI>ZN^ z>_2WGK9TO2_QQrR_%}1INk2~JACXh_JMD*Q-jB3=21!3yiX_%+pY?N<>nEbSBJBri z&GUZv@o9`;ou5@cTbs%kLo}@he(vH1d|Hdj7egwax#$gU&lgY{^PBX}@%pNJNs!n0 zVDtGS+S#YXL&_K2t$ak(_LUHC(ps6O#Y37L6Xq_WDTk1>9he+1#0&(@7hnxFH_m`} zdp?n2BFXs7f+tU6Jh~7#-_~q&z)X1l?H9u5JVwpTvg4ufccZ;shZd(UEQl}o{XP%3 zkt7Zv96pCJdTjs*57|dk8ei~xD!}l9-*f=S7xtpGZt;Vyij@&y6} zi)TIwOXUl3?E@Mwz{LS@KHsYY=y*nxP^|$U4|$z`6~X6zf>H*aGhiuruBRyF@LjAj z=amKFA%}xpS$OtGxzhM70gJ=aO~T)b0`ZVK>bvk69|;P@Gd>g)%V)M$mWy{DdvmQ) zj$8wl&3F1wFO)k)%J2USQtlKgni&Tg&-GzvN4txspCj-kZ7qF^m9Oj;D__|y{vAI5 z1RkgU&9gs5k*}b=6L_5Z2g7$1`ve}R{=x7$CGZd>c + + diff --git a/docs/html/class_8h__incl.md5 b/docs/html/class_8h__incl.md5 new file mode 100644 index 0000000..f2d23c5 --- /dev/null +++ b/docs/html/class_8h__incl.md5 @@ -0,0 +1 @@ +12c1cadb41292afd851074fffef5daa9 \ No newline at end of file diff --git a/docs/html/class_8h__incl.png b/docs/html/class_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..39f617af2fad93748591bc5853a2664355b7161a GIT binary patch literal 2611 zcmV-33e5G1P)8;TyPUuT=E=;uIzlBYl^2Z2%!0;L=TN;wFW za?pg*dqHgD`294rnL~MlQXEYw_12VL4^TQ%8&%$*^k-@VN=Y;y@#w4Tc#rD4?)hfN z9D)GRcl7T?#f4rDc%q58`1qszVtUrO0rxuhRVw~cg;r*IW61{^JzkBnp^LY+U zWCM1NvYyw!g^_;bqO5^ZuojfwqOP*E6H4O5gIyQm(~_#b9P$31?C|lVe+-Ly8RjKW ziXknfj#qma@g9r5^nSAePc@MUWtVw;#Q3IOKq;oQl*FX-6qH_{Cu{QR9%5d4@_C8< z>!X^;{`UCv?4S9(^a7=b(o*6}I)bWD6ZzkwM3!^0#1pvD6BOR0}pUYpk+}V zfS7QAQ)I0Q>cqoH1Ds;YVllUM+KdUDqG?@8XBrzUurQAyT@fSq8Gs6v{o;D-!p=2- z3X-;V8$D*z)~+vr@{zu5TXW2|ISYpXPvp#PIP#fB+&hBE`&O?Mq?yc=-1iN=zI{)lXbG` zD0yPK(ZCn~JE%|PyvuzHP7X;XrR3e6ZqT7z@=Jg-%5CD-D|1Tp_0xOs^1M&ndsR+u zi6!ZEv2GMMUy+k*Qb$k*D?YC@ z?0=;Y1Zi*-RO@^}jdA;B;P4xTKuRLOFbgDCP(#q^=Zj!UQB06Us#!2oNe9msmaal8 z9EH*>-5k1>Ogeb7u=f=_T*bjO8A8sFDSWDM_U7*^!a8woEJ{r26=6bmcIWSF0x3>i zhtExKAME5I7vA*W~I{;J2-$Lb4ski68y zwxkcpJ{X@E?X7=^}YD(IIHYK;-HZ8kQwDLB}-Y-7a zX(){Wi3nJd%rg&&cm*@FEHe`h#+R}gvhAqq1@_iwBc6&=)pBN4dFH44YPf3frKLpc zs-_%x+0+$_oY0=1U>*tvsTHS0yMojU@M$QG0r3b#_A(&9U}l!3A>lyzA!T1xMJarJ z`;xWwIi;a+WMx%dDjRWHT{Za9QL1QJ$!^I%SnLkM4qM@@8c&Iv+g0~WLg^cj7}0t5 z(z9PM)6+6D=|K4*4L?~3Utdbr*5{PuZK9S7tE#3vg{mH|8hq(Tyj}qpZCgI#6}_@f zWjgZa>KIDjfMkAj@az}Ne8dx(2?xrL+7610{@kq3DODq-rB&rw8J#{KOE(7)!=J;UQ**eoAF3V z#f0#k3hDzXP3EOp_CqkWHa81OLuRvispoS<|E;H+brYq9)xoovm-^wV!Izd2Urx28 zpmL4JMm)9vsryF8EKW7!fD?_<*0YB(parENnBma9FR9F=gW;uT%PvKzpv2L-j*>9* zwW{hUJo6Oz8c$v|_;P+i)biWw!gTrACq#b1T=EIgTqXOkwPHTd>R3vC!Q6ln@1c$M z5si}-jeMTAdIfU_O54ISaZqv;C>a!DWsV7ybT&aLj`gcknqvYbolQ`RV;z(nbwx@k zf0k>hDW-J6#IS6(uKE3N_>Yl;sv29T{67^!b@x{7nR3Yg&ZC{u`73b#2oKQ7 zi-3+Kb>=dF(WvuQ;=GalKqoB*I?`NcEC(2^bh?Uwkxu6-3K$u5qQaagl=JB1 zC)Fv+gO0SP-&g4O5#*pB7YU5)^ve%3I+DG9Rw^)Z(QiJ|=t!) z1xh&xlyVR#N~+yr7T-;RHv~#a zHQOw@p-tV34PaY&AO<}4MxCr^D>sNO8?pVPYQwM94K0m^p+K!Ri{^VD*Uhk_GpTFd zm(G zeh+xBA_Y|^E4GvqYrI~*s2dm_P)aIIF-zUk2658no70A2$XDxPR!zHZCQpLWkF+Xg z+m!28>ZIK>J%eG$Uw9^-gFq<|vr5prGIS7<;Q0T9Z&H8m_5ClOG1VPY6^*=}{ VE+!eIoR0ti002ovPDHLkV1mQ}`Dg$D literal 0 HcmV?d00001 diff --git a/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.map b/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.map new file mode 100644 index 0000000..3b39aa3 --- /dev/null +++ b/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 b/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 new file mode 100644 index 0000000..1ea4dc6 --- /dev/null +++ b/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 @@ -0,0 +1 @@ +26bc749db3f2482bfaa222c2df1cdda1 \ No newline at end of file diff --git a/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.png b/docs/html/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f38c39705cbbc90e4fba74339af38055bc9d4d04 GIT binary patch literal 779 zcmV+m1N8ifP)%c00960 z|CUL=SO5S30d!JMQvg8b*k%9#0)R4Ldvu4ejH7kujZQruM^RL)GYxN9j1@(_@3>t%U-xxFoU1N~$ z8-r^G{s}5RL|&JNq^~nDHy>fh@-*Iy_$v&2Oqbw1v8!g#_wQt2EDdJn;o}S>It00; zwUR;Kzn1}#T<7T}1{7oPl89S55?tiC94^~}ws)-2wBbkF7M=1qNwcVwo*DFNb&H*? zB_kOQ6WbZivKH(ubj-R%gRM`nl)d$dRB z(G*#lMTPXjpg*jN!EBA0W?{f&MmES0uFKBg8)}H4$r#Bx2hJqQ2N+1j{F1Ul9T{aM zpE4s~25pj8l%VyBfl9NelY%>Z2WIHfAVm2w|>`n~iezZ`dH*jx7Fg?IP zQ_+TA13tNcw%>Ml3Q7e}mPUZ?1qG6&SyV_>-`Cn{ttMxPd?v!Dfp|ia+38*wWFDl6 zkQ&CMuj@ZqZ}oxXt9!wvWSvy}a6j~c_otZ{;z^oCh4l44kbHG7XnAoRFHUD7*`g23 z(Fexdcu5gc{*=RpWLx;Ptm>HT@oJ;xx;1Cogc266}%^Po5zk9nXBNag`O zzyJ_f&jpP9B}6#_q&Kp=1g$Qnx<}N1O%UWA$!#ZT7M0QqgM&jA13+Ls7ck~W6nw;i zAWfi7-;su{I2V)wy2H}V$JV|TI_d0XtyKNQpnLKi={@!e143QhZ)g6~3~CqqMth3E z{(m^^h4d2iKQefeH3p4AW6&5h24BwL(^kFMFIh*kX3hR_`vupX(Qmg_6iomC002ov JPDHLkV1mf@U-AF| literal 0 HcmV?d00001 diff --git a/docs/html/class_8h_source.html b/docs/html/class_8h_source.html new file mode 100644 index 0000000..f157aa0 --- /dev/null +++ b/docs/html/class_8h_source.html @@ -0,0 +1,196 @@ + + + + +server: include/class.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/class.h

+
+
+Go to the documentation of this file.
00001 #ifndef __CLASS_H__
+00002 #define __CLASS_H__
+00003 
+00004 #include <stdarg.h>
+00005 #include <sys/types.h>
+00006 #include <string.h>
+00007 #include <assert.h>
+00008 
+00009 #include "interface.h"
+00010 
+00011 #define _ISOC99_SOURCE
+00012 
+00013 #define CLASS_MAGIC    0xFEFE
+00014 
+00015 #define CLASS(name)                    \
+00016         struct c_##name;                   \
+00017         typedef struct c_##name * name;    \
+00018         extern struct class * const _##name; \
+00019         struct c_##name
+00020 
+00021 #define EXTENDS(parent) \
+00022         const char _[sizeof(struct c_##parent)]
+00023 
+00024 #define _NULL   NULL
+00025 #define CREATE_CLASS(name,_parent,...) \
+00026         static struct class c_##name;      \
+00027         static void _classInit_(void) {    \
+00028                 c_##name.parent = _##_parent;  \
+00029                 c_##name.init   = NULL;        \
+00030         }                                  \
+00031         static struct class c_##name = {   \
+00032                 CLASS_MAGIC,                   \
+00033                 NULL,                          \
+00034                 sizeof(struct c_##name),       \
+00035                 _classInit_,                   \
+00036                 INIT_IMPL(__VA_ARGS__)         \
+00037         }; struct class * const _##name = &c_##name
+00038 
+00043 #define _CALL(object,_iface,method,...)                                       \
+00044         class_ptr           class = class_getClass((object));                     \
+00045         struct i_##_iface * iface;                                                \
+00046         if (class->init)        class->init();                                        \
+00047         iface = (struct i_##_iface *)class_getInterface(&class, &i_##_iface);     \
+00048         while ((NULL == iface || NULL == iface->method) && HAS_PARENT(class)) {   \
+00049                 class = class->parent;                                                \
+00050                 if (class->init)        class->init();                                    \
+00051                 iface = (struct i_##_iface *)class_getInterface(&class, &i_##_iface); \
+00052         };                                                                        \
+00053         assert(NULL != iface->method);
+00054 
+00055 #define CALL(object,_iface,method,...)               \
+00056         do {                                             \
+00057                 _CALL(object, _iface, method, ##__VA_ARGS__); \
+00058                 iface->method(object, ##__VA_ARGS__);        \
+00059         } while(0)
+00060 
+00061 #define RETCALL(object,_iface,method,ret,...)        \
+00062         do {                                             \
+00063                 _CALL(object, _iface, method, ##__VA_ARGS__); \
+00064                 ret = iface->method(object, ##__VA_ARGS__);  \
+00065         } while(0)
+00066 
+00067 
+00068 #define IFACE_GET(class,iface)          (interfaceGet(&((class)->impl),(iface)))
+00069 #define IFACE_EXISTS(class,iface)       (NULL != IFACE_GET((class),(iface)))
+00070 
+00071 #define HAS_PARENT(class)                       (NULL != ((class)->parent))
+00072 
+00073 typedef void (* fptr_classInit)(void);
+00074 
+00075 struct class;
+00076 typedef struct class * class_ptr;
+00077 struct class {
+00078         const int         magic;
+00079         class_ptr         parent;
+00080         size_t            object_size;
+00081         fptr_classInit    init;
+00082         struct iface_impl impl;
+00083 };
+00084 
+00085 extern void *    class_getInterface(class_ptr *, iface_ptr);
+00086 extern class_ptr class_getClass(void *);
+00087 
+00088 #endif // __CLASS_H__
+00089 
+00090 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..8f5b57b --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,118 @@ + + + + +server: Data Structure Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

Data Structure Index

+
+
+
C | H | I | L | S
+ +
  C  
+
HttpRequestParser   i_Logger   
  L  
+
  S  
+
class   HttpRequestQueue   i_StreamReader   Logger   Server   
  H  
+
  I  
+
iface_impl   LoggerStderr   Sock   
HttpRequest   i_Class   interface   LoggerSyslog   
C | H | I | L | S
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/close__conn_8c.html b/docs/html/close__conn_8c.html new file mode 100644 index 0000000..501ac0b --- /dev/null +++ b/docs/html/close__conn_8c.html @@ -0,0 +1,176 @@ + + + + +server: src/server/close_conn.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/close_conn.c File Reference

+
+
+
#include <string.h>
+#include "server.h"
+#include "interface/class.h"
+
+Include dependency graph for close_conn.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

void serverCloseConn (Server this, unsigned int i)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server this,
unsigned int i 
)
+
+
+ +

Definition at line 7 of file close_conn.c.

+
{
+        int fd = (this->fds)[i].fd;
+
+        delete(&((this->conns)[fd].sock));
+        delete(&((this->conns)[fd].reader));
+        (this->fds)[i].events = 0;
+        this->ndel++;
+//      CLEAR_CONN(this, i);
+//      this->nfds--;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/close__conn_8c__incl.map b/docs/html/close__conn_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/close__conn_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/close__conn_8c__incl.md5 b/docs/html/close__conn_8c__incl.md5 new file mode 100644 index 0000000..89fb410 --- /dev/null +++ b/docs/html/close__conn_8c__incl.md5 @@ -0,0 +1 @@ +680a421e377c1cfade97ad3db077eb73 \ No newline at end of file diff --git a/docs/html/close__conn_8c__incl.png b/docs/html/close__conn_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5187692366a5d9a04d3f3484f8779657e65fdfb5 GIT binary patch literal 1646 zcmV-!29f!RP)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCZ$6QUWeg z0xnWV1lKj5$=Qxw`a5w%aQ)pgIonadp>Dp(*^Z|KcOTTycj`XeAMG$S9WFpL>PBs8 zAJ}+nA)EWy1RZ&Zf^`cG(~(xjGZ|HnSH3*kj|EQkU9UQI18!ZX`Sd*-bv_MPu(2Ni z%GA`GApowqb)Dug8TsUfpSa6IH87>QJlhWiu2XFX@A?fYrRyJ9K`kaU==b{#8==~o zc4E>Uc?f_5OFv9Unn}1Db)muqaCCXL9}3*#-stMVO^TAhoePcHf}$NvQ-cm8)6EXi zAJL-UCL=9{j(a^UV*uBg7ByX_2LY$6K>ZIEy~{oBEv!^Bc33xEN8s*5f8$aj6Lh2@ zql%l3v=v9)Y{k8T{Jb(nFDV6PZM;cA&xzcx|un+o899k z;CkDBEO5O(25G74`1O8$vqr$APdoFl(eTBXZg$A{RGo~p;%??toq$uFX+IXYol3w( z>fGSWUxUXC{Wc?~q~ana;36g9A|>D=CEy|@;3BpD-`Ou8KF`_w^=(Gm=|&(U>D7Mfa3@Rfcsxqud}C@JP|2Vm31&x3HHjk2*cNSpc8NoSfW>BjC(M zx0JgFmeZ13z5k!I=ss-!34HvfKIH6)Hk#Gg+G?9n(b%Mg(tEy_1{1jlf~-9e}G(63hVPedeKG3 zpCao+lZ$>H`{v|3P;}^Naz5;G{r+R@G0ClYicJ>70nx>NQMXDI#!=8+UarC86N5Vn zI+O5<{Vg%KRl)q7DCIS2Zvf85vtNQKlHLFuBTMczol@ky1ve_X{enxf%(elyo!HrQOw4t$nJps^ETV3t?wH@HIO1r;yu4iHd{^@?|Zy|F0}9J$V_0`4!l*N)oUnCy1+=H3q+je^ie zQy@6_$SD-1Y0X+=!EC9ENk6yKzvnu)R9n7JG^N5(`h|meH(*mBIC9NDKu4}LHS~qD zTg{t$KX8QwH<|*S*4JxmQn0PC#gT=UDt6%*>3t^GIdD){|Gk5oR9qxDa8SSvFSr!y zs)QYyOzFUlrl6(Di$-7S+_dVI$`)kJg+(#adl~Up0INCW{*kW2P-U{yr znb6{N9|~?X1- + + + diff --git a/docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 b/docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 new file mode 100644 index 0000000..7ae5cd5 --- /dev/null +++ b/docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 @@ -0,0 +1 @@ +ec0f0d34bf543ab4e0985794d4eb997c \ No newline at end of file diff --git a/docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png b/docs/html/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..054f982ff143709fa5dd1c2097985933aeb256d8 GIT binary patch literal 935 zcmV;Y16cftP)0000yP)t-s{{R0O z8E`*8KYxFJ-rwJzpPwHeAHKi8BO@a(FE2+&M_*rGr>CcPcXt;T7mtsRzrVlJ)6)O| z0RR90p7cV}00001bW%=J06^y0W&i*K8A(JzRA_23^m+n4lBrk6r1eO4-l$adb#CzTC67tT9kzOV=ZUJ_G) zmq~!v&9#0^0bV8nUN_hJF$H*;z8<)@A&%4H&pmm@HvmtY;C84R^UrI4^LmSg&A6?@Hc%1wc7iYa65$`xp z0ckF5LJOEZO-A5$^d1J*yz=8Z$$Nh}$dqLp-4tSHRT@r)C8s;D45=@|-xD(`* zWXij1cfj=>jFLsH;ovj0tz+Q#*Ej(V1sOdSs`o^54%5iB>pcOdN1_c|g|i>e+GcDO zehR#x!WEPe+_+fInkpFjN#81}aIJU1xrYxYz>6w;15S0F1)O@Z#a3*2pB>WEkW6IR zZws$`I6H3J!b=Z-09@_T&CE6RaEA@s@%Go?Q|0vsOFs)Jo<4)6(f z8#C5sunPmXG@eYn5lpW&^RnBeupc{KW^B8Z$G|W7=H&`|1K5TrXN+6lHyn*8(+)Tu zJDB_k_=}6!RXFU8dS|kL|GnP+;`4;+zWDs=@;$&a7hX+Y|67UxFS>>R7vObstshf> zmq~!v&9#0^0bV8nUN_hJF$;lzR=ErRf;ANWtD8t95{dpt{Qzr^2Af2eQ#=3w002ov JPDHLkV1kRVv1|YU literal 0 HcmV?d00001 diff --git a/docs/html/close__conn_8c_source.html b/docs/html/close__conn_8c_source.html new file mode 100644 index 0000000..bece3ca --- /dev/null +++ b/docs/html/close__conn_8c_source.html @@ -0,0 +1,129 @@ + + + + +server: src/server/close_conn.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/close_conn.c

+
+
+Go to the documentation of this file.
00001 #include <string.h>
+00002 
+00003 #include "server.h"
+00004 #include "interface/class.h"
+00005 
+00006 void
+00007 serverCloseConn(Server this, unsigned int i)
+00008 {
+00009         int fd = (this->fds)[i].fd;
+00010 
+00011         delete(&((this->conns)[fd].sock));
+00012         delete(&((this->conns)[fd].reader));
+00013         (this->fds)[i].events = 0;
+00014         this->ndel++;
+00015 //      CLEAR_CONN(this, i);
+00016 //      this->nfds--;
+00017 }
+00018 
+00019 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d4bd9fef2272c74b94762c9e2496177017775e GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VuAVNAAr*{o?>h22DDp4|bgj*t z)u^AqcA-V@guRYpb17F<&b?_~8HV>~XqWvB;^$!VVSTy0!eQcJp_yD7TIQA>7dijs YXf6~H5cs^Q6KEiVr>mdKI;Vst0NsWqGynhq literal 0 HcmV?d00001 diff --git a/docs/html/connect_8c.html b/docs/html/connect_8c.html new file mode 100644 index 0000000..a41aa53 --- /dev/null +++ b/docs/html/connect_8c.html @@ -0,0 +1,180 @@ + + + + +server: src/socket/connect.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/connect.c File Reference

+
+
+
#include <stdlib.h>
+#include <errno.h>
+#include "socket.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+
+Include dependency graph for connect.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

void socketConnect (Sock this, const char *addr)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketConnect (Sock this,
const char * addr 
)
+
+
+ +

Definition at line 10 of file connect.c.

+
{
+        inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+    (this->addr).sin_family = AF_INET;           /* Internet address family */
+    (this->addr).sin_port   = htons(this->port); /* Local port */
+
+        if (-1 == connect(this->handle, (struct sockaddr*) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error connection socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/connect_8c__incl.map b/docs/html/connect_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/connect_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/connect_8c__incl.md5 b/docs/html/connect_8c__incl.md5 new file mode 100644 index 0000000..52057cb --- /dev/null +++ b/docs/html/connect_8c__incl.md5 @@ -0,0 +1 @@ +369f6f148cdb8193e9425b0be26688fa \ No newline at end of file diff --git a/docs/html/connect_8c__incl.png b/docs/html/connect_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..24b7067b9bd27a84d49d5d6b7540e34ba2029626 GIT binary patch literal 2328 zcmZ8jdpHyP7oSSGB#pF8QH`QR_PXTOirFQXOO9UYJga$q?C0HAgTcV#@gNW=DJhB1=XZ5=tz)dMt;KKl5v@y7VNMRtfD>cA0RVu^ zZ8ZF(OE`Vn^Ikgh*mgfpDU9@<)2nOeP0$BFt4a{`A~QVPicvYCH~+fgBJ+2a|D0RC zZ`w$w4{mag=Dm{+6h_`c06@9G*V2KTLZrY_9>3M^Mo^3L2PQW#cGgl9y5cgJuzJb( zoe`9K-R|WwKbNXsQ;iU(gE`mi#3=Eb?a?HvymwMIL*D?o>sVjU(HCsOyz}6JLy;HD=3PMx)d7XT%eKaN zBT&bBk**A5EQU82Zg>Tt0Q62kZppXH{J$DA6O~itv2*7u; zOD0`CLa}-(JCeKtxn<{&z>`dgJ%0%}byAT^RdIb$ZJ#IhYVZ0gycCkEc^PkRHm88h zv_3E%J%2JIzlskDww+dmno85OwmUY?(tNuYE$AwArGYXkINWph`IT3Ja zU>CM?4^(H%jBp9Gk9DrerlG`nvyGg_`J$~VBs&~L81Z8J$61t;c^fJ>B~k|M@7O(J zn_66%jNZA)e=eEf(?lGHC!@hNO1rYA>xh?5%}A?+Dcx(I5ymcBo9kAN>+1R`#Y*z6 zaITVW6{svcq}oS4i-gxXVUQnd#|5&IpRmP{rPSg3%2o%}$tWkGa@P|tEmS%^xk=Bb zQ+c^~Pv}6pu8l}G(>?Snomwmx$Bf5Zln*ssoPsQrz=Hw=ek4Jdrp1{gafQzzceDTw zF;kZ12b>~L^2grR`tG~qpmZJD5kzeP>y*&=$La8CKNm(S`^x+&O`Tn*S7C=z1j~h@ z!qsg!vB58zStTL-r!qA2li#oXn!IXhO($&Hj;BHmcY1=!{g7f)(RnyT!fJM#!@q@( z>rd!$T9o4qosz>R{5u>!j+}W_ps$IWM&EUP-l7{2YG{6VMgkCGw7s5_3#N|ZT-VAWiJxCOhJO1F+dKG;)wZw0E(?<1N2xU_ za1Cp1g==kcisB$zcyMfiS4W`6VdL2H{=2@>+LSsQXB4D``{?CR36PlHz(;-a8f2>* zp8>}w9H>H6s#U%C#bAoms>%ac*kBW*+me?hfjI& zLsFaVWnQS5k{8BGF6<~Rr`8M)^pl2Cx&>)D+oh_`PJ7^vzbGNJv5dwi>J%?d#N{yg z#`a3=1h=jbf7C%&;$=j}M`(<_ z)9Hvwxc!F<=XP8~agK^e4SG61Lw93u%S?zXN1q9uZRaY)EDDz&;D;W49BxD*S6~Sb zgdKWm*sc60a@SJU!Cmtm4u>`mrMMAah}4wt7<6EtQle%8cY@=|h%mMJ+92k(uDoN` zS(E`@=i@SQ;W9Yw@?xpX8rN1(R!Y^%?x`zw-Z$vMUTN_+a!M9*5mmYAR_=_X^6o}hzD)v>-o zefNsk-dH#rnMdfEq&__B?3@vEJQhK2cd?Nv-3jX~u0AzsGm3f8(gQi!;coP04~1w6 z4G^ey8k&_dCYXowiS{M~J@3;NzuxJ2E~;+`d<^6bCyqT1ZzL+@ufVk&9@`T1v&_99 zG?GlK{jBH7{-IR25mr{ie_QXoj%)Yb=y{h(F0 jEJbM!Na>$Ff-b+dQP=$md6HH>|J#JNae%X|{*3t>2NQCT literal 0 HcmV?d00001 diff --git a/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.map b/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.map new file mode 100644 index 0000000..59d72ce --- /dev/null +++ b/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 b/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 new file mode 100644 index 0000000..995511b --- /dev/null +++ b/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 @@ -0,0 +1 @@ +407886eba5bb27f4936db6d792217edc \ No newline at end of file diff --git a/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png b/docs/html/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..17319e97712d5316eac8260df8551f11e02cfb65 GIT binary patch literal 693 zcmV;m0!safP)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0xC&FK~!jg?U?Jbs~`-8Eh@K&Oy2)xPXeJ{w!4FN zj{C;?VG67`dRJ2jERG6#K+j-IFoj5~Ai_j_iI&Sh+a0|)`3PY89K@Q_-=ru0Ej_dKy3;*1dz8>= z>Qw`cn`Px^XK_@}$JwEs(|qZYApx!BeV$*B(pX;kvyE#f)8`;oc}9Es$7!wU)6SQN zKv9Cc2j+7@=*3waRrFL!gi?EI&Airui^>HBSe<$WEab<;=%?=0|Q)C)M00eEzjF z$K}l5(u*~vOU4EIgUPPW{E?4xT|!5_URHSd2Sc32Q9*x$-ubn&Nb&OS2MI53b>R5! z^cx)}j9PU{_Yz)YA2@zKJuhfk*J&fX!rwc70sR|l^h=}BH~L2Z_vmld>B)Zi44Rsn beu@48GmOrwnag?h00000NkvXXu0mjfSaDy< literal 0 HcmV?d00001 diff --git a/docs/html/connect_8c_source.html b/docs/html/connect_8c_source.html new file mode 100644 index 0000000..4ff2d26 --- /dev/null +++ b/docs/html/connect_8c_source.html @@ -0,0 +1,134 @@ + + + + +server: src/socket/connect.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/connect.c

+
+
+Go to the documentation of this file.
00001 #include <stdlib.h>     /* for atoi() and exit() */
+00002 #include <errno.h>      /* for errno */
+00003 
+00004 #include "socket.h"
+00005 #include "interface/class.h"
+00006 #include "interface/logger.h"
+00007 
+00008 
+00009 void
+00010 socketConnect(Sock this, const char * addr)
+00011 {
+00012         inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+00013     (this->addr).sin_family = AF_INET;           /* Internet address family */
+00014     (this->addr).sin_port   = htons(this->port); /* Local port */
+00015 
+00016         if (-1 == connect(this->handle, (struct sockaddr*) &(this->addr), sizeof(this->addr))) {
+00017         loggerLog(this->log, LOGGER_CRIT,
+00018                 "error connection socket: %s - service terminated",
+00019                 strerror(errno));
+00020         exit(EXIT_FAILURE);
+00021     }
+00022 }
+00023 
+00024 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/daemonize_8c.html b/docs/html/daemonize_8c.html new file mode 100644 index 0000000..7c1604f --- /dev/null +++ b/docs/html/daemonize_8c.html @@ -0,0 +1,165 @@ + + + + +server: src/daemonize.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/daemonize.c File Reference

+
+
+
#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+Include dependency graph for daemonize.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

void daemonize (void)
+

Function Documentation

+ +
+
+ + + + + + + + +
void daemonize (void )
+
+
+ +

Definition at line 6 of file daemonize.c.

+
                     {
+    pid_t pid;
+
+    if (0 > ((pid = fork()))) {
+        perror("deamoinze[fork]");
+        exit(EXIT_FAILURE);
+    } else if (0 != pid) {
+        exit(EXIT_SUCCESS);
+    }
+
+    /* make new child session leader */
+    setsid();
+
+    /* connect all standard streams to /dev/null */
+    stderr = freopen("/dev/null", "w", stderr);
+    stdin  = freopen("/dev/null", "r", stdin);
+    stdout = freopen("/dev/null", "w", stdout);
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/daemonize_8c__incl.map b/docs/html/daemonize_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/daemonize_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/daemonize_8c__incl.md5 b/docs/html/daemonize_8c__incl.md5 new file mode 100644 index 0000000..f45240d --- /dev/null +++ b/docs/html/daemonize_8c__incl.md5 @@ -0,0 +1 @@ +95c7a7499b1da3ea08617c6b311a882c \ No newline at end of file diff --git a/docs/html/daemonize_8c__incl.png b/docs/html/daemonize_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c6c41aa68b7cc288cc28d2fd8cb8237124d3bd GIT binary patch literal 1276 zcmVA#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCj0Z z0OF;smYWK0GPNS&pL~SSp6Q&TKtn@ALqkKeF>#e$4X#WK*BH`YZ%B{yNRRYuqeP$V z=g4+w4)m;drtj`U-wv+yww4}!&jn{x^t>NB&IwfuzvH51Fsg3_mwAOda1snoj0@RA z$=szTN`04`h7P&~a%s~GMwy_ZmGG3d-M|>M7=>AZn?&9mI->3fGB9-j6KN^s-8f)e zCPdDg9;)C?D_wdjIx64cjWcMl0rDkVgUmhj_Hc{Kb2|vw5Y$2S!T5No>6t85_iR{Y=l*N5wdFl1rR^tb0?agea_D)je#6Lk91G&QFKYPi`-o1|7Hm$8Q+C!441zG8K7%>ri?%@j(Is78v?O zA0ERM__1QYIEWCx5t4s#5J7%JJV%2+9sd!*bEJ*qeEK+kBbEK>_;H*@i24fpNFL)v zeL8+DZ?R%Nl|GuUcrk~B6!T2G||eJ8c`JV2{hxY^LQqW==IdOhLd z^*iWAvlOpVhYGnV3au(1tj4+$&HF-fpjXeT$fTF0n+wa{zq3u@pbI8lOuN>&*=Ghcap*PTGwdWfVSNh@wnk#zk zW#MK++lu~6$Y#$Uqqe4ZxBGt6briDdPeL5&qevmWOMepLNFPNC>0SDh5J&nbQrXj| m`D4?e;(@b=hK7cgq5T7qTNZl#*X$|)0000 + + + +server: src/daemonize.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/daemonize.c

+
+
+Go to the documentation of this file.
00001 #include <stdio.h>      /* for printf() and fprintf() */
+00002 #include <unistd.h>     /* for getopt */
+00003 #include <stdlib.h>
+00004 
+00005 
+00006 void daemonize(void) {
+00007     pid_t pid;
+00008 
+00009     if (0 > ((pid = fork()))) {
+00010         perror("deamoinze[fork]");
+00011         exit(EXIT_FAILURE);
+00012     } else if (0 != pid) {
+00013         exit(EXIT_SUCCESS);
+00014     }
+00015 
+00016     /* make new child session leader */
+00017     setsid();
+00018 
+00019     /* connect all standard streams to /dev/null */
+00020     stderr = freopen("/dev/null", "w", stderr);
+00021     stdin  = freopen("/dev/null", "r", stdin);
+00022     stdout = freopen("/dev/null", "w", stdout);
+00023 }
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..101c7a5 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,800 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0D000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectbrief +{ + font: 120% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + diff --git a/docs/html/doxygen.png b/docs/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..635ed52fce7057ac24df92ec7664088a881fa5d0 GIT binary patch literal 3942 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 A+yDRo literal 0 HcmV?d00001 diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..8769578 --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,147 @@ + + + + +server: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

File List

+
+
+
Here is a list of all files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
include/class.h [code]
include/interface.h [code]
include/logger.h [code]
include/server.h [code]
include/signalHandling.h [code]
include/socket.h [code]
include/http/request.h [code]
include/http/request_parser.h [code]
include/http/request_queue.h [code]
include/interface/class.h [code]
include/interface/logger.h [code]
include/interface/stream_reader.h [code]
src/class.c [code]
src/daemonize.c [code]
src/interface.c [code]
src/logger.c [code]
src/server.c [code]
src/signalHandling.c [code]
src/socket.c [code]
src/testserver.c [code]
src/http/request.c [code]
src/http/request_parser.c [code]
src/http/request_queue.c [code]
src/interface/class.c [code]
src/interface/logger.c [code]
src/interface/stream_reader.c [code]
src/logger/stderr.c [code]
src/logger/syslog.c [code]
src/server/close_conn.c [code]
src/server/handle_accept.c [code]
src/server/poll.c [code]
src/server/read.c [code]
src/server/run.c [code]
src/socket/accept.c [code]
src/socket/connect.c [code]
src/socket/listen.c [code]
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/ftv2blank.png b/docs/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%Qj(r7jv*C{Z|@!iau}EweqKKB en4GH+gF74RGzP}kvk&b8iF>;GxvX)7Tz#%>LmF6&|330OTN|a z{{=wx+WhU0y6zlAwAzONbPgh(@3v{|w(wmG$5y0Vi+t!($avy)0Ha#1p4gmU`n#I# zOX4L>+=Pi^D-w<(VJqs-_euK>g^b7iVhvNtYC7fIJCj6)A&|1Wgb-M!ftN7xU5k9^ z@#NVq`OxLViy`w%H6H)99eYw@JunRU3L>RIDT(VSeAi@ky#YWzbh$j1<pqv?W@8uFpX4?q6OPP0QkbO~IGXIo9O=aZ-NV0o=k&0TPjQc&C8 z!;pex!eqPA!cUs?hc4OkF6op_%C)F%@1dk*c;MU#FXAUKBtpQW-|J|tx%P2^UlulK zwGZh_IhaZ^JaCSkW}BlA_S*+%^WdfSH>XQXjD|RtVy0Z;_Vr<=C-PkTs6a925qLJ4 zz9gMabov~;1OPmE_=JV!O@@jAe?HwI;V4$t8cdGo2z;B1r8H5bX?MDrIa89Q5Zss= z3MpTJTEh7^?geXfpYnXQa)=k^DD@#zqw@ANTS8R5IHFCnGC zFye2Ec=U1D9z0xQab=64V!-Np9 zMH(puT5FV&6f)kci?5jV5ds3wqW^;1om2`AV;-)a5=D__^7FeqUH%!%?ly_5cIySX scdzjM-MP~PD&>->{B-~SC-dL>2dY=Zuwh)(*Z=?k07*qoM6N<$f<5VZJOBUy literal 0 HcmV?d00001 diff --git a/docs/html/ftv2folderclosed.png b/docs/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..79aeaf70ea92d062a16854ad40e52e89cca48045 GIT binary patch literal 598 zcmV-c0;&CpP)@n_AxdjH^X_%=W+pR9H4$uA4h+M)Z#d_kbMCy^l8E3iFLkKsM?rAxpyKm4 zpJZ)wCsn&Nox^H-lKu(7+U5>wm2A8w0^WW2g4OoqUn>|0`SFu=`MCWZGa&&HAOdV` zeYKtvfkmJwErvx<&bzpCtDf3$I-O4H#iuW}I=63DQ7*VBG#m1QZc43!?0j^^rop|LB$6n4f?j zSPLSMBym3p04SyK^8IH#yt|kRc|ZZP#1{3s>~(8cV(ZcbR^><;boWi%VKNIM>wn*b zrp9+Dfgc#`?)fkxAXp?70cB6ODCBKDeot&&>KAEwTgN^hb6}3t>x6&%> z>z6%!t?B87Mo}*`iu!6}T+i3Xb*om;?Rrr!&KC93tf!Zno?gCE(#vyYJy$L0%-E@C ke^gM)yZ8S8(TzBo>VXiD3(P1I6Ekr)}6_y7!i1Evm4%w}a`=R2?wr!y|)&JW~oFQEP}n%!wl+h7bZoguFAGAuz-k z9*7*IR2fz1a$M z`?}KYC8b+UU$+)Ky?o8nt){0t%SvyoRQ2X+pl`K9eY;cFou#T?yjpoZ)xmbBzVrWw c^H&Le0J=&DKt3yzzW@LL07*qoM6N<$g5G@uO#lD@ literal 0 HcmV?d00001 diff --git a/docs/html/ftv2lastnode.png b/docs/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%Qj(r7jv*C{Z|@!iau}EweqKKB en4GH+gF74RGzP}kvk&b8iF>;GxvX)7Tz#%>LmF6&|330OTN|a z{{=wx+WhU0y6zlAwAzONbPgh(@3v{|w(wmG$5y0Vi+t!($avy)0Ha#1p4gmU`n#I# zOX4L>+=Pi^D-w<(VJqs-_euK>g^b7iVhvNtYC7fIJCj6)A&|1Wgb-M!ftN7xU5k9^ z@#NVq`OxLViy`w%H6H)99eYw@JunRU3L>RIDT(VSeAi@ky#YWzbh$j1<pqv?W@8uFpX4?q6OPP0QkbO~IGXIo9O=aZ-NV0o=k&0TPjQc&C8 z!;pex!eqPA!cUs?hc4OkF6op_%C)F%@1dk*c;MU#FXAUKBtpQW-|J|tx%P2^UlulK zwGZh_IhaZ^JaCSkW}BlA_S*+%^WdfSH>XQXjD|RtVy0Z;_Vr<=C-PkTs6a925qLJ4 zz9gMabov~;1OPmE_=JV!O@@jAe?HwI;V4$t8cdGo2z;B1r8H5bX?MDrIa89Q5Zss= z3MpTJTEh7^?geXfpYnXQa)=k^DD@#zqw@ANTS8R5IHFCnGC zFye2Ec=U1D9z0xQab=64V!-Np9 zMH(puT5FV&6f)kci?5jV5ds3wqW^;1om2`AV;-)a5=D__^7FeqUH%!%?ly_5cIySX scdzjM-MP~PD&>->{B-~SC-dL>2dY=Zuwh)(*Z=?k07*qoM6N<$f<5VZJOBUy literal 0 HcmV?d00001 diff --git a/docs/html/ftv2mlastnode.png b/docs/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..ec51f17a1fdc860c16a34aa1aeb753624409385b GIT binary patch literal 221 zcmV<303!d1P)zyT<scVDZ7_{EOe0eBcqfczyT<scVDZ7_{EOe0eBcqfc;GxvXiI)3s$q zXLSp?Vw#S->OEjPiI)3s$q zXLSp?Vw#S->OEjP-{AmhX=Jf@Vh3;mo5W!fIz z|G!}-&+_@bPjpO9=CQeNG-x}^He0~wUVC_fMvB=U2Bz7OmlqlcNzZjyB-4HN7~9Lr z$D7yJnqSa(es#+qiN5>4_4EDDFZO$H+Fh^MBH+YoTokY^Q!+9#?d)>vwv3Yw*Rly-LY$(@}t-3;)0XUPrZ!IB%s(_pZ#HPZ2xc? Sd^id83xlVtpUXO@geCxW-C}_N literal 0 HcmV?d00001 diff --git a/docs/html/ftv2vertline.png b/docs/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%Qj(r7jv*C{Z|@!iau}EweqKKB en4GH+gF74RGzP}kvk&b8iF>;GxvX + + + +server: Data Fields + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- _ -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

    +
  • object_size +: class +
  • +
+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..1314604 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,119 @@ + + + + +server: Data Fields - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..52ec457 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,327 @@ + + + + +server: Data Fields - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- _ -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

    +
  • object_size +: class +
  • +
+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals.html b/docs/html/globals.html new file mode 100644 index 0000000..dbe0c78 --- /dev/null +++ b/docs/html/globals.html @@ -0,0 +1,455 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- _ -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html new file mode 100644 index 0000000..9974ac7 --- /dev/null +++ b/docs/html/globals_defs.html @@ -0,0 +1,274 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- _ -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- p -

+ + +

- r -

+ + +

- t -

+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_enum.html b/docs/html/globals_enum.html new file mode 100644 index 0000000..a3af50a --- /dev/null +++ b/docs/html/globals_enum.html @@ -0,0 +1,124 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html new file mode 100644 index 0000000..d9a0d55 --- /dev/null +++ b/docs/html/globals_eval.html @@ -0,0 +1,157 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html new file mode 100644 index 0000000..6b31e4c --- /dev/null +++ b/docs/html/globals_func.html @@ -0,0 +1,242 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + + +
+
+ +
+
+
+ +
+
+  + +

- c -

+ + +

- d -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- s -

+ + +

- t -

+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_type.html b/docs/html/globals_type.html new file mode 100644 index 0000000..3c60038 --- /dev/null +++ b/docs/html/globals_type.html @@ -0,0 +1,151 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/globals_vars.html b/docs/html/globals_vars.html new file mode 100644 index 0000000..9733d9c --- /dev/null +++ b/docs/html/globals_vars.html @@ -0,0 +1,126 @@ + + + + +server: Globals + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..3a60566 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,167 @@ + + + + +server: Graph Legend + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ +
+
+ +
+
+
+ +
+
+
+

Graph Legend

+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

+
/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented,
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+

This will result in the following graph:

+
+graph_legend.png +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..f955910 --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +9db1b0ad00397ef229eb2a8ab06ab3c2 \ No newline at end of file diff --git a/docs/html/graph_legend.png b/docs/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..8e50498df5a863e82ce9a84b23439f9caf16c005 GIT binary patch literal 3907 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 + + + +server: src/server/handle_accept.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/handle_accept.c File Reference

+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/handle__accept_8c__dep__incl.map b/docs/html/handle__accept_8c__dep__incl.map new file mode 100644 index 0000000..00067f3 --- /dev/null +++ b/docs/html/handle__accept_8c__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/handle__accept_8c__dep__incl.md5 b/docs/html/handle__accept_8c__dep__incl.md5 new file mode 100644 index 0000000..92e43db --- /dev/null +++ b/docs/html/handle__accept_8c__dep__incl.md5 @@ -0,0 +1 @@ +69eea7439dfde07e8705ce32eb0b68ff \ No newline at end of file diff --git a/docs/html/handle__accept_8c__dep__incl.png b/docs/html/handle__accept_8c__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c435934b61008c41d196a93b956bc3cdd5bb4e GIT binary patch literal 1085 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SggBeKbv&wx2QuYBpA+G=a|Cf|3ICS{1y}f;X zef_=r_vg)@FE1~@Z~y*DlP2lw>$|(V$H&JnU%tG&yj)ydyuZJH|Ni}#FJA^4@c;k+ zue(im16hnEL4Lsu4$p3+F)%Q%@pN$vshIP2R(H`H10Gl3NM_dC2Y&qjzqLy8hM)Na zPY3T+*1eq9oj!eRUNW=vT#C_5pZKtS%gq=*%ce5iGGfU6YtK+UoD5{$7j{s9-v9x;>7;Cs{7|%w>zSi8AdT)*U`CSk%v4xykNh zn5)ZkCiBb<kJGr8mP%00%a zhKeT}_)3=vZk(sf^X7TW>Iv*;l%_KnGX*;^$m|z+Y_Lw{>$NE#0yMM(tjZaa_ynUf z3eF|ZDil1yqW)+}p!&Ig0`qj{D8vZ=k&9(n5FKR`$=Daas!$?)Qq}D#2EI%IR{S{& z8Pg`uoAmdNxUh`S@|KI2L)M4spHGo;uvcKX8?>mC(W36IllP6PIy24d&7b=Zf8}CO ze{F76!1YY?!LbD6OLvZ(&|Gf#b(2O;U;^WWsSj@N4_DA@o@lV{$lF<;Dp{8l%R8Jq zpmRHK!DQw1gadair%W+fclD72TZ6DgyUoemCg!+v49BO-swBpA-Zp*ujAzNtl6TAp zvQwVuw&?dOe(UZ$d{n%dfu~3_EIv$X|AV;`+cw^L6z#E1;JCOa&>v-Vw{Xwa^^eNh8S7s1rCG}C2>X!*|v{6v#q~p+)KHP9>E`BH7-tC}faiPq#^wFF4 z zBtGMSX2D(Na)H_NmffyqdvS~HVi-5Gc*8r+2IE*3h4cd_&+(T0c*4VS=R+f7jQ8=X ztxfR^3HR4B_?|2gbYRw(x#tuhelBtE42zhG*%pi(zzBTHa==!hg7pA*>Mo84N|Faw zzFfB+6hyoZyB9HLgzvFGaQFX~45OL%Lh2blNo2%4P + + + +server: src/server/handle_accept.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/handle_accept.c

+
+
+Go to the documentation of this file.
00001 static
+00002 void
+00003 serverHandleAccept(Server this)
+00004 {
+00005         char remoteAddr[16] = "";
+00006         Sock acc;
+00007 
+00008         acc = socketAccept(this->sock, remoteAddr);
+00009 
+00010         if (-1 != acc->handle) {
+00011                 //* save the socket handle
+00012                 (this->conns)[acc->handle].sock   = acc; 
+00013 
+00014                 //* clone reader
+00015                 (this->conns)[acc->handle].reader = clone(this->reader);
+00016 
+00017                 (this->fds)[this->nfds].fd       = acc->handle;
+00018                 (this->fds)[this->nfds].events   = POLLIN;
+00019                 this->nfds++;
+00020         } else {
+00021                 delete(&acc);
+00022         }
+00023 
+00024         (this->fds)[0].revents |= POLLIN;
+00025 }
+00026 
+00027 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..e32beb4 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,103 @@ + + + + +server: Main Page + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ +
+
+ +
+
+
+ +
+
+
+

server Documentation

+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/installdox b/docs/html/installdox new file mode 100755 index 0000000..edf5bbf --- /dev/null +++ b/docs/html/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurrence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while () { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (xlink:href|href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while () { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/docs/html/interface_2class_8c.html b/docs/html/interface_2class_8c.html new file mode 100644 index 0000000..452eb97 --- /dev/null +++ b/docs/html/interface_2class_8c.html @@ -0,0 +1,241 @@ + + + + +server: src/interface/class.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface/class.c File Reference

+
+
+
#include <stdarg.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "class.h"
+#include "interface/class.h"
+
+Include dependency graph for class.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Functions

void * classNew (class_ptr class,...)
void classDelete (void **object)
void * classClone (void *_object)
+

Function Documentation

+ +
+
+ + + + + + + + +
void* classClone (void * _object)
+
+
+ +

Definition at line 42 of file class.c.

+
{
+        class_ptr class  = class_getClass(_object);
+        void *    object = calloc(1, class->object_size + sizeof(void*));
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+#undef clone
+        CALL(object, Class, clone, _object);
+
+        return object;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void classDelete (void ** object)
+
+
+ +

Definition at line 33 of file class.c.

+
{
+        CALL(*object, Class, dtor);
+
+        free(*object - sizeof(void*));
+        *object = NULL;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* classNew (class_ptr class,
 ... 
)
+
+
+ +

Definition at line 15 of file class.c.

+
{
+        void * object = calloc(1, class->object_size + sizeof(void*));
+        va_list params;
+
+        if (class->init)        class->init();
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+        va_start(params, class);
+        CALL(object, Class, ctor, &params);
+        va_end(params);
+
+        return object;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2class_8c__incl.map b/docs/html/interface_2class_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_2class_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_2class_8c__incl.md5 b/docs/html/interface_2class_8c__incl.md5 new file mode 100644 index 0000000..8a6a50e --- /dev/null +++ b/docs/html/interface_2class_8c__incl.md5 @@ -0,0 +1 @@ +5cf44eac642aad62c08a8117fd264019 \ No newline at end of file diff --git a/docs/html/interface_2class_8c__incl.png b/docs/html/interface_2class_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f37a2731aba869372e96b5f65ee26b750f209332 GIT binary patch literal 2089 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 T#pMl{00000NkvXXu0mjfz-k(k literal 0 HcmV?d00001 diff --git a/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.map b/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.map new file mode 100644 index 0000000..f3be230 --- /dev/null +++ b/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 b/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 new file mode 100644 index 0000000..bfff866 --- /dev/null +++ b/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 @@ -0,0 +1 @@ +1942056551c6d8f145bfbfe7cd2026ef \ No newline at end of file diff --git a/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.png b/docs/html/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a935225e6f047615c72caebd3f70ac18a2a56f GIT binary patch literal 778 zcmV+l1NHogP)%c00960 z|CUL=SO5S30d!JMQvg8b*k%9#0)I(FK~!jg?U{>`s~`-9DRNPPbn^Z$dlG^cdU30^ zGp93TW{qz1kK`i+x~o*TZr!?dyEFWf{U^hCYkYY9itT2wGybe~2A#pf`#OWpAU|{l zoq>A7AiSg!V#0aaiufP{dw_}shh}(7dXPa#aSVXtrx;u=uf~+~*~P%Rd;x7e>Mt^g zk*_d+jzLA?ECY@P;9GA_F@Tg};0(tZ6Oc=orq!iU7%>A{794QJNj!+#&0xh)$9w0% zaw6KG^W+@5VRgj@DtnC*?G=5bl+(hak`_@b-C_VKgc+Ct#xP-^49Q)K3-pV%QsNu} zXI%mzvho-M!BE9}XRYy^2!b8ZDjdkE#VrW5rOYTAmS{_%0^uetqDH#OfG0al%z&~T zktza0PPw>>0pCxFQl;9U`^19zFax4c#q*5WA!kMNh%~L<=FGfpgB0iGILJIO5NQ#$ z(oF`Eq^yNG($g4mrX-7#wJ>r&$Q>aUOvpd-Rjg)k*=yB^?2?E!2IxrxmAzVA6_h7D zTW$fe76eF<7EvSJt^>|j)`CngU8kFqo)}Y82Vt#)5NZZz>VWf=wV-pdnrD1bCmZVh0aZt85WLOc*_gaT*%zqg58!wU;Myqe z7GyM^3V?PIrA&svXC$pEX%V&3O$Hyd(`TeVOmk%qW~b`K`+oHMf~R@acYFTf_x&1! z89cnNGw2NRLub(c*Ve6Dw{C3z0INr^Fe?*u`~Uy|07*qo IM6N<$g5zsrod5s; literal 0 HcmV?d00001 diff --git a/docs/html/interface_2class_8c_source.html b/docs/html/interface_2class_8c_source.html new file mode 100644 index 0000000..755454a --- /dev/null +++ b/docs/html/interface_2class_8c_source.html @@ -0,0 +1,166 @@ + + + + +server: src/interface/class.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface/class.c

+
+
+Go to the documentation of this file.
00001 #include <stdarg.h>
+00002 #include <stdlib.h>
+00003 #include <assert.h>
+00004 
+00005 #include "class.h"
+00006 #include "interface/class.h"
+00007 
+00008 const
+00009 struct interface i_Class = {
+00010         "class",
+00011         3
+00012 };
+00013 
+00014 void *
+00015 classNew(class_ptr class, ...)
+00016 {
+00017         void * object = calloc(1, class->object_size + sizeof(void*));
+00018         va_list params;
+00019 
+00020         if (class->init)        class->init();
+00021 
+00022         * (class_ptr *)object = class;
+00023         object += sizeof(void*);
+00024 
+00025         va_start(params, class);
+00026         CALL(object, Class, ctor, &params);
+00027         va_end(params);
+00028 
+00029         return object;
+00030 }
+00031 
+00032 void
+00033 classDelete(void ** object)
+00034 {
+00035         CALL(*object, Class, dtor);
+00036 
+00037         free(*object - sizeof(void*));
+00038         *object = NULL;
+00039 }
+00040 
+00041 void *
+00042 classClone(void * _object)
+00043 {
+00044         class_ptr class  = class_getClass(_object);
+00045         void *    object = calloc(1, class->object_size + sizeof(void*));
+00046 
+00047         * (class_ptr *)object = class;
+00048         object += sizeof(void*);
+00049 
+00050 #undef clone
+00051         CALL(object, Class, clone, _object);
+00052 
+00053         return object;
+00054 }
+00055 
+00056 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2class_8h.html b/docs/html/interface_2class_8h.html new file mode 100644 index 0000000..55b563d --- /dev/null +++ b/docs/html/interface_2class_8h.html @@ -0,0 +1,374 @@ + + + + +server: include/interface/class.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface/class.h File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "interface.h"
+
+Include dependency graph for class.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Data Structures

struct  i_Class

+Defines

#define new(class,...)   classNew(_##class, ##__VA_ARGS__)
#define delete(object)   classDelete((void **)(object))
#define clone(object)   classClone((void *)(object))

+Typedefs

typedef void(* fptr_ctor )(void *, va_list *)
typedef void(* fptr_dtor )(void *)
typedef void(* fptr_clone )(void *, void *const)

+Functions

void * classNew (class_ptr,...)
void classDelete (void **)
void * classClone (void *)
+

Define Documentation

+ +
+
+ + + + + + + + +
#define clone( object)   classClone((void *)(object))
+
+
+ +

Definition at line 28 of file class.h.

+ +
+
+ +
+
+ + + + + + + + +
#define delete( object)   classDelete((void **)(object))
+
+
+ +

Definition at line 27 of file class.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define new( class,
 ... 
)   classNew(_##class, ##__VA_ARGS__)
+
+
+ +

Definition at line 26 of file class.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_clone)(void *, void *const)
+
+
+ +

Definition at line 11 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_ctor)(void *, va_list *)
+
+
+ +

Definition at line 9 of file class.h.

+ +
+
+ +
+
+ + + + +
typedef void(* fptr_dtor)(void *)
+
+
+ +

Definition at line 10 of file class.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void* classClone (void * )
+
+
+ +

Definition at line 42 of file class.c.

+
{
+        class_ptr class  = class_getClass(_object);
+        void *    object = calloc(1, class->object_size + sizeof(void*));
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+#undef clone
+        CALL(object, Class, clone, _object);
+
+        return object;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void classDelete (void ** )
+
+
+ +

Definition at line 33 of file class.c.

+
{
+        CALL(*object, Class, dtor);
+
+        free(*object - sizeof(void*));
+        *object = NULL;
+}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* classNew (class_ptr ,
 ... 
)
+
+
+ +

Definition at line 15 of file class.c.

+
{
+        void * object = calloc(1, class->object_size + sizeof(void*));
+        va_list params;
+
+        if (class->init)        class->init();
+
+        * (class_ptr *)object = class;
+        object += sizeof(void*);
+
+        va_start(params, class);
+        CALL(object, Class, ctor, &params);
+        va_end(params);
+
+        return object;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2class_8h__dep__incl.map b/docs/html/interface_2class_8h__dep__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_2class_8h__dep__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_2class_8h__dep__incl.md5 b/docs/html/interface_2class_8h__dep__incl.md5 new file mode 100644 index 0000000..654e096 --- /dev/null +++ b/docs/html/interface_2class_8h__dep__incl.md5 @@ -0,0 +1 @@ +8c9abe4657c88d8f9637bba602be5521 \ No newline at end of file diff --git a/docs/html/interface_2class_8h__dep__incl.png b/docs/html/interface_2class_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a5065e651876485880951dc030cce15f975c10 GIT binary patch literal 651 zcmV;60(AX}P)CdCzrWMd(*OVf|Ns9oIffGe0004WQchC+#X0h$22k!h3i4vGKIFYo7PKP+ms$}0PB?ZfKmw$FfLTT(IpL59&N zn_(Dx3@)?j;`^TFKb^~*;0`_t(~yuY!!Qmp{6mb}M?LOmKDx=FEVBO0crp$$w#zFp z%!03w@p;datD}Cn4*A;g!MhG5#V_N*CmDBq?odE?n1Xl17gvKmJG;Rcf)ei4fWmp| zvq2Y{sf($HZ=1c!AcnESSk6S;n@%*t8#U$6;B(|sKsT4MJ)OK*6cT&<*qiz&{W}cy z^>i{C!|M!dP0TS_Gc=^}-dk(N0z~NYk!Exul07(|<3iERWk}c;fqo9H2ba4jO&f!8 z34{qc0sf|vCswj$D2U2mZ{!&Q1cq?U5Wpl}ZO?j$jAXSE5(WF%RtJw#nkpae)u~|Z z6ZraKsq@G&5TeuXGD3@~y=txN2<|qFknlh;aHS6x^HI)R4EA-I493KY#4aN%VXqF{ zVp~$T4a4tEc@do28^+wm2^7@&^{qE`P+kxWb|_!Oi}iU#yNud9BF6x48OS(oVPBod zdB-s`2Asj=HCK$d^P}%A2}*2T9AI~JFQdT~3{y)Hii}+QmT;HU3yoU}<0<#+EBD^5 l7!{**#$WiKSXpI9x8JK-Bm1m6zt8{x002ovPDHLkV1i;)FC_o~ literal 0 HcmV?d00001 diff --git a/docs/html/interface_2class_8h__incl.map b/docs/html/interface_2class_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_2class_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_2class_8h__incl.md5 b/docs/html/interface_2class_8h__incl.md5 new file mode 100644 index 0000000..36e8bf3 --- /dev/null +++ b/docs/html/interface_2class_8h__incl.md5 @@ -0,0 +1 @@ +4c03a02ce9c725212a6b91321da4dc7f \ No newline at end of file diff --git a/docs/html/interface_2class_8h__incl.png b/docs/html/interface_2class_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e3766687e56be3edeae35e16ea682333eea4a1 GIT binary patch literal 1386 zcmV-w1(o`VP)0*FC*CuoGdSJIV-65(qK_z;CVH`whd`3G*xw_`+Ot6- zKB6RJu^$?fwT15^s~_W&wHtmz{Ct+YH~Y?R?)WT4)HX&kAmgpYrJx!iR&H%20P=N@ zbg6*~xIcH|Ez{Y3Pydb3uU6l-99~5@*%p!o=J(#g{=X5ZoFJE{?}c^GY6*6F`X>V7 zsUWJb6hOQM#8vhfkjrhQ+*^^X7JDa>r+{pfdK;3>LhnMdUFSVW0;+rr$Sp|1YD}Lb z^ppB;t2n_zD@>gv{2RwFt2k~k-#30&#c_-Kw(+YfPOztdM3$B=No-}Ql0?__7?4Cs zc2xBkkR(a=)s!B|&Waubk{rqIdJ+RUP)=GTN2*DQA9p5UJH6gh=Q(NCF?vnsfpWimxa}rpkQ&$l>^d6R_*DK} zrSDJXGF67EIBvh3@J1Gsg@TmzX6Ah$#Vmu(GnZRS77U`MZ??7LmexerpJzE)07z4- zy3#*cR@5r5RMzCGE+AD?H#(3vCa2Qx3$KdDt?SkOK#nq4Wd@g&3EZNz(dA?TAgU@W z1p`#nRjH{mCBUK6<(i{G7q-i@YBEq^AXZLi5M`McsEjj0p`u1NMVFIpgOsW$%}m#o zzSJ|KFB{BUjxN-0W-}fJV)|hQkj_yVK`0YsDJvUYP8PDX1Pu^&Y+z~Sf>NQ2mNUHH z1yYV6<}X9=Es9bmQl;o}vJem$^Z%R~afi^Ik>emR=4JT@LYZp)(iAqj8)V!gv?26X z%nJSExb&M-Km_apF@o4kxJQJILatpPaAGxCuFR>WmzF*}Dp8v;LsyNW2SG4{(8p8u zHzSk@vcRcjqGN|xkTq*StIB=hls}?;TcPKw!Hp85k{}37dR=&b2Kid+j#%4;Ic + + diff --git a/docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 b/docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 new file mode 100644 index 0000000..bfff866 --- /dev/null +++ b/docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 @@ -0,0 +1 @@ +1942056551c6d8f145bfbfe7cd2026ef \ No newline at end of file diff --git a/docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.png b/docs/html/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a935225e6f047615c72caebd3f70ac18a2a56f GIT binary patch literal 778 zcmV+l1NHogP)%c00960 z|CUL=SO5S30d!JMQvg8b*k%9#0)I(FK~!jg?U{>`s~`-9DRNPPbn^Z$dlG^cdU30^ zGp93TW{qz1kK`i+x~o*TZr!?dyEFWf{U^hCYkYY9itT2wGybe~2A#pf`#OWpAU|{l zoq>A7AiSg!V#0aaiufP{dw_}shh}(7dXPa#aSVXtrx;u=uf~+~*~P%Rd;x7e>Mt^g zk*_d+jzLA?ECY@P;9GA_F@Tg};0(tZ6Oc=orq!iU7%>A{794QJNj!+#&0xh)$9w0% zaw6KG^W+@5VRgj@DtnC*?G=5bl+(hak`_@b-C_VKgc+Ct#xP-^49Q)K3-pV%QsNu} zXI%mzvho-M!BE9}XRYy^2!b8ZDjdkE#VrW5rOYTAmS{_%0^uetqDH#OfG0al%z&~T zktza0PPw>>0pCxFQl;9U`^19zFax4c#q*5WA!kMNh%~L<=FGfpgB0iGILJIO5NQ#$ z(oF`Eq^yNG($g4mrX-7#wJ>r&$Q>aUOvpd-Rjg)k*=yB^?2?E!2IxrxmAzVA6_h7D zTW$fe76eF<7EvSJt^>|j)`CngU8kFqo)}Y82Vt#)5NZZz>VWf=wV-pdnrD1bCmZVh0aZt85WLOc*_gaT*%zqg58!wU;Myqe z7GyM^3V?PIrA&svXC$pEX%V&3O$Hyd(`TeVOmk%qW~b`K`+oHMf~R@acYFTf_x&1! z89cnNGw2NRLub(c*Ve6Dw{C3z0INr^Fe?*u`~Uy|07*qo IM6N<$g5zsrod5s; literal 0 HcmV?d00001 diff --git a/docs/html/interface_2class_8h_source.html b/docs/html/interface_2class_8h_source.html new file mode 100644 index 0000000..a62d886 --- /dev/null +++ b/docs/html/interface_2class_8h_source.html @@ -0,0 +1,142 @@ + + + + +server: include/interface/class.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface/class.h

+
+
+Go to the documentation of this file.
00001 #ifndef __INTERFACE_CLASS_H__
+00002 #define __INTERFACE_CLASS_H__
+00003 
+00004 #include <stdarg.h>
+00005 
+00006 #include "class.h"
+00007 #include "interface.h"
+00008 
+00009 typedef void (* fptr_ctor)(void *, va_list *);
+00010 typedef void (* fptr_dtor)(void *);
+00011 typedef void (* fptr_clone)(void *, void * const);
+00012 
+00013 extern const struct interface i_Class;
+00014 
+00015 struct i_Class {
+00016         const struct interface * const _;
+00017         fptr_ctor                      ctor;
+00018         fptr_dtor                      dtor;
+00019         fptr_clone                     clone;
+00020 };
+00021 
+00022 extern void * classNew(class_ptr, ...);
+00023 extern void   classDelete(void **);
+00024 extern void * classClone(void *);
+00025 
+00026 #define new(class,...)          classNew(_##class, ##__VA_ARGS__)
+00027 #define delete(object)          classDelete((void **)(object))
+00028 #define clone(object)           classClone((void *)(object))
+00029 
+00030 #endif // __INTERFACE_CLASS_H__
+00031 
+00032 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2logger_8c.html b/docs/html/interface_2logger_8c.html new file mode 100644 index 0000000..2d2c63a --- /dev/null +++ b/docs/html/interface_2logger_8c.html @@ -0,0 +1,202 @@ + + + + +server: src/interface/logger.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface/logger.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdarg.h>
+#include "logger.h"
+#include "interface/logger.h"
+
+Include dependency graph for logger.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

void loggerLog (void *_object, logger_level level, const char *const fmt,...)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void loggerLog (void * _object,
logger_level level,
const char *const fmt,
 ... 
)
+
+
+ +

Definition at line 13 of file logger.c.

+
                                                                           {
+        Logger object = _object;
+
+        if (level >= object->min_level) {
+                char *  msg      = NULL;
+                size_t  msg_size = 0;
+                va_list params;
+
+                va_start(params, fmt);
+                msg_size = vsnprintf(msg, msg_size, fmt, params);
+                va_end(params);
+
+                msg = malloc(msg_size + 1);
+
+                va_start(params, fmt);
+                vsnprintf(msg, msg_size + 1, fmt, params);
+                va_end(params);
+
+                CALL(_object, Logger, log, level, msg);
+
+                free(msg);
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2logger_8c__incl.map b/docs/html/interface_2logger_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_2logger_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_2logger_8c__incl.md5 b/docs/html/interface_2logger_8c__incl.md5 new file mode 100644 index 0000000..3f54cc0 --- /dev/null +++ b/docs/html/interface_2logger_8c__incl.md5 @@ -0,0 +1 @@ +a79dfd2227829af04969c50e48d23117 \ No newline at end of file diff --git a/docs/html/interface_2logger_8c__incl.png b/docs/html/interface_2logger_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0388919c2897395aea64480b8057e695d98103f4 GIT binary patch literal 1941 zcmV;G2Wt3A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCiL#?A6h-wZ>Wkn|{Qti; zqfsNsn2?*ZtM5%BusNI+2Cc5{sse#PAP@)y0)arE6)jGm&PXAmYheN~QUIn<0hmGs zU2E95Q>S~I_8PJnbuL#pe%(7%uM(!5p@I@{*e+@U6pRl2%jy&Yn`Zi z(RI`grCS1+vkpty$iBvMBFNR{v2GbwVB~W~$%Ow}9*>c3#{gNXn(0cSkWlra>!?lW z^#B22qz+*CSNeZ`g)jdLo~9Qt{QFMG6O5cpvbrwaH@luOglI6jC4f2WVvo^F|2UEt zFeBd~#tjVH!dFZeSzVXvX4iX+tRpH+x+4Jdsy!HXZkp8{2%g!t{#XxS)(6ivJ4LO} z8N&`$(>TlOt18va^r;N<SMsz)0l>gV{c^%#(Tn zFphe|Lrk_>$(vB|0$|((PnQc7fGJb}rceQxLIq$76@V#J-hWZD_WW$VXwauK@|~*d z^M%(cPVGP`b&+02Fn}hbu2OrIZ4&`NlSkJ}lxsy<0%(%!I;Yo(wxl1>q?I9`rtKua z3KSqyE{!R+=N`}`l5sQlZ=#CfqGd^-eJ6==2Hnb*yhtz{4X_E5HF0;_ zNPG{VYuzO6E~Sns2Q;3#OW6JPo~kF%PWQ=j*xeKM1`={el+)&(v`3IjLY?yHm25zB zC#MWKp1IO@{Ihb)j_ZlbyK`V;P~w^3pJzaGCD*KE1OwCNRn7_VIc?>QYGm!QF;-eQEah&;$-itnIOP z@F_QlKZYiJ5sS`hofgbrK(h@Xd?Y!k)ar@)1NK!D$xp(X4E-zmvKU7 zQA#k0qKUULT7M6j=V2)R9wb#fDSWP-zlThn2u!;1=G$bxiA=IsQw}yinBvK#i!$x) zdP=i{@tetn{>zdqK=~%I?@3wRL%i#4;90Z_BZjJ_eXQ>r+)ZFocn1o=SWE!Sr`-We zq3!^tP!cMCjGJ&Dn8~HX779(b;>wB!MSaEBzGF?C0RzpMkmXB`e2UgGw)L`xg2H~FDRmw^`w*A(Lm-%ri zwMNixFyC(TSh=35<@l+B=Flp^DmGTvnx3*O_BdmCP|+ zgF&=Ka+dZT`}mwOh?AGO8_pBZC3Pp;ihUf!V9|Ez+T0C{iceW-$Da4nY`cNG`3a0{ zC&GU^3NUIIyhGIK(h4JUOsbMOCeu=e)t5ok9`>g)wQTYN?-_HpWuY}#jZR!Lnmd8f z@hL0qsQ#}Qz23Wlfa6ebQ25L<_?J->-m{;4OYT3{3lEFM?kHLI7 z$Fh^lBzS|_Im#b746(;xU5b$8L^%!{8lq9I~{r#w075V=Cv7%)sO7niTHJ>c;Wj zJmn)9- + + + + + + diff --git a/docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 b/docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 new file mode 100644 index 0000000..d7dff78 --- /dev/null +++ b/docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 @@ -0,0 +1 @@ +c3b0fd92be370d95b9e44b4a43e0f23e \ No newline at end of file diff --git a/docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png b/docs/html/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8b800ca89998b027351abf019effcb14cbb72d4c GIT binary patch literal 2102 zcmY*adpr|-A02J3xh&*vQ4xwkdbJ#h{yesz4LsY&-?cNbAIRi&iS5y56RI1At9zD1^@sgkao7t0Du6N&znVd z@sWN3W5$1uJEC0S+dQ74Vk8U(i;Ih6kB#N!=R+V6MoSBsOpc0*(%0Ab_4SpPmq#EF zB_$;-EiD5B1N>7Sk2j94dckJ`SDYPO0G8iA1pxrUfpthHiMTYNw@If4+Qw<<8~gBlDp&WY{;M zxnn2D;~uoy&RXZre$$Gn(WNXJj@p$oEKZ9!x0w{C>j?`tiVAhxKY}~xIU4I-hf@vO zyLN9k6yX|nPDfpgstxx>o;SZtO;n9Z!xp;kbDIe!IX#MI+`?v_T|qRoxiJ?&v4@y+ z63w{$$juo&W3g#=`Ds{cJBUu#5M;iK`4ps98=Lkt?BZAjQAWjmoMWh)q zGV9TE;KRpZv~H?p4Stk;UHQu}X|6<1Yzj!;i&tV&qKzKT={&vleW6gt@H^8QNE}u0 zVu5~sO1Q>+AJKCpyB!-S}T&SIszkanOt+={v4|7*+(bzu|qZ_nLdW&$)sunIFS$@!otQKOG1f{hySZo&v?V zTdfB2@t>d^-~X3p9dCXyDtKvSQ|_bD7=b*rBrYBcJz+Vo$(CYBH^pZVl!4Wnv%Lbu z!Tb0CAtu+(;%@?VrVo3sHtmUDg>UDKTcrOpyPAUQGTN!o%9N~q8GnfSTw&8tk@hXz zp`7%-fvSV}FCh!2)3%2?!P>>HEB3R+>vx*dPV|w3O9B)Y<{uSo_QJildpM%gUsCb zR|gNUth5-y+_(?L5}%(6J86Y)T?LJ{vWmPag`-xpDw`(FU_!dX9XFk{t^l3tkI6OA zE!3v`&(}!paVH=NDp&d;@Vc^})QnhX1s?4q19(K$;uDFCD82sWz4JQ|{CVhFt3L-# zMx4&W%+u=%rA6}22j;lEVG}=q?T@E?AO#3CJT&RvcvBA$$qTT5>eJg^#Wim009D6X z#LOF)k4pMJ;EJ*FS_q3f-6Ed(M`5vOy~AsbM$A*UjUA*krJKCwQ#;r11$Dhz)h34gmx_V<;Vp@Z-3j8J$FO7K~4s zF{}D9mh%Tn%^O05hZiOu_a7;;}eLP?S0q#^$Ik`1i%GstDzLbz>?8IgJ z&W}A(6poz>-&3xz*Fm(M)Sif4ZZMA^L!cC}O6ffDQW>hXhrMJrCIP^;W*cpJ#J|n7 zi9D93=p_}Dv?-HT4ei>ZsNit7u9xKy7QiEZt8monRKgr-t>oH%ld3R_D6VVM;2j~( zdFXm*@WaLZKR(yog&eN95TtGhj&wvN6-m_i>K z+AGKEx5)Sk9J#BYe)h=e#i@B<6{lzN)A3Cg+&_>m;P0t`aDI4untInOuzYDCF~7lC-tcmoT9fwOqOr+3 zV~S->x$)~~V3Z8zyLC{NhAFmmA~Me*Zlfr<5WCZ?C!@RA z>BB5AyR6FWNKwa|Bl#c>ku!wYmAYN={3 literal 0 HcmV?d00001 diff --git a/docs/html/interface_2logger_8c_source.html b/docs/html/interface_2logger_8c_source.html new file mode 100644 index 0000000..a3768f2 --- /dev/null +++ b/docs/html/interface_2logger_8c_source.html @@ -0,0 +1,147 @@ + + + + +server: src/interface/logger.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface/logger.c

+
+
+Go to the documentation of this file.
00001 #include <stdlib.h>
+00002 #include <stdarg.h>
+00003 
+00004 #include "logger.h"
+00005 #include "interface/logger.h"
+00006 
+00007 const struct interface i_Logger = {
+00008         "logger",
+00009         1
+00010 };
+00011 
+00012 void
+00013 loggerLog(void * _object, logger_level level, const char * const fmt, ...) {
+00014         Logger object = _object;
+00015 
+00016         if (level >= object->min_level) {
+00017                 char *  msg      = NULL;
+00018                 size_t  msg_size = 0;
+00019                 va_list params;
+00020 
+00021                 va_start(params, fmt);
+00022                 msg_size = vsnprintf(msg, msg_size, fmt, params);
+00023                 va_end(params);
+00024 
+00025                 msg = malloc(msg_size + 1);
+00026 
+00027                 va_start(params, fmt);
+00028                 vsnprintf(msg, msg_size + 1, fmt, params);
+00029                 va_end(params);
+00030 
+00031                 CALL(_object, Logger, log, level, msg);
+00032 
+00033                 free(msg);
+00034         }
+00035 }
+00036 
+00037 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2logger_8h.html b/docs/html/interface_2logger_8h.html new file mode 100644 index 0000000..ccd6ca6 --- /dev/null +++ b/docs/html/interface_2logger_8h.html @@ -0,0 +1,230 @@ + + + + +server: include/interface/logger.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface/logger.h File Reference

+
+
+
#include <stdarg.h>
+#include "interface.h"
+#include "logger.h"
+
+Include dependency graph for logger.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_Logger

+Typedefs

typedef void(* fptr_log )(void *, logger_level, const char *const)

+Functions

void loggerLog (void *, logger_level, const char *const,...)
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fptr_log)(void *, logger_level, const char *const)
+
+
+ +

Definition at line 9 of file logger.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void loggerLog (void * ,
logger_level ,
const char * const,
 ... 
)
+
+
+ +

Definition at line 13 of file logger.c.

+
                                                                           {
+        Logger object = _object;
+
+        if (level >= object->min_level) {
+                char *  msg      = NULL;
+                size_t  msg_size = 0;
+                va_list params;
+
+                va_start(params, fmt);
+                msg_size = vsnprintf(msg, msg_size, fmt, params);
+                va_end(params);
+
+                msg = malloc(msg_size + 1);
+
+                va_start(params, fmt);
+                vsnprintf(msg, msg_size + 1, fmt, params);
+                va_end(params);
+
+                CALL(_object, Logger, log, level, msg);
+
+                free(msg);
+        }
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_2logger_8h__dep__incl.map b/docs/html/interface_2logger_8h__dep__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_2logger_8h__dep__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_2logger_8h__dep__incl.md5 b/docs/html/interface_2logger_8h__dep__incl.md5 new file mode 100644 index 0000000..de41a1b --- /dev/null +++ b/docs/html/interface_2logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +fb55aa545a5fb04b36e5de592cf2ca4f \ No newline at end of file diff --git a/docs/html/interface_2logger_8h__dep__incl.png b/docs/html/interface_2logger_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..619de91e602dfc8e6e37bda96199bcd055eea670 GIT binary patch literal 640 zcmV-`0)PF9P)CdCzrWMd(*OVf|Ns9oIffGe0004WQchC`)0;ikc)=~WKIo7T!^Z>7Rc zcnQ<`hfQD387K;+>OpOyVJWd-MM6(?+Ybh*tWkrW?!{y9fgS99_xamFQ0l$z7N z=;s3tkDVSwU4sjW&vT~(aCUvz)pP>2Vp$C1QIOH(wdf-euq1}+A%uI-# zmz<-d9Gtynjxk`azmswz>&A|ZYwrR%D08^PLIe4aqXa#ahJ6luelIj{Y^SA5RK&Cm zu{K~iCj}MuT+V67%z{zMx$nc^o&}nL9F#enK$A1%upmJXr4v*WaL8#vC{dy1BljCe z$vDc!R*A!6hR&3O=1x4HOO0-cg9jt0^=WP=v>7lRlaodPPq2atEg!kxIm%+vDjXAb zadfcgM~wP8=LGzeGlK*@lwQD6KmH1i@ + diff --git a/docs/html/interface_2logger_8h__incl.md5 b/docs/html/interface_2logger_8h__incl.md5 new file mode 100644 index 0000000..3acfcfa --- /dev/null +++ b/docs/html/interface_2logger_8h__incl.md5 @@ -0,0 +1 @@ +a30984a438e48f55f4f09e60064c3ef3 \ No newline at end of file diff --git a/docs/html/interface_2logger_8h__incl.png b/docs/html/interface_2logger_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebfa2c683be850edaa6ebdacd2d0dc0baa4e7f5 GIT binary patch literal 1409 zcmV-{1%CR8P)jkzNr2W; zP*mDQ$IR@i1pegX)~dTjaocUT-FDm8>=CqR36+IW&MWR1Dm9(PRI$o*Dw^4hybO&+ zx)2QkU5N&GE=BV(JTn^UkS$!x(RI#j47wJZIjPIfBF{o`hG$MAg4w&*e3(_1%&GR7 z$g5duns=N9^#z)Kq25Bm{gTs3{U{AYQk*gDbivpt;TnTe0)nZYD{=^&F;r@5GsTQU zs(}r3IrIu$q%%3qWOK*g7aNk+u>sG;cT#%_uqaieOUqVn!nvmyqTpMs!S^ zYZ_gfDvY{CKWKXG(mIpVZ0x0k#5o&K(;RFal0boe;?DSNrx|FB8HX!Aqrn1DpP0mM zpGJ*fYEuPr(2^kUaK=VT&Od0h<3*#pR_jcjX8y5} z@*6ZX-$$b1^zmUQ_lT2w9OVa%c06fdEl)xXT4!>a`PYrELlyWYnuT>^G++y(Jq=P~ zgWc2c1h%7*_U9SR)LX}EY+!@pBhxyQ)6DK^q{-|-*Ll-DMDt@CFjwB2LqvnDX#}jQ zfpK$)XmISiz_$&inEr&N!@A{7v(k={JvqB96TQvW@N z$tbcc(E3kv|1f_RTXM^YCX~ds%RuyRCL9nx&LahqIXQ*=SbsJr~Yu zwx_~bPxeGO5vg8_<~%rYiJk-}HqCS3T#9DH4a^s_NMxICU%r+_D!UZT##^y3Ws%A* zMYH+7@+(=SvP;oyPcCPiOVR8}EnA#@iRFs3Gp{^x_GWc0nk;b+4g#NGLw?^;263}GvN-))%$vob0rg?9i%iHH9ufelN7yve9Nlmjf2?Slu2pRVKSfcss%%uzm8z{UVApowC_5cl!Fd&y@s>i;&PBH-Rc%uPTA>6MK+qCkIx3=iWzjf&7DZ##Ab_arvLay` z8{?{4DmGq!tXP^_Rka@Zwt-6+8@TK!e*G+>2;IjFh@#QWC;%##Buq3W5C*9m>-EQq zpJ~GM6*cd0rj^13q#`rN@q78|-)!Ekf>G;e@obRE zmIfz5TLrymquCSVrr8%MZNQr*Wu&wLZ<>^mtTT~)ReU|tZMWTa+m-A;7))Vdogg}^ P00000NkvXXu0mjf0Ai*C literal 0 HcmV?d00001 diff --git a/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map b/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map new file mode 100644 index 0000000..d4d2aea --- /dev/null +++ b/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 b/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 new file mode 100644 index 0000000..d7dff78 --- /dev/null +++ b/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 @@ -0,0 +1 @@ +c3b0fd92be370d95b9e44b4a43e0f23e \ No newline at end of file diff --git a/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png b/docs/html/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8b800ca89998b027351abf019effcb14cbb72d4c GIT binary patch literal 2102 zcmY*adpr|-A02J3xh&*vQ4xwkdbJ#h{yesz4LsY&-?cNbAIRi&iS5y56RI1At9zD1^@sgkao7t0Du6N&znVd z@sWN3W5$1uJEC0S+dQ74Vk8U(i;Ih6kB#N!=R+V6MoSBsOpc0*(%0Ab_4SpPmq#EF zB_$;-EiD5B1N>7Sk2j94dckJ`SDYPO0G8iA1pxrUfpthHiMTYNw@If4+Qw<<8~gBlDp&WY{;M zxnn2D;~uoy&RXZre$$Gn(WNXJj@p$oEKZ9!x0w{C>j?`tiVAhxKY}~xIU4I-hf@vO zyLN9k6yX|nPDfpgstxx>o;SZtO;n9Z!xp;kbDIe!IX#MI+`?v_T|qRoxiJ?&v4@y+ z63w{$$juo&W3g#=`Ds{cJBUu#5M;iK`4ps98=Lkt?BZAjQAWjmoMWh)q zGV9TE;KRpZv~H?p4Stk;UHQu}X|6<1Yzj!;i&tV&qKzKT={&vleW6gt@H^8QNE}u0 zVu5~sO1Q>+AJKCpyB!-S}T&SIszkanOt+={v4|7*+(bzu|qZ_nLdW&$)sunIFS$@!otQKOG1f{hySZo&v?V zTdfB2@t>d^-~X3p9dCXyDtKvSQ|_bD7=b*rBrYBcJz+Vo$(CYBH^pZVl!4Wnv%Lbu z!Tb0CAtu+(;%@?VrVo3sHtmUDg>UDKTcrOpyPAUQGTN!o%9N~q8GnfSTw&8tk@hXz zp`7%-fvSV}FCh!2)3%2?!P>>HEB3R+>vx*dPV|w3O9B)Y<{uSo_QJildpM%gUsCb zR|gNUth5-y+_(?L5}%(6J86Y)T?LJ{vWmPag`-xpDw`(FU_!dX9XFk{t^l3tkI6OA zE!3v`&(}!paVH=NDp&d;@Vc^})QnhX1s?4q19(K$;uDFCD82sWz4JQ|{CVhFt3L-# zMx4&W%+u=%rA6}22j;lEVG}=q?T@E?AO#3CJT&RvcvBA$$qTT5>eJg^#Wim009D6X z#LOF)k4pMJ;EJ*FS_q3f-6Ed(M`5vOy~AsbM$A*UjUA*krJKCwQ#;r11$Dhz)h34gmx_V<;Vp@Z-3j8J$FO7K~4s zF{}D9mh%Tn%^O05hZiOu_a7;;}eLP?S0q#^$Ik`1i%GstDzLbz>?8IgJ z&W}A(6poz>-&3xz*Fm(M)Sif4ZZMA^L!cC}O6ffDQW>hXhrMJrCIP^;W*cpJ#J|n7 zi9D93=p_}Dv?-HT4ei>ZsNit7u9xKy7QiEZt8monRKgr-t>oH%ld3R_D6VVM;2j~( zdFXm*@WaLZKR(yog&eN95TtGhj&wvN6-m_i>K z+AGKEx5)Sk9J#BYe)h=e#i@B<6{lzN)A3Cg+&_>m;P0t`aDI4untInOuzYDCF~7lC-tcmoT9fwOqOr+3 zV~S->x$)~~V3Z8zyLC{NhAFmmA~Me*Zlfr<5WCZ?C!@RA z>BB5AyR6FWNKwa|Bl#c>ku!wYmAYN={3 literal 0 HcmV?d00001 diff --git a/docs/html/interface_2logger_8h_source.html b/docs/html/interface_2logger_8h_source.html new file mode 100644 index 0000000..9be9a93 --- /dev/null +++ b/docs/html/interface_2logger_8h_source.html @@ -0,0 +1,132 @@ + + + + +server: include/interface/logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface/logger.h

+
+
+Go to the documentation of this file.
00001 #ifndef __INTERFACE_LOGGER_H__
+00002 #define __INTERFACE_LOGGER_H__
+00003 
+00004 #include <stdarg.h>
+00005 
+00006 #include "interface.h"
+00007 #include "logger.h"
+00008 
+00009 typedef void (* fptr_log)(void *, logger_level, const char * const);
+00010 
+00011 extern const struct interface i_Logger;
+00012 
+00013 struct i_Logger {
+00014         const struct interface * const _;
+00015         fptr_log                       log;
+00016 };
+00017 
+00018 extern void loggerLog(void *, logger_level, const char * const, ...);
+00019 
+00020 #endif // __INTERFACE_LOGGER_H__
+00021 
+00022 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_8c.html b/docs/html/interface_8c.html new file mode 100644 index 0000000..b2472fc --- /dev/null +++ b/docs/html/interface_8c.html @@ -0,0 +1,196 @@ + + + + +server: src/interface.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface.c File Reference

+
+
+
#include <sys/types.h>
+#include <stdlib.h>
+#include "interface.h"
+
+Include dependency graph for interface.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Defines

#define TRUE   1

+Functions

struct interfaceinterfaceGet (iface_impl_ptr iface_impl, const iface_ptr _iface)
+

Define Documentation

+ +
+
+ + + + +
#define TRUE   1
+
+
+ +

Definition at line 7 of file interface.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
struct interface* interfaceGet (iface_impl_ptr iface_impl,
const iface_ptr _iface 
) [read]
+
+
+

this one is important in selector functions to get the correct interface implementation of a class.

+ +

Definition at line 25 of file interface.c.

+
{
+        const iface_ptr * iface = &_iface;
+        void *            dummy;
+
+    if (! iface_impl->simpl) {
+        qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+        iface_impl->simpl=TRUE;
+    }
+
+    dummy = bsearch(
+                        &iface,
+                        iface_impl->impl,
+                        iface_impl->nimpl,
+                        sizeof(iface_ptr),
+                        comp);
+
+        return dummy? *(struct interface **)dummy : dummy;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_8c__incl.map b/docs/html/interface_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/interface_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/interface_8c__incl.md5 b/docs/html/interface_8c__incl.md5 new file mode 100644 index 0000000..21eb7a9 --- /dev/null +++ b/docs/html/interface_8c__incl.md5 @@ -0,0 +1 @@ +8edae7e960b28841eda5ff8e5606de40 \ No newline at end of file diff --git a/docs/html/interface_8c__incl.png b/docs/html/interface_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..379a39c4ea4312a78678f127538937bfac92209f GIT binary patch literal 1522 zcmVA#!cNZ5IkB^VPzrWMd z(*OVf|NsAns7S&90004WQchC*_{tIAEdL zuG33O_YS5*4lo98`%0NE9Bz9-t|dN7s%=`;sLDWUno16Bit}*Ke#sDRAs~S7p_8KqO5+9|Zuk{+iC4!r! zLKf!EQo^5G5s>+-uc}&&=Q#EbPlG5a>4%#7-!$lxY3OC!zELu(rD>j&aGBw7*E@^` zQBtz!k~>!Fx_P5io0F#=Dd}T;kgCVwu6JmiL6nqQ{n)}Cr>oTGay7hA8Y+WHKf8wK zTGEfQw(fBFV0&S#Yl)B2xnfF8i76#ai6*8*5mTawDN)3fC}K(!5q>HA*xwM_?{>HK zIMni6ddvWrYx-$Uv&GXJe?#-7?`i!3Efl`5IdUzYHH+;($Z5IcBR!F7rQl;-F>0;c zqkXYy{e)TX{25Lgh5B{JqOCH0`(x1dmhm5Odl4$!9uoQCL@F=Tn7fKr8);O$n241H zWO+kT>!QMpk`uY8@B{B7dP!%Dyoq)cbk5KlXxABX*4V3SUoE>vM{|bnE#%zc7uD`6 z_6Ed&X@3o;W4)Y?92*C?-kZ~**&hkIGp1v6{}|e9=-|u`vb`y%qtpI$+&6XnwLKnq zJ5C-G{!ZvO1!{lag8$!j4!Mjf~CNdGZ;t^|Kdm&WvX`F7mK z8`5(Q*TaQ{`M+ZcLCH?T*X0Dklmg5u1f&FJ62d01!qgVfDG=?T3OJ`wP8Y-!AH?PS!CV|EGcg1c~!g#PZEAqLPFw49zjS_}| zwVNy6CgxUO!#*io?`E#)j*}XAA|*@{Z}hPQ=Gcg7RN_AK$c{sg8-9dC*P&9QO1mh#+<@t|bl|65&4 z-jwWIM@n|Z=*^Lo*;vUAO7@r$FlW4xc1vKRJ29l$&GLD69i=p$ONA(B&ZSx3y_D=+ z9VLB=Cz<&Y(CjKH=#pOVd?@EKQ5pK)2T;Jb$s z&K%}Ct|k3YD(D}riIMs*q;0wa2AWjV% + + + +server: src/interface.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface.c

+
+
+Go to the documentation of this file.
00001 #include <sys/types.h>
+00002 #include <stdlib.h>
+00003 
+00004 #include "interface.h"
+00005 
+00006 #ifndef TRUE
+00007 #define TRUE    1
+00008 #endif // TRUE
+00009 
+00010 static
+00011 inline
+00012 int
+00013 comp(const void * _a, const void * _b)
+00014 {
+00015         const struct interface * a = **(const struct interface ***)_a;
+00016         const struct interface * b = **(const struct interface ***)_b;
+00017     return ((a)<(b))? -1 : ((a)>(b))? 1 : 0;
+00018 }
+00019 
+00024 struct interface *
+00025 interfaceGet(iface_impl_ptr iface_impl, const iface_ptr _iface)
+00026 {
+00027         const iface_ptr * iface = &_iface;
+00028         void *            dummy;
+00029 
+00030     if (! iface_impl->simpl) {
+00031         qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+00032         iface_impl->simpl=TRUE;
+00033     }
+00034 
+00035     dummy = bsearch(
+00036                         &iface,
+00037                         iface_impl->impl,
+00038                         iface_impl->nimpl,
+00039                         sizeof(iface_ptr),
+00040                         comp);
+00041 
+00042         return dummy? *(struct interface **)dummy : dummy;
+00043 }
+00044 
+00045 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_8h.html b/docs/html/interface_8h.html new file mode 100644 index 0000000..5b17cd1 --- /dev/null +++ b/docs/html/interface_8h.html @@ -0,0 +1,382 @@ + + + + +server: include/interface.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface.h File Reference

+
+
+
#include <sys/types.h>
+
+Include dependency graph for interface.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Data Structures

struct  interface
struct  iface_impl

+Defines

#define MAX_IFACE   32
#define IFACE(name)   ((const struct i_##name const*)&i_##name##_impl)
#define INIT_IFACE(name,...)   static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
#define NUMARGS(...)   (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
#define INIT_IMPL(...)   {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}
#define CREATE_IMPL(...)   static struct iface_impl iface_impl = INIT_IMPL(__VA_ARGS__)
#define METHOD_GET(iface, method)   (iface->method)

+Typedefs

typedef struct interfaceiface_ptr
typedef struct iface_impliface_impl_ptr

+Functions

struct interfaceinterfaceGet (iface_impl_ptr, const iface_ptr)
+

Define Documentation

+ +
+
+ + + + + + + + +
#define CREATE_IMPL( ...)   static struct iface_impl iface_impl = INIT_IMPL(__VA_ARGS__)
+
+
+ +

Definition at line 16 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + +
#define IFACE( name)   ((const struct i_##name const*)&i_##name##_impl)
+
+
+ +

Definition at line 8 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define INIT_IFACE( name,
 ... 
)   static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
+
+
+ +

Definition at line 10 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + +
#define INIT_IMPL( ...)   {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}
+
+
+ +

Definition at line 15 of file interface.h.

+ +
+
+ +
+
+ + + + +
#define MAX_IFACE   32
+
+
+ +

Definition at line 6 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define METHOD_GET( iface,
 method 
)   (iface->method)
+
+
+ +

Definition at line 19 of file interface.h.

+ +
+
+ +
+
+ + + + + + + + +
#define NUMARGS( ...)   (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
+
+
+ +

Definition at line 13 of file interface.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct iface_impl* iface_impl_ptr
+
+
+ +

Definition at line 33 of file interface.h.

+ +
+
+ +
+
+ + + + +
typedef struct interface* iface_ptr
+
+
+ +

Definition at line 26 of file interface.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
struct interface* interfaceGet (iface_impl_ptr iface_impl,
const iface_ptr _iface 
) [read]
+
+
+

this one is important in selector functions to get the correct interface implementation of a class.

+ +

Definition at line 25 of file interface.c.

+
{
+        const iface_ptr * iface = &_iface;
+        void *            dummy;
+
+    if (! iface_impl->simpl) {
+        qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), comp);
+        iface_impl->simpl=TRUE;
+    }
+
+    dummy = bsearch(
+                        &iface,
+                        iface_impl->impl,
+                        iface_impl->nimpl,
+                        sizeof(iface_ptr),
+                        comp);
+
+        return dummy? *(struct interface **)dummy : dummy;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/interface_8h__dep__incl.map b/docs/html/interface_8h__dep__incl.map new file mode 100644 index 0000000..33f25c1 --- /dev/null +++ b/docs/html/interface_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/interface_8h__dep__incl.md5 b/docs/html/interface_8h__dep__incl.md5 new file mode 100644 index 0000000..b1baac0 --- /dev/null +++ b/docs/html/interface_8h__dep__incl.md5 @@ -0,0 +1 @@ +418c7896641110a6113b21204b897600 \ No newline at end of file diff --git a/docs/html/interface_8h__dep__incl.png b/docs/html/interface_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..9840e91decafdfb138523b23ad143c7204d7e534 GIT binary patch literal 2660 zcmb7``8U*!9>)h+lbx|W7$StJN7BLwQ^+ur?P;55a4jX0lqFwA3R$91wqZg-3Rx44 z-6+e%)MFWDEW=c`8Dp7|X71c`?)?MqIiGXhuXEn#{rUX({-mH>9S%sTOMyV315S=` zH-XYXAR)Abh=3Xm9is(u5{2+M%j5Ia)Na|>*bq88w6(R1@pvp2OQq4EP-tdmrh|h6 z7z~b#jKp9t6%`d79UWvcSrFy(`2+5dP5}wsadUMComrX)0D&YYo#3_}QMlEjl&mrx zxg-m%gBK879<=Rhz&D8m-0CK#X+gq;j6ogC*z{7CO0+9M$yJ1r1vgy!y#?=D*GwCWJyoXk_m|)ya0iq%K-h40hy>Dpirf zc$XUWOUwfk7+8JFf3+ z_8dA)0D?=oU%2|eO`7oUlwdG)DmPp7Wczb&Hh&{PvGo0^HyjwLe4fvFCm9aNj*%R` z#jTpN78N!i+W(!zCAR14D#RGy@^f0K*Aq?CkmGt+6D+-dgE=>)qrwThq0AW-IqsS2 zn)L%wk+2$#GD(Pb@c%nqb8PJB`<2|R?1&Vgt_=>GK+16#M<5?&^PFF{{}J&VaRsKUn`Qf! z1GhD=E)0v?t$M%6;=TxODPcbls(O6OMQZUzG;WYJxze907ZGKwC<#rjs_GrBJl=h` z3Ye#tCe&6NHhiBthr{OJu`3Sc2)e4JCy5tAvfs(F?%W-kvkyX=1hMu<1Yhi__=_96zoCNmvJP< zfj{5)eEl6OI#TbjpzdP5@6ofOtx1Ki?u0D0Wwt8vwbY@;Zn7B0ifRmZ|GoH+==X!2 z*~~OzgUI`7tCow`;uiF7IEyNUP2#-8z@_y=kT;fv_GxUzm1!rlqGbAQAw!uj1_8PI z&-lbQ&rKwwm0sLEB6A^Eprx^3v%$9Qn>uMWQ(e%-iWN~$=T`n(S>1YRjgIL z@GI4f^!V%N^fbI*cMa^z3pUwc>PuUQdyhGiMGRz)S$J=pAPWabnCp8#H&hg+;-KzN zK7m3#jDvPgz_x9Iq}gV=_3q^?b`Oc-!Vim_y{&Cl948L(e92wBrZDM8Wkk| zLIgkkkD#ty0FApMsm&Jc|HQN|zLC@y`+IxmqaKKg3tg7yCM+XaqT#fVhE;>$fG3S&rrw#ozD@ z-5Ek}Gp0M2Gy>!JPnbA6?KINPvu88LRkzY!ouB=Mej9y=Q1-1-2>d>f_bt?-RYMGET10+-I3|XU@OybPHJ9nVtH8|^4eH*-5okRe%QW>V^y4a&q$uOMWhs; z?}_BrDuOAAo8EKZZy%zLiuRaCf1o)5k#au0r1TJb!L~Z~vUFj)NHMS*@K?6r zkiN_*i@4JJd+-8*0Vd31^IHp)7H0R#etMuQ`s#+$o<1k(8i^qxy$-9Vu_HmeHxo68 zvnRpCle>s#Zt={eIOMT^$hl%cKb<`jJZAvMyXOTE?&JV znM(?)*_R$DBB8#{JQa4BAkuxgO~j+gr^Sy@4LyA$ZU^{vQW!Hv9ou;X)Wrze(3Z}mu59?p^3#kfR{prqxESs_ z3vre}ij6km?zwxM^j~-EWZ*jOpUc^HUM9y~q33+mOKk>fB&|GBtSr=Ux9W^<4`#^O zI{-40R(>fDuTN!U*QR}@hda&MJ~PU7Jl0@*dzdQ!KYzX~s6nYUVEs`^M>sZuq$Q}I wOhNrP2 + diff --git a/docs/html/interface_8h__incl.md5 b/docs/html/interface_8h__incl.md5 new file mode 100644 index 0000000..317c66c --- /dev/null +++ b/docs/html/interface_8h__incl.md5 @@ -0,0 +1 @@ +ce2fcdb53a96d7c44bdb8ad01b08694f \ No newline at end of file diff --git a/docs/html/interface_8h__incl.png b/docs/html/interface_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..80ea6c2a00d5c5d3a550e9b6eaca1f9adde9e78d GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^y+B;b!3-o_949>nQkDTeA+G=a|Cf|3u(!9budly% z|NgxB^X28`_wC=Wudmv#lCD!0AN{@mjoICVnAjk{D--9w`meN+ z-(>!U8D6SR8zR=+Uw5M+%;fXqB&lUT*P0|ce>=vPCLMEf&+fw#eV2Y5Ht}0Osrl}b zx9Wcy(pH`MVxtO+xSI)WBPdUcI{^eeq!B5fN?Rp1HHk)f2Si74{>E^O^NR)1}mF%CdQB z+au>&^&Z>0g->VuB2T^*Mz<&ARhzX;*lftie8b3N@)?O0ew~-DRBewgoz<{&%DzR8 z?QIrXTYW#KNpT5yR9(EB^61j}%7~Y<^Djm0V2myE%D<+@^1RGMq~hWQp@6wUf2Xj0 zzpc=F_;~wfso%$zuoZ&|r*}7#30?#vBrruhV`8-&-)cS1g{=_<$ z;;(P#YMn6==ijx~;PM;^mA?~>0{`)xHSoI1=d1ptvEKfUgYl{rZ1c<1`cfXa9ds=_ zWuY}yuX^b(qlOGN(cjsbj}+Kv@Rzx#GV8T(F}tamtnU8c#oj5g`=2aXI9K9d-2BZZ zM&DM>lVUwHh4-QAyO2V!B|#s|%Dnpy92L2KspI1DJdt~km!vq{R^YYV*!*DWpXqAP zIh1zJa$E9L?&<~IV+I1eme;eDQ%~;fRNLNo=$y)7??sB~FQw=II<~*+wV0HJ_yzex z$EQyW^DHs6R+W*p37&WF6T^WWjcTj^U%xCq*L|Li_+<~%cb8B6{A{xL)%VDom2Zq+ yd(B#X#6(;?ZB{q?-LM^ovzG1qxhdj*=RXF;8!tXI`74966@#a%pUXO@geCx@rJsBN literal 0 HcmV?d00001 diff --git a/docs/html/interface_8h_source.html b/docs/html/interface_8h_source.html new file mode 100644 index 0000000..3d94f13 --- /dev/null +++ b/docs/html/interface_8h_source.html @@ -0,0 +1,149 @@ + + + + +server: include/interface.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface.h

+
+
+Go to the documentation of this file.
00001 #ifndef __INTERFACE_H__
+00002 #define __INTERFACE_H__
+00003 
+00004 #include <sys/types.h>
+00005 
+00006 #define MAX_IFACE       32      // ATTENTION: every iface_impl will use MAX_IFACE * sizeof(void*)
+00007 
+00008 #define IFACE(name)             ((const struct i_##name const*)&i_##name##_impl)
+00009 
+00010 #define INIT_IFACE(name,...) \
+00011         static const struct i_##name i_##name##_impl = {&i_##name,__VA_ARGS__}
+00012 
+00013 #define NUMARGS(...)    (sizeof((const void*[]){__VA_ARGS__})/sizeof(void*))
+00014 
+00015 #define INIT_IMPL(...)  {NUMARGS(__VA_ARGS__), 0, {__VA_ARGS__}}
+00016 #define CREATE_IMPL(...) \
+00017         static struct iface_impl iface_impl = INIT_IMPL(__VA_ARGS__)
+00018 
+00019 #define METHOD_GET(iface,method)        (iface->method)
+00020 
+00021 
+00022 struct interface {
+00023         const char * name;
+00024         const size_t nmethods;
+00025 };
+00026 typedef const struct interface * iface_ptr;
+00027 
+00028 struct iface_impl {
+00029         const size_t nimpl;           // number of interface implementations
+00030         char         simpl;           // implementations sorted??
+00031         const void * impl[MAX_IFACE]; // implementations
+00032 };
+00033 typedef struct iface_impl * iface_impl_ptr;
+00034 
+00035 extern struct interface * interfaceGet(iface_impl_ptr, const iface_ptr);
+00036 
+00037 #endif // __INTERFACE_H__
+00038 
+00039 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..c052173 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,54 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); +/* + * jQuery UI 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/* * jQuery UI Resizable 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * ui.core.js + */ +(function(c){c.widget("ui.resizable",c.extend({},c.ui.mouse,{_init:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f
');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.parent().append(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).end().remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement)},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return this.options.disabled||!!f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidthk.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}));c.extend(c.ui.resizable,{version:"1.7.2",eventPrefix:"resize",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input,option",containment:false,delay:0,distance:1,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000}});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),g=d.options;_store=function(h){c(h).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(g.alsoResize)=="object"&&!g.alsoResize.parentNode){if(g.alsoResize.length){g.alsoResize=g.alsoResize[0];_store(g.alsoResize)}else{c.each(g.alsoResize,function(h,i){_store(h)})}}else{_store(g.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)) +{s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);; +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com + * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php). + * Date: 2/8/2008 + * @author Ariel Flesler + * @version 1.3.2 + */ +;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + diff --git a/docs/html/listen_8c.html b/docs/html/listen_8c.html new file mode 100644 index 0000000..c4ed88d --- /dev/null +++ b/docs/html/listen_8c.html @@ -0,0 +1,189 @@ + + + + +server: src/socket/listen.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket/listen.c File Reference

+
+
+
#include <stdlib.h>
+#include <errno.h>
+#include "socket.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+
+Include dependency graph for listen.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

void socketListen (Sock this, int backlog)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketListen (Sock this,
int backlog 
)
+
+
+ +

Definition at line 10 of file listen.c.

+
{
+    (this->addr).sin_family      = AF_INET;           /* Internet address family */
+    (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+    (this->addr).sin_port        = htons(this->port); /* Local port */
+
+    /* Bind to the local address */
+    if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+
+    /* Mark the socket so it will listen for incoming connections */
+    if (-1 == listen(this->handle, backlog)) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/listen_8c__incl.map b/docs/html/listen_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/listen_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/listen_8c__incl.md5 b/docs/html/listen_8c__incl.md5 new file mode 100644 index 0000000..41d4b44 --- /dev/null +++ b/docs/html/listen_8c__incl.md5 @@ -0,0 +1 @@ +6cf723d16c4a55e23f06ca7cd5ee39ed \ No newline at end of file diff --git a/docs/html/listen_8c__incl.png b/docs/html/listen_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..975c2e9eed017dc70f01cfb1a8f819fb17314f49 GIT binary patch literal 2305 zcmV+c3I6tpP)7YiaKgjGKR-Wze}CTJ-=3eJA0HpSzrT`_k}oeWM@L6rUtg!Er+0UE7Z(?gkB`5< zzthvx00030|Nn^wV(I_@00DGTPE!Ct=GbNc00?bKL_t(|ob6qQcB?oPWWA=X4R$#C z|8HG&s!*pSGv~z^A&o9~#wz&bq$mIY000000000005}KaY@D3{zzQ;)3wY%EfJXou z;1R$Ecm%Kk9sz8CM*ti4J<`9oi#J;J@1AUx!y~uHzN()e2aoh$QI&e6o0q{OzXJOn zd2JUjJVHd(X{qyw0*_oDQ!RhKqh+)L zpOwU1BkJ=qd7XUtVHi|%c;sG~dW3xX57qg_EYkO{Zuop;;V`^kegExbIrT#Kq853p zvw>9=9uf6Qkj8<5L7r-O;!fbx%diF|R_{i}Y_>j?Yd08nP4@5aFDW{w3VSt<@bZC=7e9QQ=*8-URh1s$_4PQ?_Y;rE z=J3e9u(2Ld3x_vfUar?8Z@Fe2-fw;O?uYeyL|&I3`6ya=ZT(v{{* z7f$vyMDA+_dP>Wf;xEEyCE*cS|HVzhuS<`xgJ=$q+zWUX57+>Y05-rQfDP~nU;{h? z*Z_|JHozl*4e$tH13UuQVEZ+?$76B6yuR7Ul?}hAcYiz{%Ys!6w|0{&#!J8rv6geK zuSxM8C%`4Y1{+dth`Tdj>`}ue_s6D+Tf*)+!Mg+CKG@dJy>ORiav3(cD-6>4l)7Ez zHi1v>2a{-i#WuEC75L;dV+UTrz$aIOMUuGP?bwNHII=oyavfM7bXl6acjR1C z^$eR_0?`)m(9vIV%sS`8s({1JHf49)jo_2>V9&jSIG)Q4ui9fX_~Z;YWZg*@Pwm3B zhEI-#Q@Y(0@zyOyY53$QxaB#+gAcF%&8=aR%y3Py^K*}&AVL~Vn!_gf;GA4{5yI4p z78$cn9%KUjluz9l4K=}M5~fkSJ=c8-uVi7XzJf2 z1I3IEHgSf(LxR4#4``EvV@?R4I3OTNflo|>TIC>Fa>6FN2uV-qf9(iswq(hoCv0NG zp>swm6*8%bS!WAjIXU-{dQze_Gi)+LU^*h6s0X)PF=bQ|Hc<%9M8tnH6$op;=1aq4 zAcs#Pb~3?hk;ER!?2^AeoCNJ;WTTj`Zqr&MDi}xpKWdY}`xffP{vYJjWB4O>baUw8 zPuOH~li`byczrWiq);x&s^lM7oQyXZajPlx&EgS$SNT=^-8NDAi@M7s^F$_(WF%hp zvM9*i<576TFCFLlJa*Jk}++OpXQO%ToU`Y=SLk-%t@d!%hh zQ`4WKC>!#u^;}aojT}PhTT+^+%;ja%u<@vE{-HlDW1;7CB;<#1ULLQep`COU%SqW( zvP*t1q5PCe1}am+W2QIoWvA_vjJ>L>e5%oLs45~%@#+`Ne69(JhUq8sLpy!8L>(rg zw6>6@(UH31#-PpXir$m*$djH30`e^Cx#e86ENRZ3CFN<^4`u0CKSlSfswiF_ucD#O z;GGoZvl_cpH3RsWDk4yx5>8l%n<(@>h+fszqOQj{R23Pfc=d~B;gNu7DxIIYX_=<- zFcrlb(kzU!5@Q!P{5XzO%!K0Z+U2n1q9yxWx6g{-Up2DC@``vB4U4&|X&L8HUCOE< z{7e+;P)+4wDvC9v+1TAl zU-H`RbYCO0%|90YpLY(PHZror^Xhn2D%hLnvzv7p%r7~m41%!GH__65q|bGCd^w`x z&{ag3^3^Yzg+~ISk&8-|pNh!CGDEu|&2r8h_V4aE5~L-wY*j5iQbhB%B1ri;p=WK$ z<87y12J_EV5rm^E@`ERORafcYKE|Oxn<7l{>KBdCBhJz6k0WD-oIRq~BXZJOtVill zEju>#bt{jk^++)9dOgyK)zq|0MxVeVf>5i%j99WC-mAJQ){C-dRb{>&@ruUi5$9;k z>ya@-){v&ru{}*&Jc-!Xw9|b}S?G_xzm`SEHbyIts0DX0uZVZt*ATIvDA+0QlHZHs z4)+MB5rq0C=&qpd8riGvu9(K5s)#Vft6wym9`TB1vajKqHtH}D#TwF8pPA!Xytz0C zEptHqln1YnuBs(GVlECsNk_4^spY{dq^oKPkC=l@|M{Iyc;1L_(5qQJ~cmy7?0Um)zY?yi^-LL%3ySOUvQT!>QIVqUEkN^Mx00000 b;9B?}QwNIuMhKk000000NkvXXu0mjfa&%@3 literal 0 HcmV?d00001 diff --git a/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map b/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map new file mode 100644 index 0000000..2fd1014 --- /dev/null +++ b/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..8831f43 --- /dev/null +++ b/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +8abcb500cd410e634be8b7931a7e0a32 \ No newline at end of file diff --git a/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png b/docs/html/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..41e24ebc8b97709a38f5f5a8b63c46596a18e6da GIT binary patch literal 655 zcmV;A0&x9_P)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0t87!K~!jg?U(D4!XONVD{Y~WQYP>JvKvUS7ppFI zyXp+*he&eh@R`8arm3o`s``B4*?RwmmJbi-s+_iTLCFIvZKbWWmA2BpytzM70WI9- z5$+`ZoYwqiF`Bbz!OygA6+A+FxqK)sUTN=HUZTA$fd7ql^619^*85mE=e>o9;yk38 z3zT1WGW%1|@fsX?ET_Hlu4#?ax~H$L#!g`#nm$DhDy=fDIJ4t9Esii^umb>XnHXVk z1m%VZYh|{iWq9 zeW0oZ7%7%^AIm!pYg+NgAg3ueZ9Bb)HUh6{BTK6r-O{v085&Jd)luHeoy^YccupH8 zi^G(N=p#c7gN>U`+SE4rxynhLThm^OwWLiaSDLEe-2Tnnu@v*S0kR8%68+R|)t zse}_34`551{JFLOd$gz3)|eG-d2Mgct>s%P1Z(q*x)p%I=X1;HqqN)2-95K1o?9oh z%8<&>Emah$qVt`Md?$xEr6AD^xNK_nry!?~(C%z*aVPijs?~XDDC(qR^BcQ3v*S7K z89MUsVwQ^S+IBKLc-D^N!)VvqUC?XQDBa5NVD*mU`)Ff>N}s02euTSqd?D=tRoY5h pX)Em)(Vng1&AojGRaI3Vq93k9w- + + + +server: src/socket/listen.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket/listen.c

+
+
+Go to the documentation of this file.
00001 #include <stdlib.h>     /* for atoi() and exit() */
+00002 #include <errno.h>      /* for errno */
+00003 
+00004 #include "socket.h"
+00005 #include "interface/class.h"
+00006 #include "interface/logger.h"
+00007 
+00008 
+00009 void
+00010 socketListen(Sock this, int backlog)
+00011 {
+00012     (this->addr).sin_family      = AF_INET;           /* Internet address family */
+00013     (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+00014     (this->addr).sin_port        = htons(this->port); /* Local port */
+00015 
+00016     /* Bind to the local address */
+00017     if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+00018         loggerLog(this->log, LOGGER_CRIT,
+00019                 "error binding socket: %s - service terminated",
+00020                 strerror(errno));
+00021         exit(EXIT_FAILURE);
+00022     }
+00023 
+00024     /* Mark the socket so it will listen for incoming connections */
+00025     if (-1 == listen(this->handle, backlog)) {
+00026         loggerLog(this->log, LOGGER_CRIT,
+00027                 "error binding socket: %s - service terminated",
+00028                 strerror(errno));
+00029         exit(EXIT_FAILURE);
+00030     }
+00031 }
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/logger_8c.html b/docs/html/logger_8c.html new file mode 100644 index 0000000..fc0ba92 --- /dev/null +++ b/docs/html/logger_8c.html @@ -0,0 +1,232 @@ + + + + +server: src/logger.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger.c File Reference

+
+
+
#include <stdarg.h>
+#include "logger.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+
+Include dependency graph for logger.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, NULL)
 CREATE_CLASS (Logger, NULL, IFACE(Class))

+Variables

const char *const logger_level_str []
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Logger ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
NULL  
)
+
+
+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const char* const logger_level_str[]
+
+
+Initial value:
 {
+        "DEBUG",
+        "INFO",
+        "NOTICE",
+        "WARNING",
+        "ERR",
+        "CRIT",
+        "ALERT",
+        "EMERG"
+}
+
+

Definition at line 9 of file logger.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/logger_8c__incl.map b/docs/html/logger_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/logger_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/logger_8c__incl.md5 b/docs/html/logger_8c__incl.md5 new file mode 100644 index 0000000..3036892 --- /dev/null +++ b/docs/html/logger_8c__incl.md5 @@ -0,0 +1 @@ +14c6cdc7c9053f4e10b4cedf828e0f80 \ No newline at end of file diff --git a/docs/html/logger_8c__incl.png b/docs/html/logger_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3db613949b60c2792b037b10c6ac0e0bfc237757 GIT binary patch literal 1960 zcmV;Z2UqxsP)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCiE^Vl5Jlm!KAXjq{{LS` zD<(1mt$^{pRk0l*x?A^vBr>TODyvEnmjpMVY6D_CN zKgY47$A^(TUPQgIKD1TzpX3>!d9D^T$H2JzJGMnFmRgBN8eL$!}#hcaQQZM zPu_?3pVS$kd9L0xd(!pnmA;Gv{V+`I_N2#I%P{iBX&~}#8fok6A^Oi}fabYc&a_W@ zpYerK5TeT_qsd$73vcX+e4E5i*44sF{?4+Xd5)Ge***6^YhWwks~d)C=icmlMN^ys znkVaX-BhdK^Vv@u>*kZKn_`4a)NTqh-C{Mg;RQ=t!-AFrnE( z2A&ttDg+;zxIs_Xy8jz9>TWy$Jxd1bH|JB|pio+wY~Ptq{R2bEWVC#DG7Sk1C6Uo? zi>cHqK6oCc4X-27#D?f7ZP{!!kJ={!(8StyI4aEyK+|f+Ts!OC00C$s?fGhJyDJ_5 zjjw%6Q_-|a4mrrePJ6?B(12$&*;whcyYVXmKqJV?MaR8O!b+eG**WOEv+<~ep9i1; zvNX@#Vt**$=_y;|ytXwS=crQw)Lqt|`FR^e1V9~?_K72qW`-HpMGjth?`S;Fdj|ke zE4kPdu%Gch^Bn>__vB{LsWicJM~?P{m>CBICS0SOojIRoh8uKU?yiK{7!Lw&P+cB| z1V3g3p8qEnfWGD9MYw%&0puXc<>$iHX!3|Z57g6u7`COb{-=TZjy=)?MwBQYQGb-D z_qb#EmB{yBm@re@^fNR z*YD5Me}p-IM2}4~Px|10Z=ONxWeVey1l1BGjDCXV;e-t=kMDe*Am&<@wDAv>aw~99 zc^=*S1R;%y{(PG_T|z0d!hg9cw)gQPZYNv$_-&GIg%9AH@69>goc54}(G}0GB*q^~ zQ{+p(@k*w67k?_-55{@?1r$;7=CWiCoJI5dct+f3Bpm)(G`|dIo<}P^?bwf9IlmKU z%&L<=5hjlRPIMa1u>UQcRm(pliLR6~cEV~D&I3y_ad4B7X2RfcDtFeks?lcTCMuZFSO%(Onmm<r zwPwqR{DPN<%7!<~qgh?c7S>005f;c-!&t3odK6obp3SWwOd ze3oNH)1w%pL9&yTLCcx8lNS*0+_IUr=wubVNlxwjB6g=K218UR6;b|mOtoy-2iIs; zvw@3PNt0a)|1Iv#L{JtWD7S;Uhv$4O1v7%ainQo%=W!mRjxGWbyLpRbluHL z`n71HAN*;qFAE)86*`e*uUJ#_Ujr8r#g`ZcU#dEFRBS=mN4EWtUH-0{>*YAov@XWH zZi-G;1}%zX``I=th}hH8nU?OQ>aG#j6mM#HAYYnl%O*pqh_toK=IK0;CNKXTQI^h! z!4fjt#8Liy!dt|?PjnF$h*v{74m6#LF&iX0Ss7&c6RDP+Ul*psE`tf2fyu4 z_5uvDtfHhBYpWi@w&Lx#%TPNJ_k-V-W`IGqRnXhMDUC;+e(EkmZAaV>ep{LW2I1dO z9CfW~wA`TSsB2ZDB|#7bK@bG}fc^on6dM(!Z0aWf0000 + + + +server: src/logger.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger.c

+
+
+Go to the documentation of this file.
00001 #include <stdarg.h>
+00002 
+00003 #include "logger.h"
+00004 #include "interface/class.h"
+00005 #include "interface/logger.h"
+00006 
+00007 const
+00008 char * const
+00009 logger_level_str[] = {
+00010         "DEBUG",
+00011         "INFO",
+00012         "NOTICE",
+00013         "WARNING",
+00014         "ERR",
+00015         "CRIT",
+00016         "ALERT",
+00017         "EMERG"
+00018 };
+00019 
+00020 static
+00021 void
+00022 ctor(void * _this, va_list * params)
+00023 {
+00024         Logger this = _this;
+00025         this->min_level = va_arg(*params, int);
+00026 }
+00027 
+00028 static void dtor(void * _this) {}
+00029 
+00030 INIT_IFACE(Class, ctor, dtor, NULL);
+00031 CREATE_CLASS(Logger, NULL, IFACE(Class));
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/logger_8h.html b/docs/html/logger_8h.html new file mode 100644 index 0000000..80e5b70 --- /dev/null +++ b/docs/html/logger_8h.html @@ -0,0 +1,235 @@ + + + + +server: include/logger.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/logger.h File Reference

+
+
+
#include "class.h"
+
+Include dependency graph for logger.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Data Structures

struct  Logger
struct  LoggerStderr
struct  LoggerSyslog

+Typedefs

typedef enum logger_level logger_level

+Enumerations

enum  logger_level {
+  LOGGER_DEBUG = 0, +LOGGER_INFO, +LOGGER_NOTICE, +LOGGER_WARNING, +
+  LOGGER_ERR, +LOGGER_CRIT, +LOGGER_ALERT, +LOGGER_EMERG +
+ }

+Variables

const char *const logger_level_str []
+

Typedef Documentation

+ +
+
+ + + + +
typedef enum logger_level logger_level
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum logger_level
+
+
+
Enumerator:
+ + + + + + + + +
LOGGER_DEBUG  +
LOGGER_INFO  +
LOGGER_NOTICE  +
LOGGER_WARNING  +
LOGGER_ERR  +
LOGGER_CRIT  +
LOGGER_ALERT  +
LOGGER_EMERG  +
+
+
+ +

Definition at line 6 of file logger.h.

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
const char* const logger_level_str[]
+
+
+ +

Definition at line 9 of file logger.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/logger_8h__dep__incl.map b/docs/html/logger_8h__dep__incl.map new file mode 100644 index 0000000..596ed72 --- /dev/null +++ b/docs/html/logger_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/logger_8h__dep__incl.md5 b/docs/html/logger_8h__dep__incl.md5 new file mode 100644 index 0000000..89107c6 --- /dev/null +++ b/docs/html/logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +f5539c413e54a1366d8c5375fba84b49 \ No newline at end of file diff --git a/docs/html/logger_8h__dep__incl.png b/docs/html/logger_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..22eac47ba0aac1fcc000b5555b9a3abe15b46405 GIT binary patch literal 1413 zcmV;01$z34P))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|HxAzzyJUM0d!JMQvg8b*k%9#1o}xtK~#90?c3{it11uxV7w9)aPj^xdl)XQTB9N& zu+Pko8UdXzgw4us9YQcLFfjh#A>WTM@BDV47rp2$&nq_cgL5%%JHP8hG%vsGWkUwu zZ5((%e>xL*6+yCTf?4L%GzxVNDlOxa{4l9II4lR#Gn&y%bq>-U+!#4b1L#yUkLDc( zQxn1`AwGQJD4~n_TB+jIc<1%Sc|KZ*K0t@ahKjS)1=GYWccOcab{UgB#-(xV>dm zFD$<%qSVzd|rJpUkfiuX^?R9krLuqnzCmokv)k>c@Pre$5y?fW72}?LhAjGndog z_6K;Oc7zd@!)kxfos&D5F+U$bJn!8YK*K)va6Ue@m#gJIOw1ng_rgMebzu+rdp!fa z=tXZaUf-zF{(i?ds%m}uYI5(Ws;xI`@EY{niY%@J->nH-YCQs>RP$J7}}@?zC4&y~*MPl$-a=gWjMx z=i~)0%zFis5%?0NG;coOi;!HrR~@B!GXY;$p!Y`jATj`Z5zy-!euCs)UqEVbVP5a_ z=#88`CHPKm^hQpd416;&dgJCT&6@~(KP!6UCQacD%9#LMm^Un=-_^m-ssumb;_3Ao z{ZybgZj|ix1EbeF>s>G1*bmMr-@V!P3YUW(WDW54$JrO>U9)?$^%b;rIpTPav#-wU zD_8uS#hPD9WY@MZ%YEB&s?H&$PTRM#?xgPM&2ng3*>>(7vU1lp0`jbgk^a zWexLk+DXVqY27cpecMq5Bt3@?(sh8K@CJBIY1^9%U}#@cH|lqOYtpUf_%UyzKRrEh z-NFkEDko8MN1B@GsqD1?9O^^S7eFJN+fl#XX1gXH^HP0hbMu8)H#E|IJJQRy;j(Uw ziAt-XvaY%N4z*stQN692kjAZtW;4H(!g3%D(I2v%Uwwgjhm9TeqE|0RuCsT9OAs}B z{c>2D>Id0dzuYc$JIZ*wH@vVN=>388vTfY{058;Tz|C%^{>{Uz{_GFZ?hizr>QQRf zlfTvo-WLPCaRa?^1HEyhmu)diTVeGL7EPzsJCArh3c5^-!8L6M?_}BZj@PH4i`$_Py3lXY zbfKE-5wAxMIC7CHPJ T_v7Q500000NkvXXu0mjf6!*x3 literal 0 HcmV?d00001 diff --git a/docs/html/logger_8h__incl.map b/docs/html/logger_8h__incl.map new file mode 100644 index 0000000..e430c8d --- /dev/null +++ b/docs/html/logger_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/logger_8h__incl.md5 b/docs/html/logger_8h__incl.md5 new file mode 100644 index 0000000..78417cc --- /dev/null +++ b/docs/html/logger_8h__incl.md5 @@ -0,0 +1 @@ +d7c08b53f2bdcca8562994ce1eca44f6 \ No newline at end of file diff --git a/docs/html/logger_8h__incl.png b/docs/html/logger_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..004f2f377c752631d9d006b6b318725ae5e0a2c9 GIT binary patch literal 3031 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 T2)v3&`lDb1vM{XCcYpW~jETY8 literal 0 HcmV?d00001 diff --git a/docs/html/logger_8h_source.html b/docs/html/logger_8h_source.html new file mode 100644 index 0000000..04d1d80 --- /dev/null +++ b/docs/html/logger_8h_source.html @@ -0,0 +1,143 @@ + + + + +server: include/logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/logger.h

+
+
+Go to the documentation of this file.
00001 #ifndef __LOGGER_H__
+00002 #define __LOGGER_H__
+00003 
+00004 #include "class.h"
+00005 
+00006 typedef enum logger_level {
+00007         LOGGER_DEBUG=0,
+00008         LOGGER_INFO,
+00009         LOGGER_NOTICE,
+00010         LOGGER_WARNING,
+00011         LOGGER_ERR,
+00012         LOGGER_CRIT,
+00013         LOGGER_ALERT,
+00014         LOGGER_EMERG
+00015 } logger_level;
+00016 
+00017 extern const char * const logger_level_str[];
+00018 
+00019 CLASS(Logger) {
+00020         logger_level min_level;
+00021 };
+00022 
+00023 CLASS(LoggerStderr) {
+00024         EXTENDS(Logger);
+00025 };
+00026 
+00027 CLASS(LoggerSyslog) {
+00028         EXTENDS(Logger);
+00029 };
+00030 
+00031 #endif // __LOGGER_H__
+00032 
+00033 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..1b07a16207e67c95fe2ee17e7016e6d08ac7ac99 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQfZzpjv*C{Z|{2YIT`Y>1X`Eg z-tTbne1`SITM8Q!Pb(<)UFZ(m>wMzvKZQqKM~~GcZ=A7j<~E6K62>ozFS=cD3)mf8 z9WX0+R&m(l9KUsLdTx4?9~({T__KA%`}olPJ^N;y|F^pHgs_K%!rj~{8>RwnWbkzL Kb6Mw<&;$VTdq1fF literal 0 HcmV?d00001 diff --git a/docs/html/nav_h.png b/docs/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..01f5fa6a596e36bd12c2d6ceff1b0169fda7e699 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t1`SUa$B+ufw|6&kG8phMJMJ~w va4>Y+bZ&9QY?(VEUPY_cGd9nQ`um^ZSUyYpAAuKhL7F^W{an^LB{Ts5DmojT literal 0 HcmV?d00001 diff --git a/docs/html/navtree.css b/docs/html/navtree.css new file mode 100644 index 0000000..e46ffcd --- /dev/null +++ b/docs/html/navtree.css @@ -0,0 +1,123 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + padding:2px; + margin:0px; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 300px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; +} + + + diff --git a/docs/html/navtree.js b/docs/html/navtree.js new file mode 100644 index 0000000..8687df2 --- /dev/null +++ b/docs/html/navtree.js @@ -0,0 +1,308 @@ +var NAVTREE = +[ + [ "server", "index.html", [ + [ "Data Structures", "annotated.html", [ + [ "class", "structclass.html", null ], + [ "HttpRequest", "structHttpRequest.html", null ], + [ "HttpRequestParser", "structHttpRequestParser.html", null ], + [ "HttpRequestQueue", "structHttpRequestQueue.html", null ], + [ "i_Class", "structi__Class.html", null ], + [ "i_Logger", "structi__Logger.html", null ], + [ "i_StreamReader", "structi__StreamReader.html", null ], + [ "iface_impl", "structiface__impl.html", null ], + [ "interface", "structinterface.html", null ], + [ "Logger", "structLogger.html", null ], + [ "LoggerStderr", "structLoggerStderr.html", null ], + [ "LoggerSyslog", "structLoggerSyslog.html", null ], + [ "Server", "structServer.html", null ], + [ "Sock", "structSock.html", null ] + ] ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", null ], + [ "File List", "files.html", [ + [ "include/class.h", "class_8h.html", null ], + [ "include/interface.h", "interface_8h.html", null ], + [ "include/logger.h", "logger_8h.html", null ], + [ "include/server.h", "server_8h.html", null ], + [ "include/signalHandling.h", "signalHandling_8h.html", null ], + [ "include/socket.h", "socket_8h.html", null ], + [ "include/http/request.h", "request_8h.html", null ], + [ "include/http/request_parser.h", "request__parser_8h.html", null ], + [ "include/http/request_queue.h", "request__queue_8h.html", null ], + [ "include/interface/class.h", "interface_2class_8h.html", null ], + [ "include/interface/logger.h", "interface_2logger_8h.html", null ], + [ "include/interface/stream_reader.h", "stream__reader_8h.html", null ], + [ "src/class.c", "class_8c.html", null ], + [ "src/daemonize.c", "daemonize_8c.html", null ], + [ "src/interface.c", "interface_8c.html", null ], + [ "src/logger.c", "logger_8c.html", null ], + [ "src/server.c", "server_8c.html", null ], + [ "src/signalHandling.c", "signalHandling_8c.html", null ], + [ "src/socket.c", "socket_8c.html", null ], + [ "src/testserver.c", "testserver_8c.html", null ], + [ "src/http/request.c", "request_8c.html", null ], + [ "src/http/request_parser.c", "request__parser_8c.html", null ], + [ "src/http/request_queue.c", "request__queue_8c.html", null ], + [ "src/interface/class.c", "interface_2class_8c.html", null ], + [ "src/interface/logger.c", "interface_2logger_8c.html", null ], + [ "src/interface/stream_reader.c", "stream__reader_8c.html", null ], + [ "src/logger/stderr.c", "stderr_8c.html", null ], + [ "src/logger/syslog.c", "syslog_8c.html", null ], + [ "src/server/close_conn.c", "close__conn_8c.html", null ], + [ "src/server/handle_accept.c", "handle__accept_8c.html", null ], + [ "src/server/poll.c", "poll_8c.html", null ], + [ "src/server/read.c", "read_8c.html", null ], + [ "src/server/run.c", "run_8c.html", null ], + [ "src/socket/accept.c", "accept_8c.html", null ], + [ "src/socket/connect.c", "connect_8c.html", null ], + [ "src/socket/listen.c", "listen_8c.html", null ] + ] ], + [ "Globals", "globals.html", null ] + ] ] +]; + +function createIndent(o,domNode,node,level) +{ + if (node.parentNode && node.parentNode.parentNode) + { + createIndent(o,domNode,node.parentNode,level+1); + } + var imgNode = document.createElement("img"); + if (level==0 && node.childrenData) + { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() + { + if (node.expanded) + { + $(node.getChildrenUL()).slideUp("fast"); + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2plastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2pnode.png"; + } + node.expanded = false; + } + else + { + expandNode(o, node, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } + else + { + domNode.appendChild(imgNode); + } + if (level==0) + { + if (node.isLast) + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2plastnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2lastnode.png"; + domNode.appendChild(imgNode); + } + } + else + { + if (node.childrenData) + { + imgNode.src = node.relpath+"ftv2pnode.png"; + } + else + { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } + } + } + else + { + if (node.isLast) + { + imgNode.src = node.relpath+"ftv2blank.png"; + } + else + { + imgNode.src = node.relpath+"ftv2vertline.png"; + } + } + imgNode.border = "0"; +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + a.appendChild(node.label); + if (link) + { + a.href = node.relpath+link; + } + else + { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + node.expanded = false; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() + { + if (!node.childrenUL) + { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); +} + +function expandNode(o, node, imm) +{ + if (node.childrenData && !node.expanded) + { + if (!node.childrenVisited) + { + getNode(o, node); + } + if (imm) + { + $(node.getChildrenUL()).show(); + } + else + { + $(node.getChildrenUL()).slideDown("fast",showRoot); + } + if (node.isLast) + { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } + else + { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } +} + +function getNode(o, po) +{ + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) + { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } +} + +function findNavTreePage(url, data) +{ + var nodes = data; + var result = null; + for (var i in nodes) + { + var d = nodes[i]; + if (d[1] == url) + { + return new Array(i); + } + else if (d[2] != null) // array of children + { + result = findNavTreePage(url, d[2]); + if (result != null) + { + return (new Array(i).concat(result)); + } + } + } + return null; +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + + getNode(o, o.node); + + o.breadcrumbs = findNavTreePage(toroot, NAVTREE); + if (o.breadcrumbs == null) + { + o.breadcrumbs = findNavTreePage("index.html",NAVTREE); + } + if (o.breadcrumbs != null && o.breadcrumbs.length>0) + { + var p = o.node; + for (var i in o.breadcrumbs) + { + var j = o.breadcrumbs[i]; + p = p.children[j]; + expandNode(o,p,true); + } + p.itemDiv.className = p.itemDiv.className + " selected"; + p.itemDiv.id = "selected"; + $(window).load(showRoot); + } +} + diff --git a/docs/html/open.png b/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..7b35d2c2c389743089632fe24c3104f2173d97af GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vww^AIAr*{o=Nbw!DDW^(zOibV zl!F8B0?t?i!vld4k#$~0_AX3zElaokn + + + +server: src/server/poll.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/poll.c File Reference

+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + +

+Defines

#define POLLFD(ptr)   ((struct pollfd *)(ptr))
+

Define Documentation

+ +
+
+ + + + + + + + +
#define POLLFD( ptr)   ((struct pollfd *)(ptr))
+
+
+ +

Definition at line 1 of file poll.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/poll_8c__dep__incl.map b/docs/html/poll_8c__dep__incl.map new file mode 100644 index 0000000..56bf18c --- /dev/null +++ b/docs/html/poll_8c__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/poll_8c__dep__incl.md5 b/docs/html/poll_8c__dep__incl.md5 new file mode 100644 index 0000000..2bb0a7c --- /dev/null +++ b/docs/html/poll_8c__dep__incl.md5 @@ -0,0 +1 @@ +1b9313d52607cd037c0aa921a3cd23ae \ No newline at end of file diff --git a/docs/html/poll_8c__dep__incl.png b/docs/html/poll_8c__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..411e9c7bbf5d6826b252f151028227e90e106cd4 GIT binary patch literal 827 zcmV-B1H}A^P)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCJ-v3=M z38;0tJ+a#>JJ)1(Vdf|NpCoiT9gWe@(0F%Xjo9hS`$OqU|FLxNg?@L5fc*D8dYlXC zcZsi{kA?92#Ow5V!YKmI)4YUf@*wpTkrqh_i!6?T4dz>k5_z7u{@|0m(UaFH9V0{p z92pKkkQlQ_7M>MZj1xc8QHsPGVJ7V2M}R5p^z3y;2MoX?4SZUN3m;!ZQfQn$v3 zaF8UCW`3|V@AT|-UU^UFkUa=nH$@~xA{i2z6KEDXSpYHqk@93pp3IBwCC6uo8s`RI$dBJa) z=c9Rn$Mf)}CjNuzO?7%TeDm@2O87?Ub?8k~6JM8}9-$gp=}K3+(v_}sr7K{ql zm9BK9EBzDb&%fSy#fyL# zLqC|V?}L?kib#v3bVe52j`t0>5+$aY?D!uYFG(b)0y;YD&|=GQYYF097Re;AB8#r) zXF5vG$h^@5J0-X{ozpFLmPZ=+wAL9uzKEpIIJC0J=MLRLl0<8EI#njovr|ds13f=) z&O4=>BCg*?vdCyoxRKff-RXAqz+=__MyI=rzgVHpo1x>vC(+75txfcycWo|5k~ndr z4+na3Dxv4To7}A+wMsa-qWtxhF$N7p-5o;K0NX*ZEsbazdr zhdixPn~zQVD0!#zBu*vtH-*xbu5_ippI-Hsl!nGT;|~$J^NLnsEE@m-002ovPDHLk FV1n3Sl;;2d literal 0 HcmV?d00001 diff --git a/docs/html/poll_8c_source.html b/docs/html/poll_8c_source.html new file mode 100644 index 0000000..678b982 --- /dev/null +++ b/docs/html/poll_8c_source.html @@ -0,0 +1,167 @@ + + + + +server: src/server/poll.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/poll.c

+
+
+Go to the documentation of this file.
00001 #define POLLFD(ptr)     ((struct pollfd *)(ptr))
+00002 
+00003 static
+00004 inline
+00005 int
+00006 sortEvents(const void * a, const void * b)
+00007 {
+00008         return POLLFD(a)->events > POLLFD(b)->events ?
+00009                 -1 : POLLFD(a)->events < POLLFD(b)->events ?
+00010                 1 : 0;
+00011 }
+00012 
+00013 static
+00014 inline
+00015 int
+00016 sortRevents(const void * a, const void * b)
+00017 {
+00018         return POLLFD(a)->revents > POLLFD(b)->revents ?
+00019                 -1 : POLLFD(a)->revents < POLLFD(b)->revents ?
+00020                 1 : 0;
+00021 }
+00022 
+00023 static
+00024 int
+00025 serverPoll(Server this) {
+00026         int events;
+00027 
+00028         qsort(this->fds, this->nfds, sizeof(struct pollfd), sortEvents);
+00029         this->nfds -= this->ndel;
+00030         this->ndel  = 0;
+00031 
+00032         /*
+00033          * wait for handles to become ready
+00034          */
+00035         if (-1 == (events = poll(this->fds, this->nfds, -1))) {
+00036                 switch (errno) {
+00037                         default:
+00038                         case EBADF:
+00039                         case EINVAL:
+00040                         case ENOMEM:
+00041                                 doShutdown = 1;
+00042                                 /* Fallthrough */
+00043 
+00044                         case EINTR:
+00045                                 loggerLog(this->logger, LOGGER_CRIT,
+00046                                                 "poll systemcall failed: [%s] - service terminated",
+00047                                                 strerror(errno));
+00048                                 //exit(EXIT_FAILURE); /* @TODO do real shutdown here */
+00049                 }
+00050         }
+00051 
+00052         qsort(this->fds, this->nfds, sizeof(struct pollfd), sortRevents);
+00053 
+00054         return events;
+00055 }
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/read_8c.html b/docs/html/read_8c.html new file mode 100644 index 0000000..c5e6b6d --- /dev/null +++ b/docs/html/read_8c.html @@ -0,0 +1,121 @@ + + + + +server: src/server/read.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/read.c File Reference

+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ +
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/read_8c__dep__incl.map b/docs/html/read_8c__dep__incl.map new file mode 100644 index 0000000..4f8558b --- /dev/null +++ b/docs/html/read_8c__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/read_8c__dep__incl.md5 b/docs/html/read_8c__dep__incl.md5 new file mode 100644 index 0000000..1370a97 --- /dev/null +++ b/docs/html/read_8c__dep__incl.md5 @@ -0,0 +1 @@ +e26ae7a3e4e14e74d919797c4e981f08 \ No newline at end of file diff --git a/docs/html/read_8c__dep__incl.png b/docs/html/read_8c__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1b786fd123fb790fcd60737be44858c2de86a562 GIT binary patch literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^tw3DL!3-qBr(F^UQuYBpA+G=a|Cf|3ICS{1y}f;X zef_=r_vg)@FE1~@Z~y*DlP2lw>$|(V$H&JnU%tG&yj)ydyuZJH|Ni}#FJA^4@c;k+ zue(im16hnEL4Lsu4$p3+F)%Pa_H=O!$!L5#vpa8z0gr2Fcl#?i zj4TD#x%xFEo9|ns@ag}PfOc_zUP0pzs?HM@PqXxUc`qq&K~CrK;Lj_?=6pO7^F+^T z-ZB&MKB;$?4xFE}KSD31>&?TAgF=Nlm3m3%BAf+37EkEAP_o+~SMBL>$@BB)dV6ov zFnDA0OJULMpVABa0<0~Pd5`jYYff>}obpJrYx0C$|2M1j>iW>>e;Z04J@Q&8 zQr~{)$Eh<{8_x&a*l1K-`oLHuHuu@91MfADF|uVR$Q)ZH&z8UAT+SmktJ=e}WBuRv zR&z6_9xeI8uamn`!rR{56*4)Cn$K^1?7OP@J--$GtMS~0KNK}vgEU%${?v6v|KSf@x@)!_gV-|$Wro1>iomqb;OXk;vd$@?2>|8` BjdcJ3 literal 0 HcmV?d00001 diff --git a/docs/html/read_8c_source.html b/docs/html/read_8c_source.html new file mode 100644 index 0000000..205ef5a --- /dev/null +++ b/docs/html/read_8c_source.html @@ -0,0 +1,148 @@ + + + + +server: src/server/read.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/read.c

+
+
+Go to the documentation of this file.
00001 static
+00002 int
+00003 serverRead(Server this, unsigned int i)
+00004 {
+00005         int fd = (this->fds)[i].fd;
+00006 
+00007         if (NULL == (this->conns)[fd].reader) {
+00008                 loggerLog(
+00009                                 this->logger,
+00010                                 LOGGER_INFO,
+00011                                 "initialization error: NULL reader");
+00012                 serverCloseConn(this, i);
+00013         }
+00014 
+00015         switch (streamReaderRead((this->conns)[fd].reader, fd)) {
+00016                 case 0:
+00017                         /*
+00018                          * normal close: write remaining data
+00019                          * @TODO: actually we have no remaining data here....
+00020                          */
+00021                         /* DROP-THROUGH */
+00022 
+00023                 case -1: 
+00024                         /*
+00025                          * read failure / close connection
+00026                          */
+00027                         loggerLog(this->logger, LOGGER_INFO, "connection closed...");
+00028                         serverCloseConn(this, i);
+00029                         break;
+00030 
+00031                 default:
+00032                         break;
+00033         }
+00034 
+00035         return 0;
+00036 }
+00037 
+00038 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request_8c.html b/docs/html/request_8c.html new file mode 100644 index 0000000..84a6be6 --- /dev/null +++ b/docs/html/request_8c.html @@ -0,0 +1,203 @@ + + + + +server: src/http/request.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/request.c File Reference

+
+
+
#include <stdlib.h>
+#include <stdarg.h>
+#include "class.h"
+#include "interface/class.h"
+#include "http/request.h"
+
+Include dependency graph for request.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, NULL)
 CREATE_CLASS (HttpRequest, NULL, IFACE(Class))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpRequest ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request_8c__incl.map b/docs/html/request_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request_8c__incl.md5 b/docs/html/request_8c__incl.md5 new file mode 100644 index 0000000..e6a727e --- /dev/null +++ b/docs/html/request_8c__incl.md5 @@ -0,0 +1 @@ +f6f59d2fba8fd35459da15f30c900197 \ No newline at end of file diff --git a/docs/html/request_8c__incl.png b/docs/html/request_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..af72897e463a9ea03b701a6aeedd224ddcdf043b GIT binary patch literal 2339 zcmV+;3EcLHP)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchCiM@kK^jR$8}ld<@g;MH?RzZB%Om?Hxb7{I5wI`D91FC`GjN zGYz6u7|v^hGzAUUl|jQuhLQbC|Do^bX?#uWolHLbYBAF=vV~w`UE)ak{dutCrMrdxKhx{k>~iBG!4^(urFF}eoyh3 z_XAJ)7zHNbqiwQJ9TCp^EKAiv!KQDZS z32A`_NDDMTTA%^a0u7KBXn?f*e+zZHEgN=zceQPK;cu;eO1ImpWw*iExakM|iZ*H& z(&8AZIsn8kYO8EvP2P3@@q5~?SZJHSqrw&Ar{pMB)D~f<IgSMGZO=ZGD{fRG^Kl5&^DvpY!kvG`N_9r~o9Ya{O)c_FjH3dv{$PGhG#E4_n5D@VNg-mkTgQK{pF-PlB zAflkcW;gI|Au@E_;d&f^D5Jo64Si%(Ci><`0Fhb2Q(EHAF?EC<3L^3;d@jQ$J!xkc zKgJvlATlWCd0>QVLMBI+2RM;uA$EW{Hcue|M3CZV>8norq)g}Wd&Q#$h82j|QqruP^yDBX4i%P&l@dQUP7Ibd%(BQ_KLDYX zI2FksH7AbCZ(6`0axw5GX8Nw)Lb2#vK-5N2^xy5 zI1Bs5@1-JrL$|}%``INA4u|q^nHH^)W&hJpB{FT@Zdq_BQMSzYt)4JOxU#WIDc4lx zSsIGGuQH_;80iZuQ88tksaz9YaB28Xg}xgttFp~hw(~DBi@+gBw_7e8@|}CJPZz#a zplnn6ZQZibP~u^7c730QZ}M>T{{iJnILH5AimFi74&Sh`x7*?Hd)e4DWRK?z@0#yW zIqP-Mx2(I1hJ&_=IyoEAP{uY1}6F|epIhX+>dr0LWPPQyJD4Tf!a zo@df#>F^!`zOl_Z(PB0BD6)PPTa9{JVNE*oeLcGjG16jUU=~6T}y?vqTv~fVvMov##a*U1%$z9e^-m8*SeTlF>R?kvH+>uE>b6Nh<- z`<*7&uyd8JJlgyt&ey(Du=A$lWacX4H~Uq_62Vn3U$>X($V9y9gwVhTu~gVM%Y&7K z2IP~d5)hL)Gb3B|{O^XhLpB@%YST8B^&3>PMXKf(Df)jWVz(JYzo3vP%S4y;a+;(~*gI(+Q!04^nkjC7}UX zN-BYNE}NOOp8x&u)&$%e;lnZ3YeU1R6IT6lsoAgB%C@4v_I#R~xoO)xz?~U1EuR4H zDx%4tRiy8N1~HCj&dh6`F`rg>1|qoXt%hcm&V2U1bV6w0gES4IB!ielm4GgrowS<& z{qWY6Vvy|fqkHq7LYi^dW7meIElsf=g%}fK~(${Sn zOS;Nlb`@WxBNOqa6S!|MX%Inb`BEmJ%Vs96=YK!EMFS)2f8MnriH3!(^`BvO9=_Js=OTq&3bYud?+R*Ey_5AOL z-`qFItNCKz&?eHbwxw4(`fW5h%tQAL15Z=9+WUrf^ZcV}7}zCvsB|?%ED>Dwiv8pw z9edxfolXJ`yd;CV0>}jJYJOY(P(-#G`-a`{W=OX2?5moH&3|v+Q{0755)DgRw%2Wk zPVIYXQ|B-byQd&x6E9swH1$Jy9-x6|K8QWMv0G=cL~zwxZ>1v>@um|@15c%%Z}aL( zU1dcA>YnXRV-ek|=YKc+$xo(xmRIY%ZN`)7P5GW@c%OCb#W|S>EzG!5st|2PfB!h?p4wuu4_=emQ2?Kq$zqiv!p!)GW + + + +server: src/http/request.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/request.c

+
+
+Go to the documentation of this file.
00001 #include <stdlib.h>
+00002 #include <stdarg.h>
+00003 
+00004 #include "class.h"
+00005 #include "interface/class.h"
+00006 
+00007 #include "http/request.h"
+00008 
+00009 static
+00010 void
+00011 _free(void ** data)
+00012 {
+00013         if (NULL != *data) {
+00014                 free(*data);
+00015         }
+00016 }
+00017 
+00018 static
+00019 void
+00020 ctor(void * _this, va_list * params) {}
+00021 
+00022 static
+00023 void
+00024 dtor(void * _this)
+00025 {
+00026         HttpRequest this = _this;
+00027         int         i;
+00028 
+00029         _free((void **)&(this->http_version));
+00030         _free((void **)&(this->uri));
+00031         _free((void **)&(this->method));
+00032 
+00033         for (i=0; i<128; i++) {
+00034                 _free((void **)&((this->header)[i].name));
+00035                 _free((void **)&((this->header)[i].value));
+00036         }
+00037 
+00038         _free((void **)&(this->body));
+00039 } 
+00040 
+00041 INIT_IFACE(Class, ctor, dtor, NULL);
+00042 CREATE_CLASS(HttpRequest, NULL, IFACE(Class));
+00043 
+00044 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request_8h.html b/docs/html/request_8h.html new file mode 100644 index 0000000..36f40f5 --- /dev/null +++ b/docs/html/request_8h.html @@ -0,0 +1,125 @@ + + + + +server: include/http/request.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/request.h File Reference

+
+
+
#include "class.h"
+
+Include dependency graph for request.h:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Data Structures

struct  HttpRequest
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request_8h__incl.map b/docs/html/request_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request_8h__incl.md5 b/docs/html/request_8h__incl.md5 new file mode 100644 index 0000000..676af42 --- /dev/null +++ b/docs/html/request_8h__incl.md5 @@ -0,0 +1 @@ +0df220d475055d73c766125c6632b8a7 \ No newline at end of file diff --git a/docs/html/request_8h__incl.png b/docs/html/request_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d9436b9815ece12ad93d00a726bb8ad0c8c91 GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$kgBeKvdnDBiq$~q`LR|m-|1T+7uy6nVdGqJn z+uPr}e_vi+zP`R*Uthn!zu(>6U0hteyu3U`J2eBAS zg8YIR9G=}sV_;x9?djqeQZeW4tnNvx40zfCS*qSY`5XUD#nL=+daCzC0Z`;oFGX@)`z7|c8JP`D8@}4)Fvv%EM|B{ro-|ow5 zkcn#-tK@%saGs%%JJovnje98us;fT8Dx^}FnoUB*(oRSGeP&^^>t6H2{R}TJObec)Twy&w>6L}m>a^P1Y%jb@ z{>j##C`jvi`t{3o3!ARx)4Ea~NTu;FaM?b8X7zKq7y3+gl}zT0Kaw;Tgm7tGUC&fA z*H6Fa>R#vN+g)lGiUeqZBO=IQB@xV3(-{53WqUtuoyGnp>Up;OhU~fij8C&5#QNF; z%l7Mt$nt6YQ$2K>k^fu$Zzir44MBhH4m`Zc-;(g-+W)ISYp!woJeFW*vWZWavq3WP z&Gcmq-;{mY8T}p`#HcZ~SbUkG^J3%6XUiDkcGb;3>dzE3t8E^G;6t7nr#mCE4mUi% zZB#EbA^e$8ywW~v_Z

xoMM`jXexvlKe#WeY^gw0vM3WOne*`5AT=pe`{w}Qv9HK z?D3uB8xJdcN3K1~Q?Bqp@Lzts1EVO^<5}_>zSh^S2&wn|&u}mE|G{qucN+rJID@CF KpUXO@geCw9S$#kN literal 0 HcmV?d00001 diff --git a/docs/html/request_8h_source.html b/docs/html/request_8h_source.html new file mode 100644 index 0000000..1f0f48d --- /dev/null +++ b/docs/html/request_8h_source.html @@ -0,0 +1,132 @@ + + + + +server: include/http/request.h Source File + + + + + + + + + + + + + +

+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/request.h

+
+
+Go to the documentation of this file.
00001 #ifndef __HTTP_REQUEST_H__
+00002 #define __HTTP_REQUEST_H__
+00003 
+00004 #include "class.h"
+00005 
+00006 CLASS(HttpRequest) {
+00007         char * http_version;
+00008         char * uri;
+00009         char * method;
+00010         
+00011         struct {
+00012                 char * name;
+00013                 char * value;
+00014         }      header[128];
+00015 
+00016         char * body;
+00017         char   done;
+00018 };
+00019 
+00020 #endif /* __HTTP_REQUEST_H__ */
+00021 
+00022 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__parser_8c.html b/docs/html/request__parser_8c.html new file mode 100644 index 0000000..4593ea7 --- /dev/null +++ b/docs/html/request__parser_8c.html @@ -0,0 +1,244 @@ + + + + +server: src/http/request_parser.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/request_parser.c File Reference

+
+
+
#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include "class.h"
+#include "http/request_parser.h"
+#include "interface/class.h"
+#include "interface/stream_reader.h"
+#include "http/request.h"
+#include "http/request_queue.h"
+
+Include dependency graph for request_parser.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, _clone)
 INIT_IFACE (StreamReader, get_data)
 CREATE_CLASS (HttpRequestParser, NULL, IFACE(Class), IFACE(StreamReader))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpRequestParser ,
NULL ,
IFACE(Class) ,
IFACE(StreamReader)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
_clone  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (StreamReader ,
get_data  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__parser_8c__incl.map b/docs/html/request__parser_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request__parser_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request__parser_8c__incl.md5 b/docs/html/request__parser_8c__incl.md5 new file mode 100644 index 0000000..de6ca67 --- /dev/null +++ b/docs/html/request__parser_8c__incl.md5 @@ -0,0 +1 @@ +57f7b5ddf1ef5b9ca385f2afdf5318a6 \ No newline at end of file diff --git a/docs/html/request__parser_8c__incl.png b/docs/html/request__parser_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c070a326d51f5715fa82acaa77cf72cef3b00de6 GIT binary patch literal 4935 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 WSloY8w7CCwQCVI?u0qEA_5T2&CRzCa literal 0 HcmV?d00001 diff --git a/docs/html/request__parser_8c_source.html b/docs/html/request__parser_8c_source.html new file mode 100644 index 0000000..308a9bc --- /dev/null +++ b/docs/html/request__parser_8c_source.html @@ -0,0 +1,348 @@ + + + + +server: src/http/request_parser.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/request_parser.c

+
+
+Go to the documentation of this file.
00001 #include <stdlib.h>
+00002 #include <string.h>
+00003 #include <stdlib.h>
+00004 #include <stdio.h>
+00005 #include <unistd.h>
+00006 #include <ctype.h>
+00007 #include <sys/types.h>
+00008 
+00009 #include "class.h"
+00010 #include "http/request_parser.h"
+00011 #include "interface/class.h"
+00012 #include "interface/stream_reader.h"
+00013 #include "http/request.h"
+00014 #include "http/request_queue.h"
+00015 
+00016 static
+00017 void
+00018 httpRequestParserParse(HttpRequestParser);
+00019 
+00020 static
+00021 void
+00022 ctor(void * _this, va_list * params)
+00023 {
+00024         HttpRequestParser this = _this;
+00025 
+00026         this->request_queue = new(HttpRequestQueue);
+00027 
+00028         this->buffer = malloc(HTTP_REQUEST_PARSER_READ_CHUNK);
+00029         this->buffer[0] = 0;
+00030 }
+00031 
+00032 static
+00033 void
+00034 dtor(void * _this)
+00035 {
+00036         HttpRequestParser this = _this;
+00037 
+00038         free(this->buffer);
+00039         delete(&(this->request_queue));
+00040 } 
+00041 
+00042 static
+00043 void
+00044 _clone(void * _this, void * _base)
+00045 {
+00046         HttpRequestParser this = _this;
+00047         HttpRequestParser base = _base;
+00048         size_t            chunks;
+00049 
+00053         this->request_queue = new(HttpRequestQueue);
+00054         this->buffer_used   = base->buffer_used;
+00055 
+00056         chunks = this->buffer_used / HTTP_REQUEST_PARSER_READ_CHUNK;
+00057         chunks++;
+00058 
+00059         this->buffer = malloc(chunks * HTTP_REQUEST_PARSER_READ_CHUNK);
+00060         memcpy(this->buffer, base->buffer, this->buffer_used);
+00061 }
+00062 
+00063 static
+00064 size_t
+00065 get_data(void * _this, int fd)
+00066 {
+00067         HttpRequestParser this = _this;
+00068         size_t            remaining, chunks;
+00069         char              buffer[1024];
+00070 
+00071         size_t size = read(fd, buffer, 1024);
+00072 
+00073         if (0 < size) {
+00074                 remaining = this->buffer_used % HTTP_REQUEST_PARSER_READ_CHUNK;
+00075                 chunks    = this->buffer_used / HTTP_REQUEST_PARSER_READ_CHUNK;
+00076 
+00085                 chunks++;
+00086 
+00087                 if (size >= remaining) {
+00088                         this->buffer =
+00089                                 realloc(this->buffer, chunks * HTTP_REQUEST_PARSER_READ_CHUNK);
+00090                 }
+00091 
+00092                 memcpy(this->buffer + this->buffer_used, buffer, size);
+00093                 this->buffer_used += size;
+00094                 this->buffer[this->buffer_used] = 0;
+00095 
+00096                 httpRequestParserParse(this);
+00097         }
+00098 
+00099         return size;
+00100 }
+00101 
+00102 INIT_IFACE(Class, ctor, dtor, _clone);
+00103 INIT_IFACE(StreamReader, get_data);
+00104 CREATE_CLASS(HttpRequestParser, NULL, IFACE(Class), IFACE(StreamReader));
+00105 
+00106 static
+00107 inline
+00108 char *
+00109 httpRequestLineGet(char ** data)
+00110 {
+00111         char * line_end = strstr(*data, "\r\n");
+00112         char * ret      = *data;
+00113 
+00114         if (NULL == line_end) {
+00115                 return NULL;
+00116         }
+00117 
+00118         *line_end = 0;
+00119         *data = line_end + 2;
+00120 
+00121         return ret;
+00122 }
+00123 
+00124 static
+00125 inline
+00126 void
+00127 httpRequestSkip(char ** data)
+00128 {
+00129         for (; 0 != **data && ! isalpha(**data); (*data)++);
+00130 }
+00131 
+00132 static
+00133 void
+00134 httpRequestParserParse(HttpRequestParser this)
+00135 {
+00136         static HttpRequest request  = NULL;
+00137         static char *      data; // static pointer to unprocessed data
+00138         char *             line;
+00139         int                cont = 1;
+00140         static int         header_idx;
+00141 
+00142         while(cont) {
+00143                 switch(this->state) {
+00144                         case HTTP_REQUEST_GARBAGE:
+00145                                 data = this->buffer; // initialize static pointer
+00146                                 httpRequestSkip(&data);
+00147                                 request = new(HttpRequest);
+00148 
+00149                                 this->state = HTTP_REQUEST_START;
+00150                                 break;
+00151 
+00152                         case HTTP_REQUEST_START:
+00153                                 if (NULL == (line = httpRequestLineGet(&data))) {
+00154                                         cont = 0;
+00155                                         break;
+00156                                 }
+00157                                 
+00158                                 {
+00159                                         char * delim = strchr(line, ' ');
+00160 
+00161                                         if (NULL != delim) {
+00162                                                 *delim = 0;
+00163                                                 request->method = malloc(strlen(line) + 1);
+00164                                                 strcpy(request->method, line);
+00165                                                 line = delim + 1;
+00166 
+00167                                                 for (; *line == ' ' && *line != 0; line++);
+00168 
+00169                                                 if (0 != *line) {
+00170                                                         delim = strchr(line, ' ');
+00171 
+00172                                                         if (NULL != delim) {
+00173                                                                 *delim = 0;
+00174                                                                 request->uri = malloc(strlen(line) + 1);
+00175                                                                 strcpy(request->uri, line);
+00176                                                                 line = delim + 1;
+00177 
+00178                                                                 for (; *line == ' ' && *line != 0; line++);
+00179 
+00180                                                                 if (0 != *line) {
+00181                                                                         request->http_version = malloc(strlen(line) + 1);
+00182                                                                         strcpy(request->http_version, line);
+00183                                                                 }
+00184                                                         }
+00185                                                 }
+00186                                         }
+00187                                 }
+00188 
+00189                                 header_idx = 0;
+00190                                 this->state = HTTP_REQUEST_REQUEST_LINE_DONE;
+00191                                 break;
+00192 
+00193                         case HTTP_REQUEST_REQUEST_LINE_DONE:
+00194                                 if (NULL == (line = httpRequestLineGet(&data))) {
+00195                                         cont = 0;
+00196                                         break;
+00197                                 }
+00198 
+00199                                 if (0 == strlen(line)) {
+00200                                         this->state = HTTP_REQUEST_HEADERS_DONE;
+00201                                         break;
+00202                                 }
+00203 
+00204                                 {
+00205                                         char * delim = strchr(line, ':');
+00206 
+00207                                         *delim = 0;
+00208                                         (request->header)[header_idx].name = malloc(strlen(line) + 1);
+00209                                         strcpy((request->header)[header_idx].name, line);
+00210 
+00211                                         line = delim + 1;
+00212                                         for (; *line == ' ' && *line != 0; line++);
+00213 
+00214                                         (request->header)[header_idx].value = malloc(strlen(line) + 1);
+00215                                         strcpy((request->header)[header_idx].value, line);
+00216                                 }
+00217 
+00218                                 header_idx++;
+00219                                 break;
+00220 
+00221                         case HTTP_REQUEST_HEADERS_DONE:
+00225                                 this->state = HTTP_REQUEST_DONE;
+00226                                 break;
+00227 
+00228                         case HTTP_REQUEST_DONE:
+00232                                 this->request_queue->requests[(this->request_queue->nrequests)++] =
+00233                                         request;
+00234 
+00238                                 memmove(this->buffer,
+00239                                                 data,
+00240                                                 this->buffer_used - (data - this->buffer) + 1);
+00241 
+00242                                 this->buffer_used -= data - this->buffer;
+00243 
+00247                                 if (0 == this->buffer_used) {
+00248                                         cont = 0;
+00249                                 }
+00250 
+00254                                 this->state = HTTP_REQUEST_GARBAGE;
+00255 
+00256                                 break;
+00257 
+00258                         default:
+00259                                 break;
+00260                 }
+00261         }
+00262 }
+00263 
+00264 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__parser_8h.html b/docs/html/request__parser_8h.html new file mode 100644 index 0000000..e475871 --- /dev/null +++ b/docs/html/request__parser_8h.html @@ -0,0 +1,213 @@ + + + + +server: include/http/request_parser.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/request_parser.h File Reference

+
+
+
#include "class.h"
+#include "http/request_queue.h"
+
+Include dependency graph for request_parser.h:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + + + +

+Data Structures

struct  HttpRequestParser

+Defines

#define HTTP_REQUEST_PARSER_READ_CHUNK   1024

+Typedefs

typedef enum e_HttpRequestState HttpRequestState

+Enumerations

enum  e_HttpRequestState {
+  HTTP_REQUEST_GARBAGE = 0, +HTTP_REQUEST_START, +HTTP_REQUEST_REQUEST_LINE_DONE, +HTTP_REQUEST_HEADERS_DONE, +
+  HTTP_REQUEST_DONE +
+ }
+

Define Documentation

+ +
+
+ + + + +
#define HTTP_REQUEST_PARSER_READ_CHUNK   1024
+
+
+ +

Definition at line 7 of file request_parser.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef enum e_HttpRequestState HttpRequestState
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum e_HttpRequestState
+
+
+
Enumerator:
+ + + + + +
HTTP_REQUEST_GARBAGE  +
HTTP_REQUEST_START  +
HTTP_REQUEST_REQUEST_LINE_DONE  +
HTTP_REQUEST_HEADERS_DONE  +
HTTP_REQUEST_DONE  +
+
+
+ +

Definition at line 9 of file request_parser.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__parser_8h__incl.map b/docs/html/request__parser_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request__parser_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request__parser_8h__incl.md5 b/docs/html/request__parser_8h__incl.md5 new file mode 100644 index 0000000..9cc4cb5 --- /dev/null +++ b/docs/html/request__parser_8h__incl.md5 @@ -0,0 +1 @@ +b6da2c3d8c47bf057848084f432a522c \ No newline at end of file diff --git a/docs/html/request__parser_8h__incl.png b/docs/html/request__parser_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d9ae1c818a6ad24d1cd51de24665e02a563c5d GIT binary patch literal 1460 zcmV;l1xxygP)U_kY;!1B@DV zR3H&US28O0@qb)qW-I%6M2i+JTC`}Po4SFW;_idD$Q`*OcjS)TQ*JrygNQ&da zIO?Kp8>x{;dQ0J zfitj|DM?L3S=Zc+?4UY&VIzcAq}fHG(=9l}jRS=Zb(%_Qt**^Rid0qXUw#3AV$IB3_wN#fx4c#F>2)5HyV zs8uQ<`{_Pu!tp+GOKc-AT~caTUDh?Xq^z8H#7zw_U-|a{TEp6PycqCDrO)-R3_5Pe z!|`>4qc`E!KkBM#kQ*D>ONSU|UDgjbuB6(`^LjSkQsOj!g@d-X!q ze22Ys2sU-TxpDiZ{TxKJwb{?{q`_^s8h3o9@Fnp{(C|}?Rg>rIIiT}!E9}WQr7HC* z&EdFtcTLL~v=@h%)#icQ#lY0l%9l>`o-4J{q z((Sk951pGM0Ex=De{3`byz)vBB&wY|0bnw&q!v?od zA2PU=_He;1l?MxMD?Cted)Z-v|0uT$(E)Azr#~n zA2tza+i!=OziN?teqo!;U0NR&x#t(Q$=s#&VUc@&0ak2%|4tR#$(EZJqNtMCsAO;N zRlmbsl>8nnOE)S_HI;w+yxC>A)hv0wQRslCHQUeqEK5;fjWk!~6Aq;+v*AFwvQj-a zk}WrL6l9@yp;D+r(;QDzEQ>k8DNohVJGzyMW7uGee)F(Jtt;HmvMBN=Mk`Td&|NBn z!^0dXSN_Om{kVslqKvdcv`PO5Cxx>SS_dOk8I%4tz3M}z2-N$T-Lh6{aS`;o(s52 z1&)U~7?%^=#gvJ^%q8N{3s)klB{%?7_M}G6LBiyvUMS-0Ms}A1N^_@B6ru8k%{1vz)1yoOY-DVG= zhSvA>z3ex;T-Lh2pDW(aVN=XRi909G0evue&T>C;$ed%ZX1Jf@B4i#x+dEdzp?{xH zOubsUcs>DN@|#{RYyIx$)UAi{-Us!m2YTdwyRc2RC+*h9@(rHJ|K1TI_xCJv&o69~ zxl8NABKQ2lHkrG$J}h$2FKm;!OY6g?+%Es|#bH_>_KD7o7A;z|PuqVf{EA(RC`dN| O0000 + + + +server: include/http/request_parser.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/request_parser.h

+
+
+Go to the documentation of this file.
00001 #ifndef __HTTP_REQUEST_PARSER_H__
+00002 #define __HTTP_REQUEST_PARSER_H__
+00003 
+00004 #include "class.h"
+00005 #include "http/request_queue.h"
+00006 
+00007 #define HTTP_REQUEST_PARSER_READ_CHUNK  1024
+00008 
+00009 typedef enum e_HttpRequestState {
+00010         HTTP_REQUEST_GARBAGE=0,
+00011         HTTP_REQUEST_START,
+00012         HTTP_REQUEST_REQUEST_LINE_DONE,
+00013         HTTP_REQUEST_HEADERS_DONE,
+00014         HTTP_REQUEST_DONE
+00015 } HttpRequestState;
+00016 
+00017 
+00018 CLASS(HttpRequestParser) {
+00019         char *           buffer;
+00020         size_t           buffer_used;
+00021         size_t           buffer_size;
+00022 
+00023         HttpRequestQueue request_queue;
+00024         HttpRequestState state;
+00025 };
+00026 
+00027 #endif /* __HTTP_REQUEST_PARSER_H__ */
+00028 
+00029 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__queue_8c.html b/docs/html/request__queue_8c.html new file mode 100644 index 0000000..7af3052 --- /dev/null +++ b/docs/html/request__queue_8c.html @@ -0,0 +1,202 @@ + + + + +server: src/http/request_queue.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/http/request_queue.c File Reference

+
+
+
#include <stdarg.h>
+#include "class.h"
+#include "interface/class.h"
+#include "http/request_queue.h"
+
+Include dependency graph for request_queue.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, NULL)
 CREATE_CLASS (HttpRequestQueue, NULL, IFACE(Class))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (HttpRequestQueue ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__queue_8c__incl.map b/docs/html/request__queue_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request__queue_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request__queue_8c__incl.md5 b/docs/html/request__queue_8c__incl.md5 new file mode 100644 index 0000000..90232ea --- /dev/null +++ b/docs/html/request__queue_8c__incl.md5 @@ -0,0 +1 @@ +371c413182f355c6538d307a01968af6 \ No newline at end of file diff --git a/docs/html/request__queue_8c__incl.png b/docs/html/request__queue_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..a2886fef72d8f699f48acbf8ad24bc819923fabc GIT binary patch literal 2190 zcmZ`*Yd8}Q7vE;FzgwZUHY5^JOp{w=Zu`$%mSR~gHo3i0?nwoM3xSB2_y>b=Hh`7iN$dErLOL7G#X8#(IzG*i|^gj(9me_=wL7yNF)-A z#gfV7s;a7(m>3ugmX(#&(b2)>awPy_v3R4+q)lQ0BTwSp0XAPo0{{S-UpNO_kJ!S+ zqU+%`N99vKHB5jVcXx=}_ORu4PkoeDuBP3Ue(q?e;qAx^I#J?wV5jUgyHbgo1LaH( z4n5p-&H3SZm45#!J=72!AEC)FkONMhg$TbiNbR|249_4;%L1`1#n?D!ra-R!DWQ1m z+YKlvlcB!i>kUv5j-8^O=QPUi906f3HpF~kc78;fS=&*)?p^IighSll+3$}p{c`)#iDsGW)DE7PgF954=;)(uNfyzr*kVnm89_zQb-^xBEFBM?7baC&fCVrpaWW-T7R&(D854(aWKfP$bmJJ?GPj{bhH%OqC2FUA4_QkEGViU=Ld`kAHAg?imUZWEo`-*39(SZ(w&@vR6~>$G zqJ@~JBN+zE7C=~^P`M(c43wiOi12r9p4PD#*F{<5zPW6jOJiP3f17=fB?J1llIfIZ z+zH$gj6$+keZr?rwSNqjWUn4xa||X{RFKzFJmvU$ zs<9wTPEoM;n*Y2i0M<83PP*=d3l7ju8?`URIkAI6w9M1hW#1e>Z~gVFO>Y3E{L2;q zW=>GunR`oK1G}Fza0b(R8RM^wg=T3br4ukZf&vN6Si-{cz}eYxt~m-nn)?&Lzj9c_ z%@#be_8h}IiYNUGA2+`i;=%(i$LZ2?!WJfETR*#aQt=`&Vrq2WfW5#T1L`OwW_}N= z8YzWfjBWhBFAdq>CdXPj-qKC81BX=k|X|?;VJiduC;VH#wO@HIO=(1`+ATgYl?@(*ZIme(BGAfuXK zwf*1)ui}5ffR>W|5{YDHtcvM5y#WJfLQD~Uo_eMvHBS3oO?@>pO8@=`B1MMDyY1j2 zE1?o|BmDivu_Gyd$z#^~YGmdPmJVX}ZQVzVP*2|IgGTIV+m6SBPx}eGV3}r=24k;X z?G1nXF_8TBeO}IF%!!!t^SD9J@|w<|$&IG6xt18atl;~$?$nP__EM{IH5}d=G$6(j z!%d{PIT-Fs?0mTLvWR`g)OV>{DT&y<3gB$oXs=u`YEAm#Ymq0S8s6sF}JYZ)puyovYs~wbLzP*Joa%)^NT4*hg1^^w}6!_aTZG(SJhrha`v$F$MQR zo_`I)VeGAb7IB)?v>0fvwIkSk5B;`|FfZZ2A9tn=VhFm&3{0{!r zSWPL-r0^2+0yr5B%~*Mq&PmLmx{4X7i+_l>nh*~?i}ZDSzh1F(FxioLVNezEOsZvQ z5ix#VATMpj>^ibDIHlz`*xKT-Vc{a8cDt^c5h+>5VnbH^#3htnJcRkPW}7Xe{;pQ* zg4QGTyJ7~{4NJG0qG$eHoB@sExb37EF`MhUBxRf|?*}svttEw$ZWieXr{4HqtdPTk z&ndiu8QmzqQc$%mm7wWqwnVlrfB$~hY3GskgL>R1Uh&a=8$V0xQbl#ER7G_4d)7C% z`7NgE21N~c2M=4ft=lk~AuJsP$3rQ13|q&DH|S9f3E+!BY+8f8wZh|O+eeZCL4$-x z|NpdHrN3aSENW3wJ(w+Gk8|@gyW8NPH?V#}C-G)9?Y~z%eN!fdU)TM7e~!Q8D*)gy Lc!zpB%9Z~Bq00=> literal 0 HcmV?d00001 diff --git a/docs/html/request__queue_8c_source.html b/docs/html/request__queue_8c_source.html new file mode 100644 index 0000000..ec069e9 --- /dev/null +++ b/docs/html/request__queue_8c_source.html @@ -0,0 +1,137 @@ + + + + +server: src/http/request_queue.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/http/request_queue.c

+
+
+Go to the documentation of this file.
00001 #include <stdarg.h>
+00002 
+00003 #include "class.h"
+00004 #include "interface/class.h"
+00005 
+00006 #include "http/request_queue.h"
+00007 
+00008 static
+00009 void
+00010 ctor(void * _this, va_list * params) {}
+00011 
+00012 static
+00013 void
+00014 dtor(void * _this)
+00015 {
+00016         HttpRequestQueue this = _this;
+00017         int              i;
+00018 
+00019         for (i=0; i<this->nrequests; i++) {
+00020                 delete(&(this->requests)[i]);
+00021         }
+00022 }
+00023 
+00024 INIT_IFACE(Class, ctor, dtor, NULL);
+00025 CREATE_CLASS(HttpRequestQueue, NULL, IFACE(Class));
+00026 
+00027 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__queue_8h.html b/docs/html/request__queue_8h.html new file mode 100644 index 0000000..b19447e --- /dev/null +++ b/docs/html/request__queue_8h.html @@ -0,0 +1,146 @@ + + + + +server: include/http/request_queue.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/http/request_queue.h File Reference

+
+
+
#include "class.h"
+#include "http/request.h"
+
+Include dependency graph for request_queue.h:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Data Structures

struct  HttpRequestQueue

+Defines

#define HTTP_REQUEST_QUEUE_MAX   1024
+

Define Documentation

+ +
+
+ + + + +
#define HTTP_REQUEST_QUEUE_MAX   1024
+
+
+ +

Definition at line 7 of file request_queue.h.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/request__queue_8h__incl.map b/docs/html/request__queue_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/request__queue_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/request__queue_8h__incl.md5 b/docs/html/request__queue_8h__incl.md5 new file mode 100644 index 0000000..fb4507e --- /dev/null +++ b/docs/html/request__queue_8h__incl.md5 @@ -0,0 +1 @@ +65e9846ea5db3c8dd618c06c59d82b78 \ No newline at end of file diff --git a/docs/html/request__queue_8h__incl.png b/docs/html/request__queue_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..7e950a28ea294ccb182bc9ebdff097066c580806 GIT binary patch literal 1317 zcmV+=1={+FP)UV@<0000yP)t-s{{R2N z!^0UFaK694o}ZsTKR@2z-ya_ze}8{3FE5Xek4HyG7Z(?IcXwZ3U#F+1zrVlJ)6)O| z0RR90wOe`j00001bW%=J06^y0W&i*Lmq|oHRCt{2n~9R6AP|OK?-MBA|6#YgIn=}$ zMcjZ(S28O0@qb)qrY2dIELpN-$)0cW0k+8{qPN5qmnE*a?0@CrFN{0ad=QdvSAko1 z+D6&0The>?TP!n3`+gD&cgLBfP+=hY&%x@VwWa;MDc2JlNVp$b_M`_NJe`(qROl z%AVyK_yj$|M$S97;9}#%L5yGn-VoCS**bx))~N#r1ex%>*PfG(vw2j!oS@8VUT^x% zlq!rMRN1p!J&iPUrr^_p3mYJx7$IZdi2)AU)jDxhC-4@XD^C+=^H3|7jEmJg{N$&d zbXkJv-{#^GE>2M@aKS|lFi+IyOj<+Qbvaq_N2kyAM^YVU^QicKz#(05ZTs28I!w%E z-MCg8<$#Nc#HHZPp0Ec9@YB3zPA0$l?j`!a^dzz`=MZR?9G0NCj;(!-Lm64 zi7$>j>7aIbrI$SCeN^XBt+1!zl<1aVTYlzBUz(C9xvtpWv*_q^%ISF~5|@kZeJb43 zYkrmg=C^16>*x7cEpf$Vi7PJK=DNx9Lrs2ci|Z!K4>!hT+X&HveE@hWSL|S)<;M;7 zP_8}k5rgeZj~48k@L0hf%Jp4#lwe0hM+kOIa(rM9JFQ1J3R_a-G*=|ZqP_o*cJo9=>nRg#Cs-vf79!p$dF6G`K+(1-NjWm>TRtob}FqknXn+a z6xA80KETZR)yeF{xyA30)&gIArEPd8@2k_t_yXiZY68S=9w-E=xQGEQVzPtAu9D zrCU|;dAwZedJUQ~RwzRr&qGN^f|x}~5FGzWiN zG+t$?xo~9adO2Q&w5_W6pG#b{z8EBi<(#$fUazmx8yBrFX66^emBgTWq1IQKF=<;D z>&v}<+eoz^!d_Ie26reNLwztgUAeLfGFRAZCGLl~%d7dtXnVx!74%;V#pK+oiespI zeHS~QckcnY`|$Ks|E|1`<=XjJ7&Dh&OI%^({dN7sb&n;kF!Elmf7joU|CQa + + + +server: include/http/request_queue.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/http/request_queue.h

+
+
+Go to the documentation of this file.
00001 #ifndef __HTTP_REQUEST_QUEUE_H__
+00002 #define __HTTP_REQUEST_QUEUE_H__
+00003 
+00004 #include "class.h"
+00005 #include "http/request.h"
+00006 
+00007 #define HTTP_REQUEST_QUEUE_MAX  1024
+00008 
+00009 
+00010 CLASS(HttpRequestQueue) {
+00011         HttpRequest requests[HTTP_REQUEST_QUEUE_MAX];
+00012         size_t      nrequests;
+00013 };
+00014 
+00015 #endif /* __HTTP_REQUEST_QUEUE_H__ */
+00016 
+00017 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..04fa95c --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,81 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).width(); + content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.height(); + var footerHeight = footer.height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); +} + + diff --git a/docs/html/run_8c.html b/docs/html/run_8c.html new file mode 100644 index 0000000..7e923f6 --- /dev/null +++ b/docs/html/run_8c.html @@ -0,0 +1,342 @@ + + + + +server: src/server/run.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server/run.c File Reference

+
+
+
#include <poll.h>
+#include <string.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <time.h>
+#include "server.h"
+#include "socket.h"
+#include "logger.h"
+#include "signalHandling.h"
+#include "interface/class.h"
+#include "interface/stream_reader.h"
+#include "interface/logger.h"
+#include "http/request.h"
+#include "http/request_parser.h"
+#include "http/request_queue.h"
+#include "poll.c"
+#include "handle_accept.c"
+#include "read.c"
+
+Include dependency graph for run.c:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Defines

#define MAX(x, y)   ((x) > (y) ? (x) : (y))
#define RESP_HEAD
#define RESP_DATA

+Functions

void serverRun (Server this)
+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MAX( x,
 
)   ((x) > (y) ? (x) : (y))
+
+
+ +

Definition at line 23 of file run.c.

+ +
+
+ +
+
+ + + + +
#define RESP_DATA
+
+
+Value:
"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+                                                        "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+                                                        " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+                                                        "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+                                                        "<head><title>404 - Not Found</title></head>" \
+                                                        "<body><h1>404 - Not Found</h1></body>" \
+                                                        "</html>"
+
+
+
+ +
+
+ + + + +
#define RESP_HEAD
+
+
+Value:
"HTTP/1.1 404 Not Found\r\n" \
+                                                        "Content-Type: text/html\r\n" \
+                                                        "Content-Length: %lu\r\n" \
+                                                        "Date: %s\r\n" \
+                                                        "Server: testserver\r\n"
+
+
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void serverRun (Server this)
+
+
+ +

: actually this is the main loop of my server. When stuff becomes more complicated it might be feasabible to split stuff into separate processes. This will definetly involve some IPC and syncing. Right now as this is actually only a simple HTTP server implementation we go on with this single process. What we can first do to get some processing between read/write cicles is to use the poll timeout.

+

handle accept

+

handle reads

+

do some other processing : actually this will hard assume that our stream reader is a http parser and it has its queue...think about more generalizing here.

+

: for now simply remove request and send not found. Make this sane.

+

: the complete response stuff have to be removed here.

+

: just to send an answer and be able to make some apache benchs i do it here...this definetly MUST BE moved

+

handle writes

+

+ +

Definition at line 30 of file run.c.

+
{
+    loggerLog(this->logger, LOGGER_INFO, "service started");
+
+    while (!doShutdown) /* until error or signal  */
+    {
+                int          events;
+                unsigned int i;
+
+                events = serverPoll(this);
+                if (doShutdown) break;
+
+                for (i=0; i < events; i++) {
+                        int fd = (this->fds)[i].fd;
+                        //int nreads = 0, nwrites = 0;
+
+                        if (0 != ((this->fds)[i].revents & POLLIN)) {
+                                if (this->sock->handle == (this->fds)[i].fd) {
+                                        serverHandleAccept(this);
+                                }
+
+                                else {
+                                        serverRead(this, i);
+
+                                        {
+                                                int              j;
+                                                HttpRequestQueue queue =
+                                                        ((HttpRequestParser)(this->conns)[fd].reader)->request_queue;
+
+                                                for (j=0; j<queue->nrequests; j++) {
+                                                        HttpRequest request = queue->requests[j];
+
+                                                        delete(&request);
+
+                                                        time_t t;
+                                                        struct tm * tmp;
+                                                        char timestr[200];
+
+#define RESP_HEAD "HTTP/1.1 404 Not Found\r\n" \
+                                                        "Content-Type: text/html\r\n" \
+                                                        "Content-Length: %lu\r\n" \
+                                                        "Date: %s\r\n" \
+                                                        "Server: testserver\r\n"
+
+#define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+                                                        "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+                                                        " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+                                                        "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+                                                        "<head><title>404 - Not Found</title></head>" \
+                                                        "<body><h1>404 - Not Found</h1></body>" \
+                                                        "</html>"
+
+                                                        t = time(NULL);
+                                                        tmp = localtime(&t);
+                                                        strftime(timestr, sizeof(timestr), "%a, %d %b %Y %T %Z", tmp);
+
+                                                        sprintf((this->conns)[fd].wbuf, RESP_HEAD "\r\n" RESP_DATA, sizeof(RESP_DATA), timestr);
+                                                        (this->fds)[i].events = (this->fds)[i].events | POLLOUT;
+                                                }
+
+                                                queue->nrequests = 0;
+                                        }
+                                }
+                        }
+
+                        if (0 != ((this->fds)[i].revents & POLLOUT)) {
+                                write(
+                                                (this->fds)[i].fd,
+                                                (this->conns)[fd].wbuf,
+                                                strlen((this->conns)[fd].wbuf));
+                                (this->fds)[i].events = (this->fds)[i].events & ~POLLOUT;
+                                serverCloseConn(this, i);
+                        }
+                }
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/run_8c__incl.map b/docs/html/run_8c__incl.map new file mode 100644 index 0000000..4fb7311 --- /dev/null +++ b/docs/html/run_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/run_8c__incl.md5 b/docs/html/run_8c__incl.md5 new file mode 100644 index 0000000..3f29d75 --- /dev/null +++ b/docs/html/run_8c__incl.md5 @@ -0,0 +1 @@ +fc8b35c96924aa38195cea520e874d26 \ No newline at end of file diff --git a/docs/html/run_8c__incl.png b/docs/html/run_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..98e73d1a505fb51a919fff6ac5d85aafecd1ff24 GIT binary patch literal 7222 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 Ji=1WXzX276 + + + diff --git a/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..73df168 --- /dev/null +++ b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +7a132c7f4a071fc3ade2758932a38a64 \ No newline at end of file diff --git a/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2743798b96ffa8e0eb801f07cfaffce31f2480d2 GIT binary patch literal 1162 zcmV;51aCcPcXt;T7mtsRzrVlJ)6)O| z0RR90d-k(z00001bW%=J06^y0W&i*K{7FPXRCt{2n~RpCAPj~XRM?8Q!}~w%0tp&A z^x|%5#pXY=vSL8^gitRLg2iI7SZ9`fxjx;a|Iy1E&oqiw_)akmDyBijG^m&c71N;F z8n2(}htx9NPjEx(9!+5`8kcQMw-{Cjnn$r2DLd8V5T!S+r zKF~qSXpyb32K_jZ-CX0PpAJon$(_1#7WL6U`Q2ROJ0*ow4JLQ$%2`xP!z7Tq&U9*9yXmSUrpmDW%0cD~PEU(wiv)@+TmnI_{qJWqd27z~)@bLL3H|Al{x z9fSSpXxMQW?PB_2xcI(b=5g|f7R(xgyYMuIz9%$#S86yNjlmk7J~IvQ8@+cD;1?VR?^ZGEn#Q>FXQnZ_HN}mOewuom1<+s2A~gKgIO8+Zc$Jt2 z(_k9UsM=fDLSy6lS@>@q6Il6YUwJ6UdqXYaNDEy_y9vzKF{wtn$=}(jkw cu~>ELFJ1J{)9Eh(*Z=?k07*qoM6N<$f + + diff --git a/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..e321b7b --- /dev/null +++ b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +ce960d181d782373295747cea9ba8363 \ No newline at end of file diff --git a/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png b/docs/html/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..eb08ad78ecb8f7bfd07bb2ed50f828934a97e58a GIT binary patch literal 532 zcmV+v0_**WP)CcPcXt;T7mtsRzrVlJ)6)O| z0RR90g=iaa00001bW%=J06^y0W&i*IhDk(0R9J=W)@^gbAPfLtu#~P4UXK6&V;2Zk zoVtOvesIYNdRWdp5Nd_s;NbYcNJqpQlDL{4UmxR!(FuYLY+wT$KFd(<&TDv^LEZgw zry&4<@!bX~cN*pc41gV!zQZ8pUPH%>))0L1E=KFU&1nYzWy`|Xp*#}KhWsimCReV% zV~`X>8Kp(*dC>`1e>x>Sms%==eTL+~rDzSnnloO5^BETF5R_w(4PZ=TFgOct404Mx zgB43@3O_1*D~9r^#{kLZR6KTJrE(=1i=whhn zAv`eb*@ugPR)5ey=fULSr+UZi^C7Q8KMgLLhX&Cwo-`;l%xM}lIJ__6UKsC9trNAZD!>s|O9QikJS!b + + + +server: src/server/run.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server/run.c

+
+
+Go to the documentation of this file.
00001 #include <poll.h> /* for poll system call and related */
+00002 #include <string.h>     /* for memset and stuff */
+00003 #include <stdlib.h>     /* for exit */
+00004 #include <errno.h>      /* for errno */
+00005 #include <unistd.h>
+00006 #include <time.h>
+00007 
+00008 #include "server.h"
+00009 #include "socket.h"
+00010 #include "logger.h"
+00011 #include "signalHandling.h"
+00012 #include "interface/class.h"
+00013 #include "interface/stream_reader.h"
+00014 #include "interface/logger.h"
+00015 
+00016 //* @TODO: to be removed
+00017 #include "http/request.h"
+00018 #include "http/request_parser.h"
+00019 #include "http/request_queue.h"
+00020 //* until here
+00021 
+00022 #undef  MAX
+00023 #define MAX(x,y) ((x) > (y) ? (x) : (y))
+00024 
+00025 #include "poll.c"
+00026 #include "handle_accept.c"
+00027 #include "read.c"
+00028 
+00029 void
+00030 serverRun(Server this)
+00031 {
+00032     loggerLog(this->logger, LOGGER_INFO, "service started");
+00033 
+00044     while (!doShutdown) /* until error or signal  */
+00045     {
+00046                 int          events;
+00047                 unsigned int i;
+00048 
+00049                 events = serverPoll(this);
+00050                 if (doShutdown) break;
+00051 
+00052                 for (i=0; i < events; i++) {
+00053                         int fd = (this->fds)[i].fd;
+00054                         //int nreads = 0, nwrites = 0;
+00055 
+00056                         if (0 != ((this->fds)[i].revents & POLLIN)) {
+00060                                 if (this->sock->handle == (this->fds)[i].fd) {
+00061                                         serverHandleAccept(this);
+00062                                 }
+00063 
+00067                                 else {
+00068                                         serverRead(this, i);
+00069 
+00076                                         {
+00077                                                 int              j;
+00078                                                 HttpRequestQueue queue =
+00079                                                         ((HttpRequestParser)(this->conns)[fd].reader)->request_queue;
+00080 
+00081                                                 for (j=0; j<queue->nrequests; j++) {
+00082                                                         HttpRequest request = queue->requests[j];
+00083 
+00088                                                         delete(&request);
+00089 
+00093                                                         time_t t;
+00094                                                         struct tm * tmp;
+00095                                                         char timestr[200];
+00096 
+00097 #define RESP_HEAD "HTTP/1.1 404 Not Found\r\n" \
+00098                                                         "Content-Type: text/html\r\n" \
+00099                                                         "Content-Length: %lu\r\n" \
+00100                                                         "Date: %s\r\n" \
+00101                                                         "Server: testserver\r\n"
+00102 
+00103 #define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+00104                                                         "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+00105                                                         " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+00106                                                         "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+00107                                                         "<head><title>404 - Not Found</title></head>" \
+00108                                                         "<body><h1>404 - Not Found</h1></body>" \
+00109                                                         "</html>"
+00110 
+00111                                                         t = time(NULL);
+00112                                                         tmp = localtime(&t);
+00113                                                         strftime(timestr, sizeof(timestr), "%a, %d %b %Y %T %Z", tmp);
+00114 
+00119                                                         sprintf((this->conns)[fd].wbuf, RESP_HEAD "\r\n" RESP_DATA, sizeof(RESP_DATA), timestr);
+00120                                                         (this->fds)[i].events = (this->fds)[i].events | POLLOUT;
+00121                                                 }
+00122 
+00123                                                 queue->nrequests = 0;
+00124                                         }
+00125                                 }
+00126                         }
+00127 
+00131                         if (0 != ((this->fds)[i].revents & POLLOUT)) {
+00132                                 write(
+00133                                                 (this->fds)[i].fd,
+00134                                                 (this->conns)[fd].wbuf,
+00135                                                 strlen((this->conns)[fd].wbuf));
+00136                                 (this->fds)[i].events = (this->fds)[i].events & ~POLLOUT;
+00137                                 serverCloseConn(this, i);
+00138                         }
+00139                 }
+00140     }
+00141 }
+00142 
+00143 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/search/all_5f.html b/docs/html/search/all_5f.html new file mode 100644 index 0000000..f0d663b --- /dev/null +++ b/docs/html/search/all_5f.html @@ -0,0 +1,48 @@ + + + + + + + +
+
Loading...
+ +
+
+ _CALL + class.h +
+
+
+
+ _ISOC99_SOURCE + class.h +
+
+
+
+ _NULL + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_61.html b/docs/html/search/all_61.html new file mode 100644 index 0000000..2889d36 --- /dev/null +++ b/docs/html/search/all_61.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ accept.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_62.html b/docs/html/search/all_62.html new file mode 100644 index 0000000..f4bfbe1 --- /dev/null +++ b/docs/html/search/all_62.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ body + HttpRequest +
+
+
+
+ buffer + HttpRequestParser +
+
+
+
+ buffer_size + HttpRequestParser +
+
+
+
+ buffer_used + HttpRequestParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_63.html b/docs/html/search/all_63.html new file mode 100644 index 0000000..4d4ec77 --- /dev/null +++ b/docs/html/search/all_63.html @@ -0,0 +1,171 @@ + + + + + + + +
+
Loading...
+
+
+ CALL + class.h +
+
+
+ +
+
+
+ class.c +
+
+
+
+ class.c +
+
+
+
+ class.h +
+
+
+
+ class.h +
+
+ + +
+
+ CLASS_MAGIC + class.h +
+
+
+
+ class_ptr + class.h +
+
+ + + +
+
+ CLEAR_CONN + server.h +
+
+ +
+ +
+
+
+ connect.c +
+
+
+
+ conns + Server +
+
+ +
+
+ CREATE_IMPL + interface.h +
+
+
+
+ ctor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_64.html b/docs/html/search/all_64.html new file mode 100644 index 0000000..12d0f48 --- /dev/null +++ b/docs/html/search/all_64.html @@ -0,0 +1,58 @@ + + + + + + + +
+
Loading...
+
+
+ daemonize + daemonize.c +
+
+
+ +
+
+
+ delete + class.h +
+
+
+
+ done + HttpRequest +
+
+ +
+
+ dtor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_65.html b/docs/html/search/all_65.html new file mode 100644 index 0000000..addb332 --- /dev/null +++ b/docs/html/search/all_65.html @@ -0,0 +1,36 @@ + + + + + + + +
+
Loading...
+
+
+ e_HttpRequestState + request_parser.h +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_66.html b/docs/html/search/all_66.html new file mode 100644 index 0000000..d9b30d1 --- /dev/null +++ b/docs/html/search/all_66.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ fptr_classInit + class.h +
+
+
+
+ fptr_clone + class.h +
+
+
+
+ fptr_ctor + class.h +
+
+
+
+ fptr_dtor + class.h +
+
+
+
+ fptr_log + logger.h +
+
+
+
+ fptr_streamReaderRead + stream_reader.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_68.html b/docs/html/search/all_68.html new file mode 100644 index 0000000..2e50bb9 --- /dev/null +++ b/docs/html/search/all_68.html @@ -0,0 +1,112 @@ + + + + + + + +
+
Loading...
+
+
+ handle + Sock +
+
+ +
+
+ HAS_PARENT + class.h +
+
+
+
+ header + HttpRequest +
+
+
+
+ HTTP_REQUEST_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_GARBAGE + request_parser.h +
+
+
+
+ HTTP_REQUEST_HEADERS_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_PARSER_READ_CHUNK + request_parser.h +
+
+
+
+ HTTP_REQUEST_QUEUE_MAX + request_queue.h +
+
+
+
+ HTTP_REQUEST_REQUEST_LINE_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_START + request_parser.h +
+
+
+
+ http_version + HttpRequest +
+
+
+ +
+ + +
+
+ HttpRequestState + request_parser.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_69.html b/docs/html/search/all_69.html new file mode 100644 index 0000000..1605c7b --- /dev/null +++ b/docs/html/search/all_69.html @@ -0,0 +1,138 @@ + + + + + + + +
+
Loading...
+
+
+ i_Class +
+
+
+
+ i_Logger +
+
+ +
+
+ IFACE + interface.h +
+
+
+
+ IFACE_EXISTS + class.h +
+
+
+
+ IFACE_GET + class.h +
+
+
+ +
+
+
+ iface_impl_ptr + interface.h +
+
+
+
+ iface_ptr + interface.h +
+
+
+
+ impl + iface_impl +
+
+
+
+ init + class +
+
+ +
+
+ INIT_IMPL + interface.h +
+
+ +
+
+ interface +
+
+
+ +
+
+ +
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_6c.html b/docs/html/search/all_6c.html new file mode 100644 index 0000000..b82408b --- /dev/null +++ b/docs/html/search/all_6c.html @@ -0,0 +1,148 @@ + + + + + + + +
+
Loading...
+
+
+ listen.c +
+
+ +
+ +
+
+
+ logger.c +
+
+
+
+ logger.c +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
+
+ LOGGER_ALERT + logger.h +
+
+
+
+ LOGGER_CRIT + logger.h +
+
+
+
+ LOGGER_DEBUG + logger.h +
+
+
+
+ LOGGER_EMERG + logger.h +
+
+
+
+ LOGGER_ERR + logger.h +
+
+
+
+ LOGGER_INFO + logger.h +
+
+ + +
+
+ LOGGER_NOTICE + logger.h +
+
+
+
+ LOGGER_WARNING + logger.h +
+
+ +
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_6d.html b/docs/html/search/all_6d.html new file mode 100644 index 0000000..5755fb3 --- /dev/null +++ b/docs/html/search/all_6d.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ magic + class +
+
+
+
+ main + testserver.c +
+
+
+
+ MAX + run.c +
+
+
+
+ MAX_IFACE + interface.h +
+
+
+
+ method + HttpRequest +
+
+
+
+ METHOD_GET + interface.h +
+
+
+
+ min_level + Logger +
+
+
+
+ MOVE_SIZE + server.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_6e.html b/docs/html/search/all_6e.html new file mode 100644 index 0000000..f0e6b75 --- /dev/null +++ b/docs/html/search/all_6e.html @@ -0,0 +1,71 @@ + + + + + + + +
+
Loading...
+ +
+
+ ndel + Server +
+
+
+
+ new + class.h +
+
+
+
+ nfds + Server +
+
+
+
+ nimpl + iface_impl +
+
+
+
+ nmethods + interface +
+
+
+
+ nrequests + HttpRequestQueue +
+
+
+
+ NUMARGS + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_6f.html b/docs/html/search/all_6f.html new file mode 100644 index 0000000..2a9bfcb --- /dev/null +++ b/docs/html/search/all_6f.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ object_size + class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_70.html b/docs/html/search/all_70.html new file mode 100644 index 0000000..596d482 --- /dev/null +++ b/docs/html/search/all_70.html @@ -0,0 +1,55 @@ + + + + + + + +
+
Loading...
+
+
+ parent + class +
+
+
+
+ poll.c +
+
+
+
+ POLL_FD_NSIZE + server.h +
+
+
+
+ POLL_FD_SIZE + server.h +
+
+
+
+ POLLFD + poll.c +
+
+
+
+ port + Sock +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_72.html b/docs/html/search/all_72.html new file mode 100644 index 0000000..6166118 --- /dev/null +++ b/docs/html/search/all_72.html @@ -0,0 +1,114 @@ + + + + + + + +
+
Loading...
+
+
+ rbuf + Server +
+
+
+
+ read + i_StreamReader +
+
+
+
+ read.c +
+
+
+
+ reader + Server +
+
+
+
+ request.c +
+
+
+
+ request.h +
+
+ + +
+
+ request_queue + HttpRequestParser +
+
+ + +
+
+ requests + HttpRequestQueue +
+
+
+
+ RESP_DATA + run.c +
+
+
+
+ RESP_HEAD + run.c +
+
+
+
+ RETCALL + class.h +
+
+
+
+ rpos + Server +
+
+
+
+ run.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_73.html b/docs/html/search/all_73.html new file mode 100644 index 0000000..8134505 --- /dev/null +++ b/docs/html/search/all_73.html @@ -0,0 +1,150 @@ + + + + + + + +
+
Loading...
+
+
+ Server +
+
+
+
+ server.c +
+
+
+
+ server.h +
+
+ + + + +
+
+ simpl + iface_impl +
+
+
+
+ Sock + +
+
+
+
+ socket.c +
+
+
+
+ socket.h +
+
+ + + +
+
+ state + HttpRequestParser +
+
+
+
+ stderr.c +
+
+ + + +
+
+ syslog.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_74.html b/docs/html/search/all_74.html new file mode 100644 index 0000000..943f30e --- /dev/null +++ b/docs/html/search/all_74.html @@ -0,0 +1,40 @@ + + + + + + + +
+
Loading...
+ +
+ +
+
+
+ TRUE + interface.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_75.html b/docs/html/search/all_75.html new file mode 100644 index 0000000..8e06639 --- /dev/null +++ b/docs/html/search/all_75.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ uri + HttpRequest +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_76.html b/docs/html/search/all_76.html new file mode 100644 index 0000000..338dc84 --- /dev/null +++ b/docs/html/search/all_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ value + HttpRequest +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/all_77.html b/docs/html/search/all_77.html new file mode 100644 index 0000000..e31298c --- /dev/null +++ b/docs/html/search/all_77.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ wbuf + Server +
+
+
+
+ wpos + Server +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/classes_63.html b/docs/html/search/classes_63.html new file mode 100644 index 0000000..8ff1d78 --- /dev/null +++ b/docs/html/search/classes_63.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/classes_68.html b/docs/html/search/classes_68.html new file mode 100644 index 0000000..aff0bc5 --- /dev/null +++ b/docs/html/search/classes_68.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+ +
+ + +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/classes_69.html b/docs/html/search/classes_69.html new file mode 100644 index 0000000..95a7f98 --- /dev/null +++ b/docs/html/search/classes_69.html @@ -0,0 +1,45 @@ + + + + + + + +
+
Loading...
+
+
+ i_Class +
+
+
+
+ i_Logger +
+
+ +
+ +
+
+
+ interface +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/classes_6c.html b/docs/html/search/classes_6c.html new file mode 100644 index 0000000..253f5b9 --- /dev/null +++ b/docs/html/search/classes_6c.html @@ -0,0 +1,35 @@ + + + + + + + +
+
Loading...
+
+
+ Logger +
+
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/classes_73.html b/docs/html/search/classes_73.html new file mode 100644 index 0000000..bc7ef9b --- /dev/null +++ b/docs/html/search/classes_73.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+
+ Server +
+
+
+
+ Sock +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/close.png b/docs/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/docs/html/search/defines_5f.html b/docs/html/search/defines_5f.html new file mode 100644 index 0000000..805a4b7 --- /dev/null +++ b/docs/html/search/defines_5f.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ _CALL + class.h +
+
+
+
+ _ISOC99_SOURCE + class.h +
+
+
+
+ _NULL + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_63.html b/docs/html/search/defines_63.html new file mode 100644 index 0000000..180ff4c --- /dev/null +++ b/docs/html/search/defines_63.html @@ -0,0 +1,62 @@ + + + + + + + +
+
Loading...
+
+
+ CALL + class.h +
+
+
+
+ CLASS + class.h +
+
+
+
+ CLASS_MAGIC + class.h +
+
+
+
+ CLEAR_CONN + server.h +
+
+
+
+ clone + class.h +
+
+
+
+ CREATE_CLASS + class.h +
+
+
+
+ CREATE_IMPL + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_64.html b/docs/html/search/defines_64.html new file mode 100644 index 0000000..5c5d81b --- /dev/null +++ b/docs/html/search/defines_64.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ delete + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_65.html b/docs/html/search/defines_65.html new file mode 100644 index 0000000..194b08b --- /dev/null +++ b/docs/html/search/defines_65.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ EXTENDS + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_68.html b/docs/html/search/defines_68.html new file mode 100644 index 0000000..a793899 --- /dev/null +++ b/docs/html/search/defines_68.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ HAS_PARENT + class.h +
+
+
+
+ HTTP_REQUEST_PARSER_READ_CHUNK + request_parser.h +
+
+
+
+ HTTP_REQUEST_QUEUE_MAX + request_queue.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_69.html b/docs/html/search/defines_69.html new file mode 100644 index 0000000..ca7d70c --- /dev/null +++ b/docs/html/search/defines_69.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ IFACE + interface.h +
+
+
+
+ IFACE_EXISTS + class.h +
+
+
+
+ IFACE_GET + class.h +
+
+
+
+ INIT_IFACE + interface.h +
+
+
+
+ INIT_IMPL + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_6d.html b/docs/html/search/defines_6d.html new file mode 100644 index 0000000..5d0afbe --- /dev/null +++ b/docs/html/search/defines_6d.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ MAX + run.c +
+
+
+
+ MAX_IFACE + interface.h +
+
+
+
+ METHOD_GET + interface.h +
+
+
+
+ MOVE_SIZE + server.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_6e.html b/docs/html/search/defines_6e.html new file mode 100644 index 0000000..18c753e --- /dev/null +++ b/docs/html/search/defines_6e.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ new + class.h +
+
+
+
+ NUMARGS + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_70.html b/docs/html/search/defines_70.html new file mode 100644 index 0000000..8046366 --- /dev/null +++ b/docs/html/search/defines_70.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ POLL_FD_NSIZE + server.h +
+
+
+
+ POLL_FD_SIZE + server.h +
+
+
+
+ POLLFD + poll.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_72.html b/docs/html/search/defines_72.html new file mode 100644 index 0000000..c035e89 --- /dev/null +++ b/docs/html/search/defines_72.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ RESP_DATA + run.c +
+
+
+
+ RESP_HEAD + run.c +
+
+
+
+ RETCALL + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/defines_74.html b/docs/html/search/defines_74.html new file mode 100644 index 0000000..7548888 --- /dev/null +++ b/docs/html/search/defines_74.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ TRUE + interface.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/enums_65.html b/docs/html/search/enums_65.html new file mode 100644 index 0000000..ce50024 --- /dev/null +++ b/docs/html/search/enums_65.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ e_HttpRequestState + request_parser.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/enums_6c.html b/docs/html/search/enums_6c.html new file mode 100644 index 0000000..1379cc0 --- /dev/null +++ b/docs/html/search/enums_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ logger_level + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/enumvalues_68.html b/docs/html/search/enumvalues_68.html new file mode 100644 index 0000000..5d17b26 --- /dev/null +++ b/docs/html/search/enumvalues_68.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ HTTP_REQUEST_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_GARBAGE + request_parser.h +
+
+
+
+ HTTP_REQUEST_HEADERS_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_REQUEST_LINE_DONE + request_parser.h +
+
+
+
+ HTTP_REQUEST_START + request_parser.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/enumvalues_6c.html b/docs/html/search/enumvalues_6c.html new file mode 100644 index 0000000..c12c70e --- /dev/null +++ b/docs/html/search/enumvalues_6c.html @@ -0,0 +1,68 @@ + + + + + + + +
+
Loading...
+
+
+ LOGGER_ALERT + logger.h +
+
+
+
+ LOGGER_CRIT + logger.h +
+
+
+
+ LOGGER_DEBUG + logger.h +
+
+
+
+ LOGGER_EMERG + logger.h +
+
+
+
+ LOGGER_ERR + logger.h +
+
+
+
+ LOGGER_INFO + logger.h +
+
+
+
+ LOGGER_NOTICE + logger.h +
+
+
+
+ LOGGER_WARNING + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_61.html b/docs/html/search/files_61.html new file mode 100644 index 0000000..2889d36 --- /dev/null +++ b/docs/html/search/files_61.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ accept.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_63.html b/docs/html/search/files_63.html new file mode 100644 index 0000000..ae305e8 --- /dev/null +++ b/docs/html/search/files_63.html @@ -0,0 +1,50 @@ + + + + + + + +
+
Loading...
+
+
+ class.c +
+
+
+
+ class.c +
+
+
+
+ class.h +
+
+
+
+ class.h +
+
+
+ +
+
+
+ connect.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_64.html b/docs/html/search/files_64.html new file mode 100644 index 0000000..e9109a8 --- /dev/null +++ b/docs/html/search/files_64.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_68.html b/docs/html/search/files_68.html new file mode 100644 index 0000000..d6fe726 --- /dev/null +++ b/docs/html/search/files_68.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_69.html b/docs/html/search/files_69.html new file mode 100644 index 0000000..835fcbb --- /dev/null +++ b/docs/html/search/files_69.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+
+ +
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_6c.html b/docs/html/search/files_6c.html new file mode 100644 index 0000000..46aee43 --- /dev/null +++ b/docs/html/search/files_6c.html @@ -0,0 +1,45 @@ + + + + + + + +
+
Loading...
+
+
+ listen.c +
+
+
+
+ logger.c +
+
+
+
+ logger.c +
+
+
+
+ logger.h +
+
+
+
+ logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_70.html b/docs/html/search/files_70.html new file mode 100644 index 0000000..fb1eebe --- /dev/null +++ b/docs/html/search/files_70.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+
+ poll.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_72.html b/docs/html/search/files_72.html new file mode 100644 index 0000000..0249cba --- /dev/null +++ b/docs/html/search/files_72.html @@ -0,0 +1,60 @@ + + + + + + + +
+
Loading...
+
+
+ read.c +
+
+
+
+ request.c +
+
+
+
+ request.h +
+
+ + + + +
+
+ run.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_73.html b/docs/html/search/files_73.html new file mode 100644 index 0000000..bab8a83 --- /dev/null +++ b/docs/html/search/files_73.html @@ -0,0 +1,70 @@ + + + + + + + +
+
Loading...
+
+
+ server.c +
+
+
+
+ server.h +
+
+ + +
+
+ socket.c +
+
+
+
+ socket.h +
+
+
+
+ stderr.c +
+
+ + +
+
+ syslog.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/files_74.html b/docs/html/search/files_74.html new file mode 100644 index 0000000..3df9933 --- /dev/null +++ b/docs/html/search/files_74.html @@ -0,0 +1,25 @@ + + + + + + + +
+
Loading...
+
+ +
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/functions_63.html b/docs/html/search/functions_63.html new file mode 100644 index 0000000..2a0fdf9 --- /dev/null +++ b/docs/html/search/functions_63.html @@ -0,0 +1,80 @@ + + + + + + + + + + diff --git a/docs/html/search/functions_64.html b/docs/html/search/functions_64.html new file mode 100644 index 0000000..36558f7 --- /dev/null +++ b/docs/html/search/functions_64.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ daemonize + daemonize.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/functions_65.html b/docs/html/search/functions_65.html new file mode 100644 index 0000000..0c365f3 --- /dev/null +++ b/docs/html/search/functions_65.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/functions_69.html b/docs/html/search/functions_69.html new file mode 100644 index 0000000..72db7be --- /dev/null +++ b/docs/html/search/functions_69.html @@ -0,0 +1,54 @@ + + + + + + + + + + diff --git a/docs/html/search/functions_6c.html b/docs/html/search/functions_6c.html new file mode 100644 index 0000000..f526453 --- /dev/null +++ b/docs/html/search/functions_6c.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/functions_6d.html b/docs/html/search/functions_6d.html new file mode 100644 index 0000000..34e44da --- /dev/null +++ b/docs/html/search/functions_6d.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ main + testserver.c +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/functions_73.html b/docs/html/search/functions_73.html new file mode 100644 index 0000000..128b80d --- /dev/null +++ b/docs/html/search/functions_73.html @@ -0,0 +1,74 @@ + + + + + + + + + + diff --git a/docs/html/search/functions_74.html b/docs/html/search/functions_74.html new file mode 100644 index 0000000..a99358c --- /dev/null +++ b/docs/html/search/functions_74.html @@ -0,0 +1,29 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/mag_sel.png b/docs/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..50249e5 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 36px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..44e1bc7 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,742 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111011001111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000011001000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101100011001000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011100011001111101101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 8: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001110011000110101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location.href = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} diff --git a/docs/html/search/search_l.png b/docs/html/search/search_l.png new file mode 100644 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 GIT binary patch literal 604 zcmV-i0;BzjP)k7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + +
+
Loading...
+
+
+ class_ptr + class.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/typedefs_66.html b/docs/html/search/typedefs_66.html new file mode 100644 index 0000000..d9b30d1 --- /dev/null +++ b/docs/html/search/typedefs_66.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ fptr_classInit + class.h +
+
+
+
+ fptr_clone + class.h +
+
+
+
+ fptr_ctor + class.h +
+
+
+
+ fptr_dtor + class.h +
+
+
+
+ fptr_log + logger.h +
+
+
+
+ fptr_streamReaderRead + stream_reader.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/typedefs_68.html b/docs/html/search/typedefs_68.html new file mode 100644 index 0000000..7df19cd --- /dev/null +++ b/docs/html/search/typedefs_68.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ HttpRequestState + request_parser.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/typedefs_69.html b/docs/html/search/typedefs_69.html new file mode 100644 index 0000000..ff27746 --- /dev/null +++ b/docs/html/search/typedefs_69.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ iface_impl_ptr + interface.h +
+
+
+
+ iface_ptr + interface.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/typedefs_6c.html b/docs/html/search/typedefs_6c.html new file mode 100644 index 0000000..1488b10 --- /dev/null +++ b/docs/html/search/typedefs_6c.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ logger_level + logger.h +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_5f.html b/docs/html/search/variables_5f.html new file mode 100644 index 0000000..c8468c4 --- /dev/null +++ b/docs/html/search/variables_5f.html @@ -0,0 +1,30 @@ + + + + + + + +
+
Loading...
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_62.html b/docs/html/search/variables_62.html new file mode 100644 index 0000000..f4bfbe1 --- /dev/null +++ b/docs/html/search/variables_62.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+
+
+ body + HttpRequest +
+
+
+
+ buffer + HttpRequestParser +
+
+
+
+ buffer_size + HttpRequestParser +
+
+
+
+ buffer_used + HttpRequestParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_63.html b/docs/html/search/variables_63.html new file mode 100644 index 0000000..6f83da1 --- /dev/null +++ b/docs/html/search/variables_63.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ clone + i_Class +
+
+
+
+ conns + Server +
+
+
+
+ ctor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_64.html b/docs/html/search/variables_64.html new file mode 100644 index 0000000..f37e0e0 --- /dev/null +++ b/docs/html/search/variables_64.html @@ -0,0 +1,41 @@ + + + + + + + +
+
Loading...
+
+
+ done + HttpRequest +
+
+ +
+
+ dtor + i_Class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_68.html b/docs/html/search/variables_68.html new file mode 100644 index 0000000..5aecc0b --- /dev/null +++ b/docs/html/search/variables_68.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ handle + Sock +
+
+
+
+ header + HttpRequest +
+
+
+
+ http_version + HttpRequest +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_69.html b/docs/html/search/variables_69.html new file mode 100644 index 0000000..8743d8c --- /dev/null +++ b/docs/html/search/variables_69.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ impl + iface_impl +
+
+
+
+ init + class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_6c.html b/docs/html/search/variables_6c.html new file mode 100644 index 0000000..3b0f05c --- /dev/null +++ b/docs/html/search/variables_6c.html @@ -0,0 +1,44 @@ + + + + + + + +
+
Loading...
+ +
+
+ logger + Server +
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_6d.html b/docs/html/search/variables_6d.html new file mode 100644 index 0000000..1e33682 --- /dev/null +++ b/docs/html/search/variables_6d.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ magic + class +
+
+
+
+ method + HttpRequest +
+
+
+
+ min_level + Logger +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_6e.html b/docs/html/search/variables_6e.html new file mode 100644 index 0000000..dc0901b --- /dev/null +++ b/docs/html/search/variables_6e.html @@ -0,0 +1,59 @@ + + + + + + + +
+
Loading...
+ +
+
+ ndel + Server +
+
+
+
+ nfds + Server +
+
+
+
+ nimpl + iface_impl +
+
+
+
+ nmethods + interface +
+
+
+
+ nrequests + HttpRequestQueue +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_6f.html b/docs/html/search/variables_6f.html new file mode 100644 index 0000000..2a9bfcb --- /dev/null +++ b/docs/html/search/variables_6f.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ object_size + class +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_70.html b/docs/html/search/variables_70.html new file mode 100644 index 0000000..01c91ab --- /dev/null +++ b/docs/html/search/variables_70.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ parent + class +
+
+
+
+ port + Sock +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_72.html b/docs/html/search/variables_72.html new file mode 100644 index 0000000..e503659 --- /dev/null +++ b/docs/html/search/variables_72.html @@ -0,0 +1,56 @@ + + + + + + + +
+
Loading...
+
+
+ rbuf + Server +
+
+
+
+ read + i_StreamReader +
+
+
+
+ reader + Server +
+
+
+
+ request_queue + HttpRequestParser +
+
+
+
+ requests + HttpRequestQueue +
+
+
+
+ rpos + Server +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_73.html b/docs/html/search/variables_73.html new file mode 100644 index 0000000..96c154e --- /dev/null +++ b/docs/html/search/variables_73.html @@ -0,0 +1,38 @@ + + + + + + + +
+
Loading...
+
+
+ simpl + iface_impl +
+
+
+
+ sock + Server +
+
+
+
+ state + HttpRequestParser +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_75.html b/docs/html/search/variables_75.html new file mode 100644 index 0000000..8e06639 --- /dev/null +++ b/docs/html/search/variables_75.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ uri + HttpRequest +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_76.html b/docs/html/search/variables_76.html new file mode 100644 index 0000000..338dc84 --- /dev/null +++ b/docs/html/search/variables_76.html @@ -0,0 +1,26 @@ + + + + + + + +
+
Loading...
+
+
+ value + HttpRequest +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/search/variables_77.html b/docs/html/search/variables_77.html new file mode 100644 index 0000000..e31298c --- /dev/null +++ b/docs/html/search/variables_77.html @@ -0,0 +1,32 @@ + + + + + + + +
+
Loading...
+
+
+ wbuf + Server +
+
+
+
+ wpos + Server +
+
+
Searching...
+
No Matches
+ +
+ + diff --git a/docs/html/server_8c.html b/docs/html/server_8c.html new file mode 100644 index 0000000..727a08e --- /dev/null +++ b/docs/html/server_8c.html @@ -0,0 +1,206 @@ + + + + +server: src/server.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/server.c File Reference

+
+
+
#include <poll.h>
+#include <string.h>
+#include <stdlib.h>
+#include "class.h"
+#include "server.h"
+#include "socket.h"
+#include "logger.h"
+#include "interface/class.h"
+
+Include dependency graph for server.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, NULL)
 CREATE_CLASS (Server, NULL, IFACE(Class))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Server ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/server_8c__incl.map b/docs/html/server_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/server_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/server_8c__incl.md5 b/docs/html/server_8c__incl.md5 new file mode 100644 index 0000000..aa06484 --- /dev/null +++ b/docs/html/server_8c__incl.md5 @@ -0,0 +1 @@ +84d1b67b8aa97e8c7b1dbb4906d52108 \ No newline at end of file diff --git a/docs/html/server_8c__incl.png b/docs/html/server_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3e9c4f7732acad8945da5b9096b3982b9ac0ba GIT binary patch literal 2926 zcmZXW2T&787spZb=v9isVQ8W!AWc9ZB=pdf4pIcMAOWf35keqH5hN;JDAEy7iZnSy zjF1EfMQK5*5Fk<`HDCyYmVEK%o11Uuo7vfYJ3H_9fBWX`&U<2i4I;oR#mm9LAz)=` z=E%WuoW`~va&xlh?V3U!_5!xIbv9?RSnUMDnKPkF%&o@IcZ@#ut1mS9sts>QcHC7u(;!v8xW1T&Qb zsEx*h***Bt6GYQwF`!UP-uI{Y#?Kwa0)ql>^Hue{ea&dd1Se^1hctg4bu(lWHv^(^2t%L6 zhC_`kBuF_B?~Qx+_ckHpThBPDMO5D$S5PQyxltk+ z;0YaIK)$N-{)1Xs&`DeAi_I0K+|C;ywZHA?ag`$E{kC2*$XS>ySofU5VtOyK$~x}+ zz$aM+dCd-=T_KihF{lUh`81~eLUb!_a7!CaOkO+m1*h*Ln7-&;i2BDPXObA!LCRJ1Cw~9CGTv zd25cqc(E^Q6H)I$&u>C->&LZ_3dZ__^i7Qi1*PDj35c_}orG1tH zuqoT-HVXdCGI(su?1;*XA4UNsxzOrS|L!fZyYW`iPOv6o5=UD*Ya!%EhLWYOKcjBNDfQzxhGWww0--zoT#J@TIh@9)(Mc4_E7A z!x9(&P-&DUo$X>tSarZB@NV>L2HxI2ETjv^%|}MYm9$%8_shppX8k-2 zKCI6kJW#%b*j|l&?>FLGxju*I(jDi-fs5n`T?{3SdYPy@0j7^vlXhor9?~x8c;wqm z-BF5(2)B8@dXAk8q@X$16Z&G5ex?@ZHP4O4GuLQkl24J&o!yTkb(7ofUX35lUWOO1 z`yMJ-%PIC9Tv53kB40h`HI51rng>{3{Oh|PPxV+|Y|f~`GCrpnfECL>9Y4LBOGt!;;;peK!n2z>p>j%WC6F6q&P_n7&@{&kYV*9l8F zNoBuAgn41@tUM7F4Mi}LspIK$J3Sj;xw~c~|021KTwN}aMAWJE2Z=LFGW;)Co%dCP zHkr+Tgp`yjk4|UIJkJnNS~;gfl_0tTs|F zw50SM8Dtm~f>pky4)UDLlh`6T4uLdsEaZvhI){^A<$1cwtz+s+f}2oWPqE_|hzH=e zG{uPPn@8x8-3vb@%U<8MAkU=jd)Rh-^F3alBFK*`LNk{>*V^b{J4?G{M#7HLH~JP) zFVesk3Dg4*U#G;5LDe}0qm00LxNgR8lKq1s2=bUzo=DVf&7Zd-pF&-LK6SF1Hbcny zB(Vogp)4=!ffO&g#~p`H|UzhI2w#y^Rabd59|4y5Qn_VyQZo9=_xM%AxBpIpUu zPVA)wpVl}bV?p>D)q5H#dQ#@vdczFor6a<1)>1NhRGw0HN3;KdH`i#H1#R;CMh;!0 zmRfC&Bwo5Wh)RWQU-K7F$y#2Oah-qoRW1c^dw#A}H{stm=M;s9CdNvy42f3MS=kE0iahnA0D;_^FUMyqP8) zNu;D{hUx@hoSty}X^ zUxM>mwbud~Ob;h}eSc{m-M=hdQqX{k_hD(%_^nC74ON=AGjZ*T6-@Yn;j8!ITGjj^4z2}>o;ad! z+PcB&v|Amy%lllxLa2xwR|wgzVL0ORsv4M6%wv(H#23&EYfaabOfdG`u0v z9I>Vc$Rfns!Exphm}hqUYq=&tnUnmSi@J}bD&8QNpH5_Z*eMrLt1m4i%-{3|QQff! z=EeN_tEc!vvOVcdc|=sC{Oc(tIn@>`$3PjkJ2rDWm~^7#MycR2KsvE0i;(aS8+k)) zD%Ygu;4+ENS+~e%s%L<|mawW*tYsjv)NY+M)r+I7H)g36aHIpBOJ%BJrkAotc*Mwg z;;LTTmUZSU-8@2b1>AA%>$UV2JmnT@s#v0l*#A%(pV$F>s4#P$@VPm7o|6LjRTdD# zkn`-K;6<<{S2`8HsN2V$s(7?QpbC38RZ4Rq)%^5d0J2tA)eA-hU1P@Nti! zN)TF%I`i*GpiG + + + +server: src/server.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/server.c

+
+
+Go to the documentation of this file.
00001 #include <poll.h> /* for select system call and related */
+00002 #include <string.h>     /* for memset and stuff */
+00003 #include <stdlib.h>     /* for getopt */
+00004 
+00005 #include "class.h"
+00006 #include "server.h"
+00007 #include "socket.h"
+00008 #include "logger.h"
+00009 #include "interface/class.h"
+00010 
+00011 static
+00012 void
+00013 ctor(void * _this, va_list * params)
+00014 {
+00015         Server       this = _this;
+00016         in_port_t    port;
+00017         unsigned int backlog;
+00018 
+00019         this->logger = va_arg(* params, Logger);
+00020         this->reader = va_arg(* params, void*);
+00021         port         = va_arg(* params, int);
+00022         backlog      = va_arg(* params, unsigned int);
+00023 
+00024         this->sock = new(Sock, this->logger, port);
+00025         socketListen(this->sock, backlog);
+00026 
+00027         (this->fds)[0].fd     = this->sock->handle;
+00028         (this->fds)[0].events = POLLIN;
+00029         this->nfds = 1;
+00030 }
+00031 
+00032 static
+00033 void
+00034 dtor(void * _this)
+00035 {
+00036         Server this = _this;
+00037     int    i;
+00038 
+00039     for (i=1; i<this->nfds; i++) {
+00040                 /*
+00041                  * @TODO do some finalization...buffer handling...etc.
+00042                  */
+00043                 delete(&(this->conns[i]).sock);
+00044                 delete(&(this->conns[i]).reader);
+00045     }
+00046 
+00047         delete(&this->sock);
+00048 }
+00049 
+00050 INIT_IFACE(Class, ctor, dtor, NULL);
+00051 CREATE_CLASS(Server, NULL, IFACE(Class));
+00052 
+00053 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/server_8h.html b/docs/html/server_8h.html new file mode 100644 index 0000000..3f50d7b --- /dev/null +++ b/docs/html/server_8h.html @@ -0,0 +1,409 @@ + + + + +server: include/server.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/server.h File Reference

+
+
+
#include <stdio.h>
+#include <poll.h>
+#include "class.h"
+#include "socket.h"
+#include "logger.h"
+
+Include dependency graph for server.h:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Data Structures

struct  Server

+Defines

#define POLL_FD_NSIZE   1024
#define POLL_FD_SIZE   (sizeof(struct pollfd) * POLL_FD_NSIZE)
#define MOVE_SIZE(size, idx)   ((size) * (POLL_FD_NSIZE-((idx)+1)))
#define CLEAR_CONN(server, idx)

+Functions

void serverRun (Server this)
void serverCloseConn (Server this, unsigned int handle)
+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define CLEAR_CONN( server,
 idx 
)
+
+
+Value:
memmove(&(((server)->fds)[(idx)]), \
+                        &(((server)->fds)[(idx)+1]), \
+                        MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \
+        memmove(&(((server)->conns)[(idx)]), \
+                        &(((server)->conns)[(idx)+1]), \
+                        MOVE_SIZE(sizeof(((server)->conns)[0]),(idx)))
+
+

Definition at line 15 of file server.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define MOVE_SIZE( size,
 idx 
)   ((size) * (POLL_FD_NSIZE-((idx)+1)))
+
+
+ +

Definition at line 14 of file server.h.

+ +
+
+ +
+
+ + + + +
#define POLL_FD_NSIZE   1024
+
+
+ +

Definition at line 11 of file server.h.

+ +
+
+ +
+
+ + + + +
#define POLL_FD_SIZE   (sizeof(struct pollfd) * POLL_FD_NSIZE)
+
+
+ +

Definition at line 12 of file server.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void serverCloseConn (Server this,
unsigned int handle 
)
+
+
+ +

Definition at line 7 of file close_conn.c.

+
{
+        int fd = (this->fds)[i].fd;
+
+        delete(&((this->conns)[fd].sock));
+        delete(&((this->conns)[fd].reader));
+        (this->fds)[i].events = 0;
+        this->ndel++;
+//      CLEAR_CONN(this, i);
+//      this->nfds--;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void serverRun (Server this)
+
+
+ +

: actually this is the main loop of my server. When stuff becomes more complicated it might be feasabible to split stuff into separate processes. This will definetly involve some IPC and syncing. Right now as this is actually only a simple HTTP server implementation we go on with this single process. What we can first do to get some processing between read/write cicles is to use the poll timeout.

+

handle accept

+

handle reads

+

do some other processing : actually this will hard assume that our stream reader is a http parser and it has its queue...think about more generalizing here.

+

: for now simply remove request and send not found. Make this sane.

+

: the complete response stuff have to be removed here.

+

: just to send an answer and be able to make some apache benchs i do it here...this definetly MUST BE moved

+

handle writes

+

+ +

Definition at line 30 of file run.c.

+
{
+    loggerLog(this->logger, LOGGER_INFO, "service started");
+
+    while (!doShutdown) /* until error or signal  */
+    {
+                int          events;
+                unsigned int i;
+
+                events = serverPoll(this);
+                if (doShutdown) break;
+
+                for (i=0; i < events; i++) {
+                        int fd = (this->fds)[i].fd;
+                        //int nreads = 0, nwrites = 0;
+
+                        if (0 != ((this->fds)[i].revents & POLLIN)) {
+                                if (this->sock->handle == (this->fds)[i].fd) {
+                                        serverHandleAccept(this);
+                                }
+
+                                else {
+                                        serverRead(this, i);
+
+                                        {
+                                                int              j;
+                                                HttpRequestQueue queue =
+                                                        ((HttpRequestParser)(this->conns)[fd].reader)->request_queue;
+
+                                                for (j=0; j<queue->nrequests; j++) {
+                                                        HttpRequest request = queue->requests[j];
+
+                                                        delete(&request);
+
+                                                        time_t t;
+                                                        struct tm * tmp;
+                                                        char timestr[200];
+
+#define RESP_HEAD "HTTP/1.1 404 Not Found\r\n" \
+                                                        "Content-Type: text/html\r\n" \
+                                                        "Content-Length: %lu\r\n" \
+                                                        "Date: %s\r\n" \
+                                                        "Server: testserver\r\n"
+
+#define RESP_DATA "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n" \
+                                                        "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n" \
+                                                        " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
+                                                        "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n" \
+                                                        "<head><title>404 - Not Found</title></head>" \
+                                                        "<body><h1>404 - Not Found</h1></body>" \
+                                                        "</html>"
+
+                                                        t = time(NULL);
+                                                        tmp = localtime(&t);
+                                                        strftime(timestr, sizeof(timestr), "%a, %d %b %Y %T %Z", tmp);
+
+                                                        sprintf((this->conns)[fd].wbuf, RESP_HEAD "\r\n" RESP_DATA, sizeof(RESP_DATA), timestr);
+                                                        (this->fds)[i].events = (this->fds)[i].events | POLLOUT;
+                                                }
+
+                                                queue->nrequests = 0;
+                                        }
+                                }
+                        }
+
+                        if (0 != ((this->fds)[i].revents & POLLOUT)) {
+                                write(
+                                                (this->fds)[i].fd,
+                                                (this->conns)[fd].wbuf,
+                                                strlen((this->conns)[fd].wbuf));
+                                (this->fds)[i].events = (this->fds)[i].events & ~POLLOUT;
+                                serverCloseConn(this, i);
+                        }
+                }
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/server_8h__incl.map b/docs/html/server_8h__incl.map new file mode 100644 index 0000000..80903a5 --- /dev/null +++ b/docs/html/server_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/server_8h__incl.md5 b/docs/html/server_8h__incl.md5 new file mode 100644 index 0000000..61931ce --- /dev/null +++ b/docs/html/server_8h__incl.md5 @@ -0,0 +1 @@ +aa704eb82919e8440dce9f03f3c53cc2 \ No newline at end of file diff --git a/docs/html/server_8h__incl.png b/docs/html/server_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c323b158f6704abfafb5931cecaf6fa950c97b66 GIT binary patch literal 5532 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 + + + diff --git a/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..73df168 --- /dev/null +++ b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +7a132c7f4a071fc3ade2758932a38a64 \ No newline at end of file diff --git a/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2743798b96ffa8e0eb801f07cfaffce31f2480d2 GIT binary patch literal 1162 zcmV;51aCcPcXt;T7mtsRzrVlJ)6)O| z0RR90d-k(z00001bW%=J06^y0W&i*K{7FPXRCt{2n~RpCAPj~XRM?8Q!}~w%0tp&A z^x|%5#pXY=vSL8^gitRLg2iI7SZ9`fxjx;a|Iy1E&oqiw_)akmDyBijG^m&c71N;F z8n2(}htx9NPjEx(9!+5`8kcQMw-{Cjnn$r2DLd8V5T!S+r zKF~qSXpyb32K_jZ-CX0PpAJon$(_1#7WL6U`Q2ROJ0*ow4JLQ$%2`xP!z7Tq&U9*9yXmSUrpmDW%0cD~PEU(wiv)@+TmnI_{qJWqd27z~)@bLL3H|Al{x z9fSSpXxMQW?PB_2xcI(b=5g|f7R(xgyYMuIz9%$#S86yNjlmk7J~IvQ8@+cD;1?VR?^ZGEn#Q>FXQnZ_HN}mOewuom1<+s2A~gKgIO8+Zc$Jt2 z(_k9UsM=fDLSy6lS@>@q6Il6YUwJ6UdqXYaNDEy_y9vzKF{wtn$=}(jkw cu~>ELFJ1J{)9Eh(*Z=?k07*qoM6N<$f + + diff --git a/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..e321b7b --- /dev/null +++ b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +ce960d181d782373295747cea9ba8363 \ No newline at end of file diff --git a/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png b/docs/html/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..eb08ad78ecb8f7bfd07bb2ed50f828934a97e58a GIT binary patch literal 532 zcmV+v0_**WP)CcPcXt;T7mtsRzrVlJ)6)O| z0RR90g=iaa00001bW%=J06^y0W&i*IhDk(0R9J=W)@^gbAPfLtu#~P4UXK6&V;2Zk zoVtOvesIYNdRWdp5Nd_s;NbYcNJqpQlDL{4UmxR!(FuYLY+wT$KFd(<&TDv^LEZgw zry&4<@!bX~cN*pc41gV!zQZ8pUPH%>))0L1E=KFU&1nYzWy`|Xp*#}KhWsimCReV% zV~`X>8Kp(*dC>`1e>x>Sms%==eTL+~rDzSnnloO5^BETF5R_w(4PZ=TFgOct404Mx zgB43@3O_1*D~9r^#{kLZR6KTJrE(=1i=whhn zAv`eb*@ugPR)5ey=fULSr+UZi^C7Q8KMgLLhX&Cwo-`;l%xM}lIJ__6UKsC9trNAZD!>s|O9QikJS!b + + + diff --git a/docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 b/docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 new file mode 100644 index 0000000..7ae5cd5 --- /dev/null +++ b/docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 @@ -0,0 +1 @@ +ec0f0d34bf543ab4e0985794d4eb997c \ No newline at end of file diff --git a/docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.png b/docs/html/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..054f982ff143709fa5dd1c2097985933aeb256d8 GIT binary patch literal 935 zcmV;Y16cftP)0000yP)t-s{{R0O z8E`*8KYxFJ-rwJzpPwHeAHKi8BO@a(FE2+&M_*rGr>CcPcXt;T7mtsRzrVlJ)6)O| z0RR90p7cV}00001bW%=J06^y0W&i*K8A(JzRA_23^m+n4lBrk6r1eO4-l$adb#CzTC67tT9kzOV=ZUJ_G) zmq~!v&9#0^0bV8nUN_hJF$H*;z8<)@A&%4H&pmm@HvmtY;C84R^UrI4^LmSg&A6?@Hc%1wc7iYa65$`xp z0ckF5LJOEZO-A5$^d1J*yz=8Z$$Nh}$dqLp-4tSHRT@r)C8s;D45=@|-xD(`* zWXij1cfj=>jFLsH;ovj0tz+Q#*Ej(V1sOdSs`o^54%5iB>pcOdN1_c|g|i>e+GcDO zehR#x!WEPe+_+fInkpFjN#81}aIJU1xrYxYz>6w;15S0F1)O@Z#a3*2pB>WEkW6IR zZws$`I6H3J!b=Z-09@_T&CE6RaEA@s@%Go?Q|0vsOFs)Jo<4)6(f z8#C5sunPmXG@eYn5lpW&^RnBeupc{KW^B8Z$G|W7=H&`|1K5TrXN+6lHyn*8(+)Tu zJDB_k_=}6!RXFU8dS|kL|GnP+;`4;+zWDs=@;$&a7hX+Y|67UxFS>>R7vObstshf> zmq~!v&9#0^0bV8nUN_hJF$;lzR=ErRf;ANWtD8t95{dpt{Qzr^2Af2eQ#=3w002ov JPDHLkV1kRVv1|YU literal 0 HcmV?d00001 diff --git a/docs/html/server_8h_source.html b/docs/html/server_8h_source.html new file mode 100644 index 0000000..c264382 --- /dev/null +++ b/docs/html/server_8h_source.html @@ -0,0 +1,159 @@ + + + + +server: include/server.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/server.h

+
+
+Go to the documentation of this file.
00001 #ifndef __SERVER_H__
+00002 #define __SERVER_H__
+00003 
+00004 #include <stdio.h>      /* for printf() and fprintf() */
+00005 #include <poll.h> /* for select system call and related */
+00006 
+00007 #include "class.h"
+00008 #include "socket.h"
+00009 #include "logger.h"
+00010 
+00011 #define POLL_FD_NSIZE           1024
+00012 #define POLL_FD_SIZE            (sizeof(struct pollfd) * POLL_FD_NSIZE)
+00013 
+00014 #define MOVE_SIZE(size,idx)     ((size) * (POLL_FD_NSIZE-((idx)+1)))
+00015 #define CLEAR_CONN(server,idx)  \
+00016         memmove(&(((server)->fds)[(idx)]), \
+00017                         &(((server)->fds)[(idx)+1]), \
+00018                         MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \
+00019         memmove(&(((server)->conns)[(idx)]), \
+00020                         &(((server)->conns)[(idx)+1]), \
+00021                         MOVE_SIZE(sizeof(((server)->conns)[0]),(idx)))
+00022 
+00023 
+00024 CLASS(Server) {
+00025         Logger        logger;
+00026         Sock          sock;
+00027         void *        reader;
+00028 
+00037         nfds_t        nfds;
+00038         nfds_t        ndel;
+00039         struct pollfd fds[POLL_FD_NSIZE];
+00040 
+00041         struct {
+00042                 Sock         sock;
+00043                 void *       reader;
+00044 
+00045                 char         wbuf[2048];
+00046                 char *       rbuf;
+00047                 unsigned int rpos;
+00048                 unsigned int wpos;
+00049         } conns[POLL_FD_NSIZE];
+00050 };
+00051 
+00052 void serverRun(Server this);
+00053 void serverCloseConn(Server this, unsigned int handle);
+00054 
+00055 #endif // __SERVER_H__
+00056 
+00057 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/signalHandling_8c.html b/docs/html/signalHandling_8c.html new file mode 100644 index 0000000..5fdf66a --- /dev/null +++ b/docs/html/signalHandling_8c.html @@ -0,0 +1,230 @@ + + + + +server: src/signalHandling.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/signalHandling.c File Reference

+
+
+
#include <signal.h>
+
+Include dependency graph for signalHandling.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

void terminate (int signum)
void init_signals (void)

+Variables

volatile int doShutdown
+

Function Documentation

+ +
+
+ + + + + + + + +
void init_signals (void )
+
+
+ +

Definition at line 14 of file signalHandling.c.

+
{
+    signal(SIGTERM, terminate);
+    signal(SIGHUP, SIG_IGN);
+    signal(SIGINT, terminate);
+    signal(SIGQUIT, terminate);
+    signal(SIGABRT, terminate);
+    signal(SIGALRM, SIG_IGN);
+    signal(SIGURG, SIG_IGN);
+
+    signal(SIGPIPE, SIG_IGN);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void terminate (int signum)
+
+
+ +

Definition at line 5 of file signalHandling.c.

+
{
+    signal(signum, SIG_IGN);
+    /*
+     * @TODO do logging here
+     */
+    doShutdown = 1;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
volatile int doShutdown
+
+
+ +

Definition at line 3 of file signalHandling.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/signalHandling_8c__incl.map b/docs/html/signalHandling_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/signalHandling_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/signalHandling_8c__incl.md5 b/docs/html/signalHandling_8c__incl.md5 new file mode 100644 index 0000000..60a7a98 --- /dev/null +++ b/docs/html/signalHandling_8c__incl.md5 @@ -0,0 +1 @@ +3538ad32acaa8a47394aa089a58b6b07 \ No newline at end of file diff --git a/docs/html/signalHandling_8c__incl.png b/docs/html/signalHandling_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7e9a28e47e62c1e64e3d16d7da1e96d072c8c7 GIT binary patch literal 886 zcmV-+1Bv{JP)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchC9u`&c@X$Iy>5`*Q6!E*KaU}{X?tj(hVP~KFn zj4N1O{W6%g$zSdQTU-4y*znY96WB(qRWNJ7Xa&|-Cyg1E@1zfUb8TR-;6NKg6|e)~ zbpaMaE=`fRK&MuwWzmHcl57A2tu&ep#HG|Aoz^i(`L(eMDIJV7%f;&gY&j(HRnme8 z7RHi`=kiIOgDH@Tp79B5Zb|Vz68>SguM0yM5_ul%h~)>jYL; z-Lh(DgSF7KzGI@ppE?BVL*ww#&%pZc?L5Dg5<7_becE`XufDG346J=W7}e>|tYQ%% z)aXL6yFC^VS_EsL_ow0-Fg$L;=Wpm#iV2|+qLYFKrW(E%EUBloUA@a=w;q``qR02N zZkNYyJv7BuinTk_R*${ + + diff --git a/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..dfd9b04 --- /dev/null +++ b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +64ea50b0262594aadd93ea6a859a3baf \ No newline at end of file diff --git a/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6b20798395ac4fa25ac82ea2158f529dcf6101 GIT binary patch literal 608 zcmV-m0-ybfP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|49xt&j0`b0d!JMQvg8b*k%9#0o6%FK~!jg?U)IVgCG!vsRxKKnEC&Ic89}CJzBiB z$?m*_i12FX%L7a+1dGLD-7dUK->oBi@NkcI1Mc(}KaBwykO3Kx0WSh{xamRN^Sx+i;;D2!4lof>q@{3F$dg{{)TsRiJ~6m0!zRU`72(ViRz}oe*`4{xW$B0effB z`Cc9iS{kJhYqTSjVYE%|=r{%#8D|MLpj6u^Y-^eVQH7=gASmjMm&scQsHwC$phIxs z5<>DIqm4og?<ONQg5)seDL^5U9jDwFnq`!p|qb=q&_vD}aOUX=Ty~y0qhxO?O=% z-O=#^_}Hme!1$XW?l4aoTbPM=b=yJ$T>15~7trVC@&u!8$~!tPPEe^gfMbwP?-{`5 z9t<`|fPnh^9-Niriw3{1U>lH*AJI^oyn6wMZknOP(*zFir>J=*2*%jnq~q1-Lx3wK ziPl#wC5Sf((#ctY%)AAFAEo^wv|W++#Ebp{9RvhQNzdMQCjhrf`Zd7u|Bak5yxIQ> u;3+X612P~3{u98vw6~K#MnW+F0000 + + diff --git a/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..c7b3cd2 --- /dev/null +++ b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +f543007a99a67765a17c0102419a3407 \ No newline at end of file diff --git a/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png b/docs/html/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfec8c8dd24c97ffdd5dcc0a72221d07ce4d946 GIT binary patch literal 535 zcmV+y0_gpTP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|4j4aB>(^b0d!JMQvg8b*k%9#0gOpRK~z|U?U#veg&+_`MG-|7Gyngy9TpXrR&Z(Z z+PR65H(cTzh9$46NF>r<7QCfj$Rim&zN2D_LjQUQQ4j@D5XFa3SlGA5qwbuJM=AJW z?>7`CX<4;P)@&o$6pY=ZX!9xZX1X3h0DrI{{dMrUuda73G7O6ob`ZT`Qen&=|#tR?=d=<78Xh!Lg%Y>>7os zI{$ENa(sCT-^!zq`28(~1!MioPq)ih6O6C~2V Z(H8^0q6wq}--iGI002ovPDHLkV1flS>4g9Q literal 0 HcmV?d00001 diff --git a/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map b/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map new file mode 100644 index 0000000..2144eee --- /dev/null +++ b/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..187d21f --- /dev/null +++ b/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +98b0cf0447ba9fddf6a8d7d86f2f02eb \ No newline at end of file diff --git a/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png b/docs/html/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2885cca9861d78c4fb6356d9b87cab38e0c58c2e GIT binary patch literal 761 zcmVBqK0000vP)t-s{{R0O z8E`*8Kfb@eA0Ho{pPzq!f8O8UcXxM>kB>)3M_*rGFE1|_7Z<0er@z0y)6>%c00960 z|NV3Jh5!Hn0d!JMQvg8b*k%9#0&Yn}K~!jg?U{{^s~`}CRZyx3g!g~h9T+WCu`55_ zo8HVxOc9SW!yrM=EYX9T*;RJyVE~ z^LK`hlw7o4rMBw~Ko;}xhxQB?4Ws=dcux%br*aueF?uUZd5@veuGKV90wD8tAVWVg?)t_My$6PUU(S%h#F3$}lkgwD)f}tc z27Th)o8u6-v1n+rIY0L2ZJ`}hz)=ieZc^{V55i#6SWHB_W1EbVp-t-~t#g9cr z-qgOl)nCl88^Q(HBDqI3xqX>G*E4ZGO1^E_oL$7N>O)MC$FN>4zuO+f+!Ds&p811y zB<}c{-^&y98asXuY!J7|{~Zj^|F(c + + + +server: src/signalHandling.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/signalHandling.c

+
+
+Go to the documentation of this file.
00001 #include <signal.h>     /* for signal() and signal names */
+00002 
+00003 volatile int doShutdown;
+00004 
+00005 void terminate(int signum)
+00006 {
+00007     signal(signum, SIG_IGN);
+00008     /*
+00009      * @TODO do logging here
+00010      */
+00011     doShutdown = 1;
+00012 }
+00013 
+00014 void init_signals(void)
+00015 {
+00016     signal(SIGTERM, terminate);
+00017     signal(SIGHUP, SIG_IGN);
+00018     signal(SIGINT, terminate);
+00019     signal(SIGQUIT, terminate);
+00020     signal(SIGABRT, terminate);
+00021     signal(SIGALRM, SIG_IGN);
+00022     signal(SIGURG, SIG_IGN);
+00023 
+00024     signal(SIGPIPE, SIG_IGN);
+00025 }
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/signalHandling_8h.html b/docs/html/signalHandling_8h.html new file mode 100644 index 0000000..7100219 --- /dev/null +++ b/docs/html/signalHandling_8h.html @@ -0,0 +1,224 @@ + + + + +server: include/signalHandling.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/signalHandling.h File Reference

+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void terminate (int signum)
void init_signals (void)

+Variables

volatile int doShutdown
+

Function Documentation

+ +
+
+ + + + + + + + +
void init_signals (void )
+
+
+ +

Definition at line 14 of file signalHandling.c.

+
{
+    signal(SIGTERM, terminate);
+    signal(SIGHUP, SIG_IGN);
+    signal(SIGINT, terminate);
+    signal(SIGQUIT, terminate);
+    signal(SIGABRT, terminate);
+    signal(SIGALRM, SIG_IGN);
+    signal(SIGURG, SIG_IGN);
+
+    signal(SIGPIPE, SIG_IGN);
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + +
void terminate (int signum)
+
+
+ +

Definition at line 5 of file signalHandling.c.

+
{
+    signal(signum, SIG_IGN);
+    /*
+     * @TODO do logging here
+     */
+    doShutdown = 1;
+}
+
+

+Here is the caller graph for this function:
+
+
+ + +
+

+ +
+
+

Variable Documentation

+ +
+
+ + + + +
volatile int doShutdown
+
+
+ +

Definition at line 3 of file signalHandling.c.

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map new file mode 100644 index 0000000..9709800 --- /dev/null +++ b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..dfd9b04 --- /dev/null +++ b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +64ea50b0262594aadd93ea6a859a3baf \ No newline at end of file diff --git a/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6b20798395ac4fa25ac82ea2158f529dcf6101 GIT binary patch literal 608 zcmV-m0-ybfP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|49xt&j0`b0d!JMQvg8b*k%9#0o6%FK~!jg?U)IVgCG!vsRxKKnEC&Ic89}CJzBiB z$?m*_i12FX%L7a+1dGLD-7dUK->oBi@NkcI1Mc(}KaBwykO3Kx0WSh{xamRN^Sx+i;;D2!4lof>q@{3F$dg{{)TsRiJ~6m0!zRU`72(ViRz}oe*`4{xW$B0effB z`Cc9iS{kJhYqTSjVYE%|=r{%#8D|MLpj6u^Y-^eVQH7=gASmjMm&scQsHwC$phIxs z5<>DIqm4og?<ONQg5)seDL^5U9jDwFnq`!p|qb=q&_vD}aOUX=Ty~y0qhxO?O=% z-O=#^_}Hme!1$XW?l4aoTbPM=b=yJ$T>15~7trVC@&u!8$~!tPPEe^gfMbwP?-{`5 z9t<`|fPnh^9-Niriw3{1U>lH*AJI^oyn6wMZknOP(*zFir>J=*2*%jnq~q1-Lx3wK ziPl#wC5Sf((#ctY%)AAFAEo^wv|W++#Ebp{9RvhQNzdMQCjhrf`Zd7u|Bak5yxIQ> u;3+X612P~3{u98vw6~K#MnW+F0000 + + diff --git a/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..c7b3cd2 --- /dev/null +++ b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +f543007a99a67765a17c0102419a3407 \ No newline at end of file diff --git a/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png b/docs/html/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfec8c8dd24c97ffdd5dcc0a72221d07ce4d946 GIT binary patch literal 535 zcmV+y0_gpTP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|4j4aB>(^b0d!JMQvg8b*k%9#0gOpRK~z|U?U#veg&+_`MG-|7Gyngy9TpXrR&Z(Z z+PR65H(cTzh9$46NF>r<7QCfj$Rim&zN2D_LjQUQQ4j@D5XFa3SlGA5qwbuJM=AJW z?>7`CX<4;P)@&o$6pY=ZX!9xZX1X3h0DrI{{dMrUuda73G7O6ob`ZT`Qen&=|#tR?=d=<78Xh!Lg%Y>>7os zI{$ENa(sCT-^!zq`28(~1!MioPq)ih6O6C~2V Z(H8^0q6wq}--iGI002ovPDHLkV1flS>4g9Q literal 0 HcmV?d00001 diff --git a/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map b/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map new file mode 100644 index 0000000..2144eee --- /dev/null +++ b/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..187d21f --- /dev/null +++ b/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +98b0cf0447ba9fddf6a8d7d86f2f02eb \ No newline at end of file diff --git a/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png b/docs/html/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..2885cca9861d78c4fb6356d9b87cab38e0c58c2e GIT binary patch literal 761 zcmVBqK0000vP)t-s{{R0O z8E`*8Kfb@eA0Ho{pPzq!f8O8UcXxM>kB>)3M_*rGFE1|_7Z<0er@z0y)6>%c00960 z|NV3Jh5!Hn0d!JMQvg8b*k%9#0&Yn}K~!jg?U{{^s~`}CRZyx3g!g~h9T+WCu`55_ zo8HVxOc9SW!yrM=EYX9T*;RJyVE~ z^LK`hlw7o4rMBw~Ko;}xhxQB?4Ws=dcux%br*aueF?uUZd5@veuGKV90wD8tAVWVg?)t_My$6PUU(S%h#F3$}lkgwD)f}tc z27Th)o8u6-v1n+rIY0L2ZJ`}hz)=ieZc^{V55i#6SWHB_W1EbVp-t-~t#g9cr z-qgOl)nCl88^Q(HBDqI3xqX>G*E4ZGO1^E_oL$7N>O)MC$FN>4zuO+f+!Ds&p811y zB<}c{-^&y98asXuY!J7|{~Zj^|F(c + + + +server: include/signalHandling.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/signalHandling.h

+
+
+Go to the documentation of this file.
00001 #ifndef __SIGNAL_HANDLING_H__
+00002 #define __SIGNAL_HANDLING_H__
+00003 
+00004 extern volatile int doShutdown;
+00005 
+00006 void terminate(int signum);
+00007 void init_signals(void);
+00008 
+00009 #endif // __SIGNAL_HANDLING_H__
+00010 
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/socket_8c.html b/docs/html/socket_8c.html new file mode 100644 index 0000000..5642b31 --- /dev/null +++ b/docs/html/socket_8c.html @@ -0,0 +1,204 @@ + + + + +server: src/socket.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/socket.c File Reference

+
+
+
#include <errno.h>
+#include <stdlib.h>
+#include "socket.h"
+#include "logger.h"
+#include "interface/class.h"
+#include "interface/logger.h"
+
+Include dependency graph for socket.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Class, ctor, dtor, NULL)
 CREATE_CLASS (Sock, NULL, IFACE(Class))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (Sock ,
NULL ,
IFACE(Class)  
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INIT_IFACE (Class ,
ctor ,
dtor ,
NULL  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/socket_8c__incl.map b/docs/html/socket_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/socket_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/socket_8c__incl.md5 b/docs/html/socket_8c__incl.md5 new file mode 100644 index 0000000..5e08110 --- /dev/null +++ b/docs/html/socket_8c__incl.md5 @@ -0,0 +1 @@ +ce302478b11251e87c3aa1be1d1d8d5b \ No newline at end of file diff --git a/docs/html/socket_8c__incl.png b/docs/html/socket_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..98a1c9ceb80c5a5a171a5ecd9f7244598fa69b00 GIT binary patch literal 2459 zcmV;M31s$(P)C>Q+0000&P)t-s{{R2N z!^0UFaGsx^rl+UAzrQ~}Ki=QpA0Hooe}9sak}oeWM@L6rUtg!Er+0UE7Z(?gkB`5< zzthvx00030|Nm`p2u=V100DGTPE!Ct=GbNc00{?4L_t(|ob8+ox2h@>g}r%|x}~)n z{Quv2c`BADi-)w^bB?ns2_}oh7h;doG!O(q5ClOG1VIo4K@gN6URJe-2YtHuv!nnZ zv?BlrRTTh)stN!?RRsW{sseyeRc!+}-qwplu?2w8j%}hs z`aJ+3v?CXup9g>3NB;Bpc@B@qZB%DqRVYu!kH_$|!JXr2Us5J8Jm@J+0K3Ma15q*q(0Ase|V7pvq|oSpUe4JH8j z^7IP;p#Uua6pI}HPnL*X;PYpYXJB18+7(chOXS2>QLTXEIIn>ENdO2Dw6X`Z+qs*% zqIll}-pobF^LCq#o_E^_074YG0N%y*tUd(`nD}kHPKC}@FgI7hPjM*9Byd-*&%gRf z00nT0EDUv076w&7QoZ#RC|EXXUqH#2B*{V ze>8YG+&%UcHq8kTLVJ2en}WelRwb|^ zE^w(W+_r%5GZi{9q4P($z74KP4#L+O41St|u`02y#a-M+G;*5*!p~9gWKg~uKv5x(<8Fr|e+sy#PL=LZm0R(Sqt6GeSCO)fAk37FQQFKJIA2_FMu$Q z;=WHD*Hu)jl!mTH30eSQqT=!w`|(6vv!s>_mol&b!dOKnF8+(3k?qo&E`1820tm^9 z%~*V*)4nH_(s*H13=}{ZuIN;yZ2r;#%ylNtV&m}!gu9B*QOd6_lHbkCxP>bV2_W23 zLUPi6agjPHc|Qp&jR+uIRm}T+bK9hTQ~61Ecr(oBqK=yzOHyDX>A9Q@^;Olw#a6F`{ulkE)YOU9=ZfHpP78Cmb(Z*ZA(*^!gK z93BOx>~v~MS-*Dl+Q)Y;jf*iQ4KdfGXK^V8U`e>wx_asOfKCt9VrO0X(qUng=#dHI z4dnh5w8-kS=6fs)y04>qEiXHud<#yl?OSpa`E369ZsmF!=$zoX>J)>dya)zpmk} zJQi!Mx>Hu|nP1!%L7;SJeijYSvIE|?(;G^nC!Fa3_Oj}R?$h&x1_PA2jfrBOwxLSJOEzA z(E1A#9`a8#9GIY`8G6PHfxK_pCC?$C@Rlj+L|82osj>j};vm`Ah9|I7!8ezl%|o#@ zWBl3V-JUxcx4ARsjZV^q#UbnSPA#AEajTaSQ?j4x{ujcASIJNGI$kFQOIe9-s9Vkq(cX0vL&88>&veA)uN zn+F2Ora5;Um1`$PVP5*vVAK}Sj&iD^lVEO1V@(gno1mBUZ$|XG0y6dr;9>=g14X_p z{@Gjs<9)4-+--Ch<=eSKiTB@J0U65)pyQ~|dV0;!W3tbRliobaX<5-p(6^+qrU$dV z0?z3V25^vP?%@qUy9aDzL7Db|W{>c)2Tb!_>;VV8({zU-?V|x)-{NRQH9gl? z!JT^*oWXa#3g-Iyu#tyqD5_8E9Rr}_-FIhuXUv(`oCKf>a&~0qBC;LMW=zvy8h4bo zicW&QC5<&b7=MChl6E6X{XnMFM_Q$Pqx?IWy|y=Z@$R{TCyMYsV5F!C0)RCCi&$N{ zb8GJ6-M(KOzW%AP9mW2!f!J Z`X69!W%;(i&8YwY002ovPDHLkV1hb|i@g8< literal 0 HcmV?d00001 diff --git a/docs/html/socket_8c_source.html b/docs/html/socket_8c_source.html new file mode 100644 index 0000000..12f0533 --- /dev/null +++ b/docs/html/socket_8c_source.html @@ -0,0 +1,157 @@ + + + + +server: src/socket.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/socket.c

+
+
+Go to the documentation of this file.
00001 #include <errno.h>
+00002 #include <stdlib.h>
+00003 
+00004 #include "socket.h"
+00005 #include "logger.h"
+00006 #include "interface/class.h"
+00007 #include "interface/logger.h"
+00008 
+00009 static
+00010 void
+00011 ctor(void * _this, va_list * params)
+00012 {
+00013         Sock this = _this;
+00014         int reUse   = 1;     /* TODO: make this configurable */
+00015 
+00016         this->log  = va_arg(* params, Logger);
+00017         this->port = va_arg(* params, int);
+00018 
+00019         /* Create socket for incoming connections */
+00020         if (-1 == (this->handle = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))) {
+00021                 loggerLog(this->log, LOGGER_CRIT,
+00022                                 "error opening socket: %s - service terminated",
+00023                                 strerror(errno));
+00024                 //exit(EXIT_FAILURE);
+00031                 return;
+00032         }
+00033 
+00034         /* Make the socket REUSE a TIME_WAIT socket */
+00035         setsockopt(this->handle, SOL_SOCKET, SO_REUSEADDR, &reUse, sizeof (reUse));
+00036 }
+00037 
+00038 static
+00039 void
+00040 dtor(void * _this)
+00041 {
+00042         Sock this = _this;
+00043 
+00044         if (0 != this->handle) {
+00045                 shutdown(this->handle, SHUT_RDWR);
+00046                 close(this->handle);
+00047         }
+00048 }
+00049 
+00050 INIT_IFACE(Class, ctor, dtor, NULL);
+00051 CREATE_CLASS(Sock, NULL, IFACE(Class));
+00052 
+00053 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/socket_8h.html b/docs/html/socket_8h.html new file mode 100644 index 0000000..0a7d5b1 --- /dev/null +++ b/docs/html/socket_8h.html @@ -0,0 +1,315 @@ + + + + +server: include/socket.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/socket.h File Reference

+
+
+
#include <arpa/inet.h>
+#include "class.h"
+#include "logger.h"
+
+Include dependency graph for socket.h:
+
+
+ + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + +
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  Sock

+Functions

void socketConnect (Sock this, const char *addr)
void socketListen (Sock this, int backlog)
Sock socketAccept (Sock this, char remoteAddr[16])
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Sock socketAccept (Sock this,
char remoteAddr[16] 
)
+
+
+ +

: Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D

+

: change port to remote port on success

+

+ +

Definition at line 8 of file accept.c.

+
{
+    Sock         sock;   /* Socket for client */
+    unsigned int len;    /* Length of client address data structure */
+
+    /* Set the size of the in-out parameter */
+    len = sizeof(this->addr);
+
+        sock = new(Sock, this->log, this->port);
+        close(sock->handle);
+    /* Wait for a client to connect */
+    sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
+    if (-1 == sock->handle) {
+        loggerLog(this->log, LOGGER_WARNING,
+                "error accepting connection: %s", strerror(errno));
+    } else {
+        loggerLog(this->log, LOGGER_INFO,
+                                "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
+    }
+
+    return sock;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketConnect (Sock this,
const char * addr 
)
+
+
+ +

Definition at line 10 of file connect.c.

+
{
+        inet_pton(AF_INET, addr, &((this->addr).sin_addr));
+    (this->addr).sin_family = AF_INET;           /* Internet address family */
+    (this->addr).sin_port   = htons(this->port); /* Local port */
+
+        if (-1 == connect(this->handle, (struct sockaddr*) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error connection socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void socketListen (Sock this,
int backlog 
)
+
+
+ +

Definition at line 10 of file listen.c.

+
{
+    (this->addr).sin_family      = AF_INET;           /* Internet address family */
+    (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */
+    (this->addr).sin_port        = htons(this->port); /* Local port */
+
+    /* Bind to the local address */
+    if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this->addr))) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+
+    /* Mark the socket so it will listen for incoming connections */
+    if (-1 == listen(this->handle, backlog)) {
+        loggerLog(this->log, LOGGER_CRIT,
+                "error binding socket: %s - service terminated",
+                strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/socket_8h__dep__incl.map b/docs/html/socket_8h__dep__incl.map new file mode 100644 index 0000000..54b15a3 --- /dev/null +++ b/docs/html/socket_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/socket_8h__dep__incl.md5 b/docs/html/socket_8h__dep__incl.md5 new file mode 100644 index 0000000..b436909 --- /dev/null +++ b/docs/html/socket_8h__dep__incl.md5 @@ -0,0 +1 @@ +20effb8f72c0f50407e141d8ee2593fe \ No newline at end of file diff --git a/docs/html/socket_8h__dep__incl.png b/docs/html/socket_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0ce44ee08afa8293d120c5e18714df5fdf1b02 GIT binary patch literal 848 zcmeAS@N?(olHy`uVBq!ia0vp^4M1GV!3-of?w1S(QkDTeA+G=a|Cf|3u(!A0w|~F9 zy!^cR^Xu#D@7=$zudmoJ zx6b;JVpD|#1%GmBK0m>xFkg{Lfgzr20-pi@walF_zgHyjPPbxQAg%C=uR&xUOU0YK z?enVrV#4l9YV15BpusP2Xi|Z%-3|U0qvMC91GFDFb54|tJj{MW#3?H*b8DcKA-aWcUgzMo>cCl4@bx)#g zH*6`(3=>t@$Kv37K6t`Hmi>N=wh8C;OF1@fetB=YrbaH8k={+N_N_6^-x>ZaKaL-~!$4P_VP&wXX~xyumtpTA+T4THq)$M#bj z7j>DoeKL?_=DRL3`LW-!o^2nFg=jDEH4HQD)xPy&qMz8_(20j;8QtxyU}l)(`sAdA zxu0~y$%uBrt1MdNh06u1a7&z!iH-UwnH5+rFf$SH2y1@g`w$(CX9A8CFzO z={DM>9I#x~aH%Ue+SGKGSy_%}WT-w<0Y3wC1ZzfO?=v|DE&aL`-uxlH-DwhER&83( z6ma>o$cmK`dx2ri(C04el#} + + + + diff --git a/docs/html/socket_8h__incl.md5 b/docs/html/socket_8h__incl.md5 new file mode 100644 index 0000000..db45875 --- /dev/null +++ b/docs/html/socket_8h__incl.md5 @@ -0,0 +1 @@ +4951f308a7a6703f369d2af2519b9e75 \ No newline at end of file diff --git a/docs/html/socket_8h__incl.png b/docs/html/socket_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd9b8bc93099341c69c4fc27dfdea9ba388e1c6 GIT binary patch literal 3965 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 QQuW(3GqD1{Hug;Z54k>*UjP6A literal 0 HcmV?d00001 diff --git a/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map b/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map new file mode 100644 index 0000000..26da2f8 --- /dev/null +++ b/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 b/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 new file mode 100644 index 0000000..9a38935 --- /dev/null +++ b/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 @@ -0,0 +1 @@ +fa824e3c68242e391222394188b16371 \ No newline at end of file diff --git a/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png b/docs/html/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..631e47c0af5016309c2642222f012f85dda4731f GIT binary patch literal 680 zcmV;Z0$2TsP)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0v$<2K~!jg?U)U7f-nq*u|PjkN-zKa&n`(*z|A>u zlet~rJB_7pxjrQ6sa@C9)YSCXh3Dw^ceTBHK0}9@5BiVYu`xI1#@v`2^S@$_x8?!i zJZ86NExM;M$0Q*o{{^EOk1$^@FUpMNea3iX*-qvS^?A&5!ZhU=QsUZ$ltSdqLy9tj zO!GY9^J>@zkmo@|H6CVOu&BmOK|{b?jh{ z2wbvUw^L%W94ERab@R>Km+aCV-ZyJCJI&ma3alrt>n5bCI$*)z_?pguMH zL_fdV;ivr!+|QuQ#*rTAXUY#!*4A?y! + + diff --git a/docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..8831f43 --- /dev/null +++ b/docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +8abcb500cd410e634be8b7931a7e0a32 \ No newline at end of file diff --git a/docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png b/docs/html/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..41e24ebc8b97709a38f5f5a8b63c46596a18e6da GIT binary patch literal 655 zcmV;A0&x9_P)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0t87!K~!jg?U(D4!XONVD{Y~WQYP>JvKvUS7ppFI zyXp+*he&eh@R`8arm3o`s``B4*?RwmmJbi-s+_iTLCFIvZKbWWmA2BpytzM70WI9- z5$+`ZoYwqiF`Bbz!OygA6+A+FxqK)sUTN=HUZTA$fd7ql^619^*85mE=e>o9;yk38 z3zT1WGW%1|@fsX?ET_Hlu4#?ax~H$L#!g`#nm$DhDy=fDIJ4t9Esii^umb>XnHXVk z1m%VZYh|{iWq9 zeW0oZ7%7%^AIm!pYg+NgAg3ueZ9Bb)HUh6{BTK6r-O{v085&Jd)luHeoy^YccupH8 zi^G(N=p#c7gN>U`+SE4rxynhLThm^OwWLiaSDLEe-2Tnnu@v*S0kR8%68+R|)t zse}_34`551{JFLOd$gz3)|eG-d2Mgct>s%P1Z(q*x)p%I=X1;HqqN)2-95K1o?9oh z%8<&>Emah$qVt`Md?$xEr6AD^xNK_nry!?~(C%z*aVPijs?~XDDC(qR^BcQ3v*S7K z89MUsVwQ^S+IBKLc-D^N!)VvqUC?XQDBa5NVD*mU`)Ff>N}s02euTSqd?D=tRoY5h pX)Em)(Vng1&AojGRaI3Vq93k9w- + + diff --git a/docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 b/docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 new file mode 100644 index 0000000..995511b --- /dev/null +++ b/docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 @@ -0,0 +1 @@ +407886eba5bb27f4936db6d792217edc \ No newline at end of file diff --git a/docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png b/docs/html/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..17319e97712d5316eac8260df8551f11e02cfb65 GIT binary patch literal 693 zcmV;m0!safP)%c00960 z|GiSOk^lez0d!JMQvg8b*k%9#0xC&FK~!jg?U?Jbs~`-8Eh@K&Oy2)xPXeJ{w!4FN zj{C;?VG67`dRJ2jERG6#K+j-IFoj5~Ai_j_iI&Sh+a0|)`3PY89K@Q_-=ru0Ej_dKy3;*1dz8>= z>Qw`cn`Px^XK_@}$JwEs(|qZYApx!BeV$*B(pX;kvyE#f)8`;oc}9Es$7!wU)6SQN zKv9Cc2j+7@=*3waRrFL!gi?EI&Airui^>HBSe<$WEab<;=%?=0|Q)C)M00eEzjF z$K}l5(u*~vOU4EIgUPPW{E?4xT|!5_URHSd2Sc32Q9*x$-ubn&Nb&OS2MI53b>R5! z^cx)}j9PU{_Yz)YA2@zKJuhfk*J&fX!rwc70sR|l^h=}BH~L2Z_vmld>B)Zi44Rsn beu@48GmOrwnag?h00000NkvXXu0mjfSaDy< literal 0 HcmV?d00001 diff --git a/docs/html/socket_8h_source.html b/docs/html/socket_8h_source.html new file mode 100644 index 0000000..d88e4aa --- /dev/null +++ b/docs/html/socket_8h_source.html @@ -0,0 +1,133 @@ + + + + +server: include/socket.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/socket.h

+
+
+Go to the documentation of this file.
00001 #ifndef __SOCKET_H__
+00002 #define __SOCKET_H__
+00003 
+00004 #include <arpa/inet.h>  /* for in_port_t */ 
+00005 
+00006 #include "class.h"
+00007 #include "logger.h"
+00008 
+00009 CLASS(Sock) {
+00010         Logger             log;
+00011         in_port_t          port;
+00012         struct sockaddr_in addr;
+00013         int                handle;
+00014 };
+00015 
+00016 void socketConnect(Sock this, const char * addr);
+00017 void socketListen(Sock this, int backlog);
+00018 Sock socketAccept(Sock this, char remoteAddr[16]);
+00019 
+00020 #endif // __SOCKET_H__
+00021 
+00022 // vim: set ts=4 sw=4:
+00023 
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stderr_8c.html b/docs/html/stderr_8c.html new file mode 100644 index 0000000..fbae301 --- /dev/null +++ b/docs/html/stderr_8c.html @@ -0,0 +1,189 @@ + + + + +server: src/logger/stderr.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/stderr.c File Reference

+
+
+
#include <stdio.h>
+#include "logger.h"
+#include "interface/logger.h"
+
+Include dependency graph for stderr.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Logger, logStderr)
 CREATE_CLASS (LoggerStderr, Logger, IFACE(Logger))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (LoggerStderr ,
Logger ,
IFACE(Logger 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (Logger ,
logStderr  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stderr_8c__incl.map b/docs/html/stderr_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/stderr_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/stderr_8c__incl.md5 b/docs/html/stderr_8c__incl.md5 new file mode 100644 index 0000000..23dd257 --- /dev/null +++ b/docs/html/stderr_8c__incl.md5 @@ -0,0 +1 @@ +2dd12998a19c1802c0021c537586eae8 \ No newline at end of file diff --git a/docs/html/stderr_8c__incl.png b/docs/html/stderr_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c397d681bbb03f5e32c24d50e086f3af6cb156f3 GIT binary patch literal 1568 zcmV+*2H*LKP)A#!cNZ5IkB^VPzrWMd z(*OVf|NsB>yEVH20004WQchC_;%x5hg&pF6dhtI5~<@3PnZrPl%o`w)%;Fft%<3cY^rkk*G32Bxq^(GA%EEcmzH%EKh zdX0m*Y$9y)<>p%)I2b5@p$68YnZpG1k2qn5Bm|n);(5dgaSzV;76%U3IJ*`NgIGLk z+yE<>xqImKeqG~i07k6fM(bM~ICZ<6@WD;p7zfc~kL_I*?w0dpi$&EACZJzitIyH| zfQ^n=!NI`QzQuw2pc#5R_E?0s^Xd%XxEfING-5&EV#rCDvRDwfuZqACI06?W0+%QP zmnZ_4sOaCkU%X#Em4*E#KUS9y-?8?6^@;TY#6^h6J?IsO6A%r$JH27y!9(P%-jVRp zp+Tqh9)q6^k#jQmfQANL^4;^~q zPDk#;EDPsxGIF1~8-e3g3tisFwDXV)cuLFcSA;_5RwRm3OxK`3MuR9HUErf_f^pgC z0(+MPp=5IV?g+{qbh~c|3MKa+_5($di`fpOpQJo=F+JMS`@+b@jf72|FKW=mZUr`; ztr&E%9ogLRLeRzUpuTX<-&4ZX&(Z6{54x26^Yr=HJTke&U1zSd9~E6{;`#b} zOme@lQ$7Q3NhgLExBVPk&BEGLMm?{@KH&SMLCDZgcKFE#v7q z`M|Mu&5B(kj2!j*f?E?@v$kh_wXr9Q8! z=FA>d*?4j?LGGL!;AF!Lt!vvbMG-#onlVdG)>ZR(6@tK_Mbma*ibZwhjMb22-M#k? z1jiv~J&5ic^_ap#*H%~K(W+_OIbo1Hr}yBPyfQP&+eUpg4549z3yAEVhi?!#v_MlV zs+Pf+SXZN0??7;-ozD8^sKLQk^%+jc8hfV=K5jNA23xHCKl$1^laXwI?SG3hM6zIKckLGvboKc}5&#IlnC5pf$>K + + + +server: src/logger/stderr.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/stderr.c

+
+
+Go to the documentation of this file.
00001 #include <stdio.h>
+00002 
+00003 #include "logger.h"
+00004 #include "interface/logger.h"
+00005 
+00006 static
+00007 void
+00008 logStderr(void * this, logger_level level, const char * const msg)
+00009 {
+00010         fprintf(stderr, "[%s] %s\n", logger_level_str[level], msg);
+00011 }
+00012 
+00013 INIT_IFACE(Logger, logStderr);
+00014 CREATE_CLASS(LoggerStderr, Logger, IFACE(Logger));
+00015 
+00016 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stream__reader_8c.html b/docs/html/stream__reader_8c.html new file mode 100644 index 0000000..8074909 --- /dev/null +++ b/docs/html/stream__reader_8c.html @@ -0,0 +1,163 @@ + + + + +server: src/interface/stream_reader.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/interface/stream_reader.c File Reference

+
+
+
#include "class.h"
+#include "interface/stream_reader.h"
+
+Include dependency graph for stream_reader.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

size_t streamReaderRead (void *object, int fd)
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t streamReaderRead (void * object,
int fd 
)
+
+
+ +

Definition at line 10 of file stream_reader.c.

+
{
+        size_t ret;
+
+        RETCALL(object, StreamReader, read, ret, fd);
+
+        return ret;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stream__reader_8c__incl.map b/docs/html/stream__reader_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/stream__reader_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/stream__reader_8c__incl.md5 b/docs/html/stream__reader_8c__incl.md5 new file mode 100644 index 0000000..7bba341 --- /dev/null +++ b/docs/html/stream__reader_8c__incl.md5 @@ -0,0 +1 @@ +547901cfad96e8bfc046fa0bc79607ec \ No newline at end of file diff --git a/docs/html/stream__reader_8c__incl.png b/docs/html/stream__reader_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..14f31c49591719d5c49ed6dfde88a1882bc9610b GIT binary patch literal 1518 zcmVA#!cNZ5IkB^VPzrWMd z(*OVf|NsBvgO5!B0004WQchCw)pH~6J*uQ>{T+GT0tI}Uf%?|@ziKXBf&ccLVubf778DMu2=SWr6?XD zn2UkT5%!ymDpi#Y+CLRDGd-)D+CZeL(GHP_wory56^RNf#`#766!&A6U8HMd4^0TV*Fb` zOm;F2;{(qSyH?{dt%U)ikNuGz893m3*-a}TQwK!!89&WCL?8J>KazdoXlHZb5=w{> z>)!yvE;iw(%)`{QotRnyfLv4wh@-fGn7;-*k|HV~9+ZGMNc`B$NM^>*kx5=lVT`eEeT5&3c8n-SSD?yZRI8TL*<_RV@9B6}yj3z7YE z-h;>|Q{I8dXEVl6n)P!SS2 zI8t;(4i6L=k>lgU1;ocRF%j`IOFTq;O%e?eZ-Yca#N!xI5b-)h1VlWKaCsu$2e>$q z6WYHtkyDz#Fp-m5zbuin8ow%#^ZLFfku$r#7?Irma&C#MaLM!h{9bcY=mN^~5S`{( zkTM>WhXE3-&SB+YIt^6jxbi$mtAWaRP#&b!FjaggRHK(660XZ@014XT6^I0G@XrGY z-`*c5@*BN{26Fg6yPcIctQL(Q1^VIjzo`VoQ3B#90dbUoI7&bqy#rFe`#;jEev@kB z`gTIGU8)vuy7)-X<)4QL45YQ+HBP1H&Wy_9<&rP-_ke7sepjj5)6Fg&0n#>&s3Ad7 zsYc(|qESt0UocnMsCFyW#&w-gFN1tK4;E?RV$qE7mP=7>6U8S6%fb@y7AC}g%(!ZX zT)duLZKJAEEo&Aphu8qpHg#RK07Qwp)Ere=LppvzAXQeb0q+As`5<*GpospqD)8QM zh-#Z?R+d~AJm9qpO>06oB9_gd%d96?+myA&x~%znhz%gH4eAnG(2SMdD{YOHTDw{m z?vC3BgqA_-269(;ejpGk#kEZ|6E&A5AW+dPBtK?cHG?j*o?N)E^}Srwd_BYl5Hist zQwja95Xh8YjO803wFSaI?1Ki)Y$?+#|0obRLa?m$nb5+&Zie<7uO}A<3$?8IdWfwZ z0>jfILkx=y_ZGkS0Rnfcu4f=zifWrEJTX-EKMRCI?B4*wCUz}%2-o}w2tLQ629)|~ z)L-i}r1Szr!1F9D5L1e3nt~uCgic3|Z8CJ;e5>jG|8&eJYot z$>5BK`$R9#J$woztAL39ILYQ6!lkITiQ + + + +server: src/interface/stream_reader.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/interface/stream_reader.c

+
+
+Go to the documentation of this file.
00001 #include "class.h"
+00002 #include "interface/stream_reader.h"
+00003 
+00004 const struct interface i_StreamReader = {
+00005         "streamReader",
+00006         1
+00007 };
+00008 
+00009 size_t
+00010 streamReaderRead(void * object, int fd)
+00011 {
+00012         size_t ret;
+00013 
+00014         RETCALL(object, StreamReader, read, ret, fd);
+00015 
+00016         return ret;
+00017 }
+00018 
+00019 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stream__reader_8h.html b/docs/html/stream__reader_8h.html new file mode 100644 index 0000000..af95241 --- /dev/null +++ b/docs/html/stream__reader_8h.html @@ -0,0 +1,186 @@ + + + + +server: include/interface/stream_reader.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

include/interface/stream_reader.h File Reference

+
+
+
#include <sys/types.h>
+
+Include dependency graph for stream_reader.h:
+
+
+
+
+

Go to the source code of this file.

+ + + + + + + +

+Data Structures

struct  i_StreamReader

+Typedefs

typedef size_t(* fptr_streamReaderRead )(void *, int fd)

+Functions

size_t streamReaderRead (void *, int fd)
+

Typedef Documentation

+ +
+
+ + + + +
typedef size_t(* fptr_streamReaderRead)(void *, int fd)
+
+
+ +

Definition at line 6 of file stream_reader.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t streamReaderRead (void * ,
int fd 
)
+
+
+ +

Definition at line 10 of file stream_reader.c.

+
{
+        size_t ret;
+
+        RETCALL(object, StreamReader, read, ret, fd);
+
+        return ret;
+}
+
+
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/stream__reader_8h__incl.map b/docs/html/stream__reader_8h__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/stream__reader_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/stream__reader_8h__incl.md5 b/docs/html/stream__reader_8h__incl.md5 new file mode 100644 index 0000000..efb7d08 --- /dev/null +++ b/docs/html/stream__reader_8h__incl.md5 @@ -0,0 +1 @@ +def8f9b18283885b545e52922e90bd94 \ No newline at end of file diff --git a/docs/html/stream__reader_8h__incl.png b/docs/html/stream__reader_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..4799265bf42143b4be04206dbacb5e5fc51e8905 GIT binary patch literal 1104 zcmV-W1h4yvP))3M;8|tcXxMRUtg!Er@z0y)6>%c00960 z|5gO&SO5S30d!JMQvg8b*k%9#1I0;1K~#90?VE{qqc99bT`-IHW*S>hLN{KTS;`oRL?V$$f0wUWGo`CnL|KoBvL0QR(%t|+8C!W9EF>R>tbDW0 z$GU&Mw|AyrDb4dj#aN5NY}JkJ{&7>(g=eLX zC?#ze$68R&C_ics0RuZP&L+3=Dg~?;O2ANzK8B!S$Uv0}j1~GTvfv$A+p(E+ebe;J@>mJ z%6deU^@u3z5mDA7qO3k(1bBciNFL|KoBvK|p-JtE3_ zR6XU-q`f=&q^?29E&+KFN_Hj6y}S6du0hF&vL0Om5-|5};S0J3W&NMlL8qns+OmhBka;X4Z_PVu4S6!zTrdQ zYYpd3J9%Pi!@A{q9+i^&Hul*MED)ptGaPnop5#E=hc81jc^E7{I|n5jjBf^J48Y(Z z97~|YNjRb5xBTOg$-|KFER-y6yP@xzY0z~@iIe48a-Kag^+c5EnDua@;J|RC#L0Xv zO+1%oKD(!)4EJO>f6VxK5LcBoK27p)mBJls@JmVvcqgJvYJdB*1CwjMb3Q4&pYEIC z{cvx?$$BV + + + +server: include/interface/stream_reader.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

include/interface/stream_reader.h

+
+
+Go to the documentation of this file.
00001 #ifndef __STREAM_READER_H__
+00002 #define __STREAM_READER_H__
+00003 
+00004 #include <sys/types.h>
+00005 
+00006 typedef size_t (* fptr_streamReaderRead)(void *, int fd);
+00007 
+00008 extern const struct interface i_StreamReader;
+00009 
+00010 struct i_StreamReader {
+00011         const struct interface * const _;
+00012         fptr_streamReaderRead          read;
+00013 };
+00014 
+00015 extern size_t streamReaderRead(void *, int fd);
+00016 
+00017 #endif // __STREAM_READER_H__
+00018 
+00019 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structHttpRequest.html b/docs/html/structHttpRequest.html new file mode 100644 index 0000000..b6d2074 --- /dev/null +++ b/docs/html/structHttpRequest.html @@ -0,0 +1,253 @@ + + + + +server: HttpRequest Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpRequest Struct Reference

+
+
+ +

#include <request.h>

+ + + + + + + + + + + +

+Data Fields

char * http_version
char * uri
char * method
struct {
   char *   name
   char *   value
header [128]
char * body
char done
+

Detailed Description

+
+

Definition at line 6 of file request.h.

+

Field Documentation

+ +
+
+ + + + +
char* HttpRequest::body
+
+
+ +

Definition at line 34 of file request.h.

+ +
+
+ +
+
+ + + + +
char HttpRequest::done
+
+
+ +

Definition at line 35 of file request.h.

+ +
+
+ +
+
+ + + + +
struct { ... } HttpRequest::header[128]
+
+
+ +
+
+ +
+
+ + + + +
char* HttpRequest::http_version
+
+
+ +

Definition at line 25 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::method
+
+
+ +

Definition at line 27 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::name
+
+
+ +

Definition at line 30 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::uri
+
+
+ +

Definition at line 26 of file request.h.

+ +
+
+ +
+
+ + + + +
char* HttpRequest::value
+
+
+ +

Definition at line 31 of file request.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structHttpRequestParser.html b/docs/html/structHttpRequestParser.html new file mode 100644 index 0000000..9b97ebf --- /dev/null +++ b/docs/html/structHttpRequestParser.html @@ -0,0 +1,213 @@ + + + + +server: HttpRequestParser Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpRequestParser Struct Reference

+
+
+ +

#include <request_parser.h>

+
+Collaboration diagram for HttpRequestParser:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + +

+Data Fields

char * buffer
size_t buffer_used
size_t buffer_size
HttpRequestQueue request_queue
HttpRequestState state
+

Detailed Description

+
+

Definition at line 18 of file request_parser.h.

+

Field Documentation

+ +
+
+ + + + +
char* HttpRequestParser::buffer
+
+
+ +

Definition at line 32 of file request_parser.h.

+ +
+
+ +
+
+ + + + +
size_t HttpRequestParser::buffer_size
+
+
+ +

Definition at line 34 of file request_parser.h.

+ +
+
+ +
+
+ + + + +
size_t HttpRequestParser::buffer_used
+
+
+ +

Definition at line 33 of file request_parser.h.

+ +
+
+ +
+ +
+ +

Definition at line 36 of file request_parser.h.

+ +
+
+ +
+ +
+ +

Definition at line 37 of file request_parser.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structHttpRequestParser__coll__graph.map b/docs/html/structHttpRequestParser__coll__graph.map new file mode 100644 index 0000000..1ce7140 --- /dev/null +++ b/docs/html/structHttpRequestParser__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/structHttpRequestParser__coll__graph.md5 b/docs/html/structHttpRequestParser__coll__graph.md5 new file mode 100644 index 0000000..18d16cc --- /dev/null +++ b/docs/html/structHttpRequestParser__coll__graph.md5 @@ -0,0 +1 @@ +4be3f2ba11b6540f580be12b7238cc78 \ No newline at end of file diff --git a/docs/html/structHttpRequestParser__coll__graph.png b/docs/html/structHttpRequestParser__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2447d77f2785fca387b4661bdecc0129ea1b12f3 GIT binary patch literal 3604 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 literal 0 HcmV?d00001 diff --git a/docs/html/structHttpRequestQueue.html b/docs/html/structHttpRequestQueue.html new file mode 100644 index 0000000..5bfb625 --- /dev/null +++ b/docs/html/structHttpRequestQueue.html @@ -0,0 +1,165 @@ + + + + +server: HttpRequestQueue Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

HttpRequestQueue Struct Reference

+
+
+ +

#include <request_queue.h>

+
+Collaboration diagram for HttpRequestQueue:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

HttpRequest requests [HTTP_REQUEST_QUEUE_MAX]
size_t nrequests
+

Detailed Description

+
+

Definition at line 10 of file request_queue.h.

+

Field Documentation

+ +
+
+ + + + +
size_t HttpRequestQueue::nrequests
+
+
+ +

Definition at line 21 of file request_queue.h.

+ +
+
+ +
+
+ + + + +
HttpRequest HttpRequestQueue::requests[HTTP_REQUEST_QUEUE_MAX]
+
+
+ +

Definition at line 20 of file request_queue.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structHttpRequestQueue__coll__graph.map b/docs/html/structHttpRequestQueue__coll__graph.map new file mode 100644 index 0000000..17eced7 --- /dev/null +++ b/docs/html/structHttpRequestQueue__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/structHttpRequestQueue__coll__graph.md5 b/docs/html/structHttpRequestQueue__coll__graph.md5 new file mode 100644 index 0000000..9dbc0d0 --- /dev/null +++ b/docs/html/structHttpRequestQueue__coll__graph.md5 @@ -0,0 +1 @@ +52e547ce57380f9b68ffec6b98a7d437 \ No newline at end of file diff --git a/docs/html/structHttpRequestQueue__coll__graph.png b/docs/html/structHttpRequestQueue__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1e89fe1811bdbff11b629884eaf090217b8d8fc5 GIT binary patch literal 2390 zcmYjTdpy(o8+Yr3U**(X%BB4{HJ4n6<1*PvvzfllT}d{?gk0J%mtU!bW{G2yO|rz< z+*O8G?v*fM)s$}2(FkKAx6`QoR=rNI{`ox5AMelec`ongc|K%M3~H;YwyK<*+*Y(3 z!doV(a&q$V%8D|LQgXLTCY(G0U)L{EY1Y2RV(3sQlbN2L-r3a!hr_{O@Yvh8BoYaS z!=X^9yu3UM3kxkREjF9o)z!u4^JTZCQfY|#D+`$>pWu!0k^AHQ3%s11az7ezz&E)> zd_A|I(PT^3{^woZHQUzGZ*Nvsz9}$JntVM3U*GtY z9Yb0eqLpnIW5V7pU<;|uInQ6TM4=E6T(*?(xR)QW$a#0Ya*?HFI)8bw9 zUP?xbqjr%_pfdNFw43IK)WlY~LhGX2twV}+JR->_8=}%cxoXgUj=uUVV$RUT0}Y-F>~S_B zY8};r6n1m6CNM@!Mx+l@>B^kh<0tmZ!E+)Xa|qlS_ps#TajOGv^UW|DmfC#>)Mt5! zeQd;MQ7vF^0GX)mG(-@$STfEgxl~`tTQFZl>-bk_zpNH znsOy^#V8RE(Ye+rDs#>d{3BQa}xCK{$Z=h}L?` z@LePo-LF`TE^lz6KIQsh&r`7u46<<4y6yyN;7_Px(tOY2EaUP|CTV^$;>${F2plos zds%zT2kEnDwVe>oQr~zlc>lNy3?nkOagsbil1DX(8MMw%Xc#7@>n?Sc07)a!|7mno ziqUwjugRSl0v81@u%TC|@yhRFFXiH^JFkM4-37gzDvw#fke;2W1-g8#O^k8C7*AyY zqgNr#@Ht<9Ha*K{@pyuN1pU?Yyo4C=8Fu!7=4XFMJM3c@UZW(R?hHBJfNy1UOZtZR z$~%xB3L4BCnea3E`%tj^y2yT=hZWK7 z&p-g4$LN~!n%gH{n%$c&vgO6CmXzL)WpuYLOl?f0qKx>bp^*tY;%qOfOjr)x0XRW; zYjVS4-8L>CdOq>}AZ@BtrNDG7%Gcq*?t%Jh<(A~(+loSHXP8jQUHW2X&sdZ?)tuer z%$0iB916sgH<_11Upam$=sU`OB746_q6An3s9{fOmpSh*Dr$0EQ5oI@*n-^3smV2l z^s6nmIwyJXn6``$MbLiG&3eW;3!6m&v{8H_T)J{d<4=+sa;)`S3V^ zkMS26o%d?M4)PLAMByO + + + +server: Logger Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Logger Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Data Fields

logger_level min_level
+

Detailed Description

+
+

Definition at line 19 of file logger.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 36 of file logger.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structLoggerStderr.html b/docs/html/structLoggerStderr.html new file mode 100644 index 0000000..599cf49 --- /dev/null +++ b/docs/html/structLoggerStderr.html @@ -0,0 +1,144 @@ + + + + +server: LoggerStderr Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

LoggerStderr Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Public Member Functions

 EXTENDS (Logger)
+

Detailed Description

+
+

Definition at line 39 of file logger.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
LoggerStderr::EXTENDS (Logger )
+
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structLoggerSyslog.html b/docs/html/structLoggerSyslog.html new file mode 100644 index 0000000..6f581ea --- /dev/null +++ b/docs/html/structLoggerSyslog.html @@ -0,0 +1,144 @@ + + + + +server: LoggerSyslog Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

LoggerSyslog Struct Reference

+
+
+ +

#include <logger.h>

+ + + +

+Public Member Functions

 EXTENDS (Logger)
+

Detailed Description

+
+

Definition at line 55 of file logger.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
LoggerSyslog::EXTENDS (Logger )
+
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structServer.html b/docs/html/structServer.html new file mode 100644 index 0000000..e9a57a5 --- /dev/null +++ b/docs/html/structServer.html @@ -0,0 +1,295 @@ + + + + +server: Server Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Server Struct Reference

+
+
+ +

#include <server.h>

+
+Collaboration diagram for Server:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + + + + + + + + + + +

+Data Fields

Logger logger
Sock sock
void * reader
nfds_t nfds
nfds_t ndel
struct {
   Sock   sock
   void *   reader
   char   wbuf [2048]
   char *   rbuf
   unsigned int   rpos
   unsigned int   wpos
conns [POLL_FD_NSIZE]
+

Detailed Description

+
+

Definition at line 24 of file server.h.

+

Field Documentation

+ +
+
+ + + + +
struct { ... } Server::conns[POLL_FD_NSIZE]
+
+
+ +
+
+ +
+
+ + + + +
Logger Server::logger
+
+
+ +

Definition at line 60 of file server.h.

+ +
+
+ +
+
+ + + + +
nfds_t Server::ndel
+
+
+ +

Definition at line 73 of file server.h.

+ +
+
+ +
+
+ + + + +
nfds_t Server::nfds
+
+
+

loeschen: fds[i].event auf 0 dann nfds um die anzahl der geloeschten elemente verkleinern. die in close pending stehenden socket schliessen. vor jedem poll qsort auf fds ueber event. nach dem poll qsort auf fds ueber revent und reuckgebewert von poll beruecksichtigen.

+ +

Definition at line 72 of file server.h.

+ +
+
+ +
+
+ + + + +
char* Server::rbuf
+
+
+ +

Definition at line 81 of file server.h.

+ +
+
+ +
+
+ + + + +
void* Server::reader
+
+
+ +

Definition at line 62 of file server.h.

+ +
+
+ +
+
+ + + + +
unsigned int Server::rpos
+
+
+ +

Definition at line 82 of file server.h.

+ +
+
+ +
+
+ + + + +
Sock Server::sock
+
+
+ +

Definition at line 61 of file server.h.

+ +
+
+ +
+
+ + + + +
char Server::wbuf[2048]
+
+
+ +

Definition at line 80 of file server.h.

+ +
+
+ +
+
+ + + + +
unsigned int Server::wpos
+
+
+ +

Definition at line 83 of file server.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structServer__coll__graph.map b/docs/html/structServer__coll__graph.map new file mode 100644 index 0000000..fa84913 --- /dev/null +++ b/docs/html/structServer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/structServer__coll__graph.md5 b/docs/html/structServer__coll__graph.md5 new file mode 100644 index 0000000..2f3839d --- /dev/null +++ b/docs/html/structServer__coll__graph.md5 @@ -0,0 +1 @@ +502aed3e17470956fc544249031f8768 \ No newline at end of file diff --git a/docs/html/structServer__coll__graph.png b/docs/html/structServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8568c7243f6dad0e5a56e72cc1ac07525daf7a48 GIT binary patch literal 3018 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 + + + +server: Sock Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

Sock Struct Reference

+
+
+ +

#include <socket.h>

+
+Collaboration diagram for Sock:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + +

+Data Fields

Logger log
in_port_t port
int handle
+

Detailed Description

+
+

Definition at line 9 of file socket.h.

+

Field Documentation

+ +
+
+ + + + +
int Sock::handle
+
+
+ +

Definition at line 29 of file socket.h.

+ +
+
+ +
+
+ + + + +
Logger Sock::log
+
+
+ +

Definition at line 26 of file socket.h.

+ +
+
+ +
+
+ + + + +
in_port_t Sock::port
+
+
+ +

Definition at line 27 of file socket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structSock__coll__graph.map b/docs/html/structSock__coll__graph.map new file mode 100644 index 0000000..ab12394 --- /dev/null +++ b/docs/html/structSock__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/structSock__coll__graph.md5 b/docs/html/structSock__coll__graph.md5 new file mode 100644 index 0000000..fe6f674 --- /dev/null +++ b/docs/html/structSock__coll__graph.md5 @@ -0,0 +1 @@ +6470cafe03b7c0829d96bf9dd7ebb44f \ No newline at end of file diff --git a/docs/html/structSock__coll__graph.png b/docs/html/structSock__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1bde0241e80370eaf0a0e428807f601e87c7ee59 GIT binary patch literal 1161 zcmV;41a|w0P)wX4N$eI8~AM=unC`#B_u-F}~< z970@YbdZVIXb+3+VXrg%8W8$bgZ-&pLP)j6WyX^_thlP4!y}4iG%yZ2XpAY$!N5Ag zDx1R`j1ywUcQe>0GJ_eX8Lx}o*7CPXk72wl7wH*q^NMB6E42f^18&4M^i7IA=S60; z#zfco$Wg`|aTaV8USy)271iPiF~ytF3LFZ!6d#Fabm8)h?$O6%iZ`S9hHa+E5k^h3 zrLQi`(O<+6Yetw^0RZWf6^kv$8-_Qd=!5DxlA7VoC}fXjD@0N=ycvanzTqP&$Hzf^ zEaP>ZPS1!GGrpU_UX&TkUE+`uTy z{E!xtDpn7G+-M?Z1?DIo;$#__-t-qx5Sht0UXY?ag5H$e2gq)?*dfgAsGp075%Av4eNR#wV62@Sl??MYaw#N|KJQZUa zgG;}1pIm{EV~QZdTaq3P zipj%6eg7Yg2c}y8fK~au@<5#SveMl ze=ZLJMUya|*AD`PZH6h#TaGM@ReNM%^w0eY6ZJmill;}KjLluDbc{3lTE_O)WElO- zn7tZ|a|Z)lX>WXR*ay$pdxkY@M-)4kj4=H|W}_P<1|hVjNAF9!qXTVRUt=h$FUVdI zgQCI1BLg?xm5ygTtRK`Ka4D^aa0?eTk|KuRg}GP`pK&NoxK`zmG6e%SzU{&Z&m#12 zGSJ3#igG~j=?C)=#b;dVSA$vq%kz + + + +server: class Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

class Struct Reference

+
+
+ +

#include <class.h>

+
+Collaboration diagram for class:
+
+
Collaboration graph
+
[legend]
+ + + + + + +

+Data Fields

const int magic
class_ptr parent
size_t object_size
fptr_classInit init
+

Detailed Description

+
+

Definition at line 77 of file class.h.

+

Field Documentation

+ +
+ +
+ +

Definition at line 81 of file class.h.

+ +
+
+ +
+
+ + + + +
const int class::magic
+
+
+ +

Definition at line 78 of file class.h.

+ +
+
+ +
+
+ + + + +
size_t class::object_size
+
+
+ +

Definition at line 80 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 79 of file class.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structclass__coll__graph.map b/docs/html/structclass__coll__graph.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/structclass__coll__graph.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/structclass__coll__graph.md5 b/docs/html/structclass__coll__graph.md5 new file mode 100644 index 0000000..d3a7d75 --- /dev/null +++ b/docs/html/structclass__coll__graph.md5 @@ -0,0 +1 @@ +cfe38766fa447080e8b0ee009f97dda1 \ No newline at end of file diff --git a/docs/html/structclass__coll__graph.png b/docs/html/structclass__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b6b89bf2e96f6df829c0809796285c1d60a5d0 GIT binary patch literal 1208 zcmV;p1V{UcP)Cb!M@JVI7hhjrzrVlJ)6)O| z0RR90k9A#}00001bW%=J06^y0W&i*LDoI2^RCt{2n~RdGAPk1-dO20OIK2PEo`e8; zdg=|q+MQ&krPy}o+iZ+KzpM}(92^{98up6F20NAyhGkfW{Y|j)#Bas0zX8^0tt7&B zgVhEGZFL`qd%+qlzJqv1_iTD z*`XW5a4%SmU{nU3Lx<;n8tw(_YE}WP1Xu%)JJ&4GTIvSS7J8+}9@+q=m4=(ao(_g( zScYX-hW!>;c4SIrmSGu|VHq|BHp%Pw7_9js*rX@}JH#K~Yi(dfXrgC?>%*b5e%+|{ z`Wppd`ktKf%VE4H&^LRe9pe|;1g7pcWW!BkAhccT7bsIK#MlUt14#A2%tlOFOo)MZz zL#L@5*u&kRKpCt=hj{(4`MCwy&<1jyVC!L^RJ)zF{5#m#w6e9Xby~VOq{2E}8q33; zh;UH|Nlm7`R2xLvMBHnI%thTG59~?WL|CcQV9!M=?2+%4)w6Jo1~ zQg?(t_G#EKk#+zfV1kyFcz4bylCgB`2AQ2;B`ytumUUB&lOf35Ps7gitV4k(uVvko z{J=?!orXK6nUyjlYy$0C%?2&&$dn=(dqddXbpx+uiA=deLFNtzXj5UU zW(_vPnLQ>sVPC)aLD)aGZ5ks)TifOb$l9hA;-`Vv!ai_lY_kXU&=M;hwys)WvZi|2 zs*cY~#;wysSe^LKX;{BE$6*?Af< zvsIM>8_%y8LKa_#nhs~AQQul7B|DebQn*nu2&qlW}XU%4V9bYobu%%%SS+N(w77B)C zScYX-hW!@UDn=i WrZoa?!depm0000=R*Ae literal 0 HcmV?d00001 diff --git a/docs/html/structi__Class.html b/docs/html/structi__Class.html new file mode 100644 index 0000000..cee8764 --- /dev/null +++ b/docs/html/structi__Class.html @@ -0,0 +1,197 @@ + + + + +server: i_Class Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Class Struct Reference

+
+
+ +

#include <class.h>

+
+Collaboration diagram for i_Class:
+
+
Collaboration graph
+ + +
[legend]
+ + + + + + +

+Data Fields

struct interface *const _
fptr_ctor ctor
fptr_dtor dtor
fptr_clone clone
+

Detailed Description

+
+

Definition at line 15 of file class.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Class::_
+
+
+ +

Definition at line 16 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 19 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 17 of file class.h.

+ +
+
+ +
+ +
+ +

Definition at line 18 of file class.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structi__Class__coll__graph.map b/docs/html/structi__Class__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/docs/html/structi__Class__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/structi__Class__coll__graph.md5 b/docs/html/structi__Class__coll__graph.md5 new file mode 100644 index 0000000..5edad58 --- /dev/null +++ b/docs/html/structi__Class__coll__graph.md5 @@ -0,0 +1 @@ +71dfb0e4a9fbabe8867117a275509a55 \ No newline at end of file diff --git a/docs/html/structi__Class__coll__graph.png b/docs/html/structi__Class__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c4505ac9cddd3ff56e58f43f635a80decf504eb2 GIT binary patch literal 1241 zcmV;~1Sb25P)%c00960 z|3>@B?EnA(0d!JMQvg8b*k%9#1WrjrK~#90?U{?Rs~`+TeWM~c{QuA108wds>`_3c zr+4p}DvznF0h$CX3JCfhnJcwXuCxFYP$X{mr8knIL`%bCe|)Ees5&ZEwX=o0y2dqgZzQFrE>CHM z{rzrE9K}|t+_Y3|m)=N?C_D0M zrO+xUI{Rr{GxsJ@ippYWF%_FFw5VF;mY%U|%=bo6atRbrK#8Itw*&L0-A7$>Vm z@OhW9p0dLo~%5 znOsjX>6GXA62=uDSlp3`@l8TCd{knp))Y1MwMQtg@nwxG99X<9m1|O!5QOQPRuF;M z^qq5*dh^NbEq!1K&lPNI+qk0=OEul|Kpu=Q4_@DCofqq|i}h%Lf?ZK7Q`P5ed8PQk z5>TFODeA%xZ4$)?mXN~p(l&MMyu4C4u-GG$<&Y*=V>Dv4@R~y-mRX>H0!kDGCnTVN z0tzUgfC36Ap!_Y$DV32K>^YTrjQj;s-hsJ=QkHjMZlRRr9hh4vWqAk2KEJ$rnYqW8 zSFdLG@Ny|!3Gp80LQMH`y-v4yOHe=o1%jYU^iBVLP(Zm_iCb(4g0kzIJPatHdUm9*~+r_Ew-s2 zjkH$w(#V0YSt#1*t;tM!uyr%gov-;RRP3p)jnXq;vyNCl`Vku^OYJ8!_I%Al@v}ck zH)8ZqN110DIe*PV30ATuigKjf^TPki-Zd#Hhe?tNw7Pn}CQ#z^sgxy@e}gTc{BM+G zeUL4nfC5S+WxRzFVcBO=M(6y_4%%nh@@13=eLUqvlKJtrfD%d3@)pVgOH<+tZ6+r@ z(;m`oF{QGb*vI{30%fTwsr9J5Ez_vARQhR~pMzqLS~MSA+1>phwb3ttC`u4t_>t~_ z#JIxl6s6cgqtmNLTk=!fyiAYtlAl5tLu-r%aa&{gC=mh$lz7S!kDP;YM|^qXywWH^ zd@qJnsdV)cDeyAinIbxZJj6rwp=xotNws zx5j!C#Fw0u2!R4h3gsf7{7san{fplI`etx9+o4h^KkQ%Fjqw{;HMx#FlwkkDE}7q2 zO8eq+OriX^e_6tddy}l^*CUNQ`S?0x4rpa~Wq454CTw|UxQ*D|P zDG>q%6j1&q1#fsk0R + + + +server: i_Logger Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_Logger Struct Reference

+
+
+ +

#include <logger.h>

+
+Collaboration diagram for i_Logger:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_log log
+

Detailed Description

+
+

Definition at line 13 of file logger.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_Logger::_
+
+
+ +

Definition at line 14 of file logger.h.

+ +
+
+ +
+
+ + + + +
fptr_log i_Logger::log
+
+
+ +

Definition at line 15 of file logger.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structi__Logger__coll__graph.map b/docs/html/structi__Logger__coll__graph.map new file mode 100644 index 0000000..20a5b89 --- /dev/null +++ b/docs/html/structi__Logger__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/structi__Logger__coll__graph.md5 b/docs/html/structi__Logger__coll__graph.md5 new file mode 100644 index 0000000..8da8ddd --- /dev/null +++ b/docs/html/structi__Logger__coll__graph.md5 @@ -0,0 +1 @@ +c38324069e4681b971b9142640e73015 \ No newline at end of file diff --git a/docs/html/structi__Logger__coll__graph.png b/docs/html/structi__Logger__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f63b1a71c44a5d4c4526a368be333d05d3306aaa GIT binary patch literal 1038 zcmV+p1o8WcP)%c00960 z|HmufWB>pF0d!JMQvg8b*k%9#1A|FKK~#90?U{>mgCGz^MN!lU8UFugyS&tBwTfWV z^xm12SHf|Du$ygBK+xw%=hQ^WX#pspY*54|TAq5SA1KXO;|sh6Dz#~wZYjcOBt?pvmd8ANBZVj%s+N_t#Sb;ycKgvtN<~AC!i9N$ zyC;@nnpEdCRqHSsNf9H(Uwo!&DOFiY8uABWaVY3E$t7>3MhYza!M>Rf;}ge#>gKa><-K=6vpnr+(KdO4$LhS#_qtF`C0B`W~XPlPqUqz zg-T9{yJ0e7*y?XS-Ev!k0tzS)1ZB}DefL2DCATjA#D*X!xjyNJ0R@!Lpg<6GT$jI< z>He3rOL-;|D4@IxMNM_B@=@d+l=(+8+Ok?P_2_#tu=&6*pSLvZ2Qcxb9QoU^Z zK@GirhEhJ1>Lk6rn?Wv6OwsmzOVw6C$C7%7j^6&VtkD$Pp|ovKeJri!Z_j0mQYk2d zB5mx;!|cl=1;sClJ7dzEt$r%0_wkISY-upd*LGw1y{=LueJuvslu%x!1Q))-XtQu* znZ=f40tJ*UN;18HEueq`N+e~=-KM2nu + + + +server: i_StreamReader Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

i_StreamReader Struct Reference

+
+
+ +

#include <stream_reader.h>

+
+Collaboration diagram for i_StreamReader:
+
+
Collaboration graph
+ + +
[legend]
+ + + + +

+Data Fields

struct interface *const _
fptr_streamReaderRead read
+

Detailed Description

+
+

Definition at line 10 of file stream_reader.h.

+

Field Documentation

+ +
+
+ + + + +
struct interface* const i_StreamReader::_
+
+
+ +

Definition at line 11 of file stream_reader.h.

+ +
+
+ +
+ +
+ +

Definition at line 12 of file stream_reader.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structi__StreamReader__coll__graph.map b/docs/html/structi__StreamReader__coll__graph.map new file mode 100644 index 0000000..1fe8984 --- /dev/null +++ b/docs/html/structi__StreamReader__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/structi__StreamReader__coll__graph.md5 b/docs/html/structi__StreamReader__coll__graph.md5 new file mode 100644 index 0000000..4374504 --- /dev/null +++ b/docs/html/structi__StreamReader__coll__graph.md5 @@ -0,0 +1 @@ +913fb486afb7b429b609ad386b347751 \ No newline at end of file diff --git a/docs/html/structi__StreamReader__coll__graph.png b/docs/html/structi__StreamReader__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..61e7b4bc893ac6a6290ee0dd90289d74cb073a49 GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0vp^4Gav70vyahmjA~dJ|JZo;1lBd@BjZ+8F_yNip9$H&JnU%q_*{{5FPUj}OZ|NsBI?yP(u zi?JlgFPOpM*^M*?1{McT7srr_Id5lm3N6+WaJ^f|-2MOm&Fg2AuB^DI-ep{zKebb* zF`3z^T-8&7qiX(_xmGL%&kr*)Fx2Zb-1xK9=IHPLjH^Dbn<1X@k>kLY<9navGF<7` z>u!1zkYVJQn%8=+d*0;AWtL}e2K~77fgxy0N`BoFFRqE9C9|I%V_LUD%V(Q5FaLz# ziL4qd_FETbo(IV92ziwl$yEVP5K_t~)h%ZkIAKelX_x$XIYp^M&^M znwN7KCb>uUF_=hB?pl8+W%s4s43l~|Gj^%Vb6?n^zcf;2R(PW>FSmdf(8~-A1w0J% z1i`F5+zDR{=43y+YcN@d`)$l7-S{_F2WAxgoBn&z`z0pRZ+t!K#AI>(%&tVUmok%N zz zWwHuufHAjUB0)7_m)PMwtOr=~7c;$xW}NoC@ulSfIToJ}VYhV@xy83!ja)f-&Z$$~ z4ELWmew2B@$8?Qp=E+Gj1zZ9|mo7NR*rIMR3;sNrN>Y$FoS7_Wq{aE z-eRDXEQ>|OYvq%ZLmiwQych4VVo78LhX}`2CNPa44#+bVcx6^xe>3OO2j6+G?R$L$ zq!oOXg^#d#Tt30Fk@1p=5o7sWw-}CP&rKc$nfzV$Pc7*Gw@{gOg}=Xg7TuT)326rb zmZSB8z_h~9!B-Ifhqp=L#ezlqIY9yp3{46eXS!e9*{`tfPjk}a_aaptiXh?D3|WVi zs_&jo_T6|ZZL3eN-Ce5#%a5(Jvr6moWG)7S zmG{cGIZAPy%KO!JtfhTP=Gzl5W=$$x|CHmv*7VX0f!k5PV{V@)Y-p>~oq9IN=Fq0# zRa2Yag`Bm0mAB&TQl5raR_`*S+`pOfF8a1J%h0#Z@6f`9>MLX!N-t{HZE3XUb$G0o zs=mJceZ|0Le%*BIl`^&m#WSa+?p~9;N&0Q^^vw^&50nVa z%Bka9`X{)avF7^B$cAetJsZ|7PrY%9-{H9O&5I#YPnaGt8>|j4=C)z4d1u-1(e+B! z^t)fbL_Ls<{X8q4>Bjj;**MnTZ#&x==3R+q{L`o_b)Xm+OL43M?)jTQ0mZ=J^ZE7- zhW?q4=Q6ClsX9-xwLA(~PQ3ccuzk13`t1x1+e#GjI2y7U>eP!G&wjn|d@h4sBJ=Fm z3(vPRY;&IfozdqUbJ?1^w+jS+?cq + + + +server: iface_impl Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

iface_impl Struct Reference

+
+
+ +

#include <interface.h>

+ + + + + +

+Data Fields

const size_t nimpl
char simpl
const void * impl [MAX_IFACE]
+

Detailed Description

+
+

Definition at line 28 of file interface.h.

+

Field Documentation

+ +
+
+ + + + +
const void* iface_impl::impl[MAX_IFACE]
+
+
+ +

Definition at line 31 of file interface.h.

+ +
+
+ +
+
+ + + + +
const size_t iface_impl::nimpl
+
+
+ +

Definition at line 29 of file interface.h.

+ +
+
+ +
+
+ + + + +
char iface_impl::simpl
+
+
+ +

Definition at line 30 of file interface.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/structinterface.html b/docs/html/structinterface.html new file mode 100644 index 0000000..b85c7e0 --- /dev/null +++ b/docs/html/structinterface.html @@ -0,0 +1,158 @@ + + + + +server: interface Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

interface Struct Reference

+
+
+ +

#include <interface.h>

+ + + + +

+Data Fields

const char * name
const size_t nmethods
+

Detailed Description

+
+

Definition at line 22 of file interface.h.

+

Field Documentation

+ +
+
+ + + + +
const char* interface::name
+
+
+ +

Definition at line 23 of file interface.h.

+ +
+
+ +
+
+ + + + +
const size_t interface::nmethods
+
+
+ +

Definition at line 24 of file interface.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/syslog_8c.html b/docs/html/syslog_8c.html new file mode 100644 index 0000000..0009b48 --- /dev/null +++ b/docs/html/syslog_8c.html @@ -0,0 +1,189 @@ + + + + +server: src/logger/syslog.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/logger/syslog.c File Reference

+
+
+
#include <syslog.h>
+#include "logger.h"
+#include "interface/logger.h"
+
+Include dependency graph for syslog.c:
+
+
+
+
+

Go to the source code of this file.

+ + + + +

+Functions

 INIT_IFACE (Logger, logSyslog)
 CREATE_CLASS (LoggerSyslog, Logger, IFACE(Logger))
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
CREATE_CLASS (LoggerSyslog ,
Logger ,
IFACE(Logger 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
INIT_IFACE (Logger ,
logSyslog  
)
+
+
+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/syslog_8c__incl.map b/docs/html/syslog_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/syslog_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/syslog_8c__incl.md5 b/docs/html/syslog_8c__incl.md5 new file mode 100644 index 0000000..06be950 --- /dev/null +++ b/docs/html/syslog_8c__incl.md5 @@ -0,0 +1 @@ +e0d1e341f19b834baa7a71a9cc09b41d \ No newline at end of file diff --git a/docs/html/syslog_8c__incl.png b/docs/html/syslog_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..24d01e14734a53458d31d6e15b9317398c1e644c GIT binary patch literal 1618 zcmV-Y2CeytP)CcPcXt;T7mtsRzrVlJ)6)O| z0RR90C9!@200001bW%=J06^y0W&i*M#7RU!RCt{2oQaaNDiDQ@qF%+Vc>jm}yIB%v z0tkY466{koiKvi9{liNTl0Je1!g*LW0Eh0V05jB7lh^fQcf2i6VfB zDi+{0PGNwj(OMh&>J$rbUIQ7-D*?1=2xTx>YwredUBog^VqMmaFUvUL#6$+uxGWs* z&x;sVVJ_H)BP3{#Gg$WCMx4uHRfSz=(+Q=_3j`?UX%-U<6oxoW1K(!FU>v3iAj|*? z!05}yN7+WUhlZ**U_@BD@ak+jDSonJc>pKDC;Sb+AbYk6(rJ z2i0CS<)^I!^&43y?20@Q1uS*FHu+B|FE zh-;wQW#pEimObFJJQqaE8aNyC5&^4XU>%}WG$pcMx_5BlP4#%*s(4m#ZfAcvfS6;5AVt)|8HrsSa0Jpkg=)3b5m zt~RUVmbcSg0A42om?#36C<2%$0+=WQn5eG?7_G-a*6d8)0@ogaIRtf^s*4K}VGAj>RZ! z#zi8z(KHSmX*7_#AiVH=cMF8q9`DL0c=hS7^dyWq++F{O?^Dd+PJ<|z;Qw?sE_E75 zjw^*ikpyE0l?0)@B#a+XB7(vYo;ejKKeHf&XNHnt_@xj$mkK#XUq%w197LY67eMfj z-%)%$!9RaP@#WJv;r+x1#PIh@h&|)5zc&d_uYXVF3go*GK7L)}4RQngE`(;>Df2fs zzv`QoLN)TF(O&`Z714*IR3lFd@(O;HL3n|2R%IFcH2@XD4+ofM_FV<=O6NSvw1HkX z%8OQqZ2EM7`432W^>}0?m?@?=-|qmJZj>dUciWF9m@l}?M)=tTGsbn{_&%3l&X_J9 z-t_=8eQ&{~?rGkSN1iAgA-RSg`7%V-=P=I``8g55L=nJ55x_(dz(f(iLyP+2LN=NbN6EzKOa+Z0GsDu-H$fRVrSI$1n^zI9^-pzoe+~9VBd+Z-8fTCqBbU`;=kN|njSl6^&&j6}wSXb@OS0xCbGODzbF>E+vH3nPv zcJDxdoMArsI843EIhP7+{|D!-U9~ z=+l@)5x_(dz(f(iL=nJ55x_(dz(nl<=KfcQpAWjwJdbzQkVqsFi9`z2KfiG;43yfK QU;qFB07*qoM6N<$f(*R#5dZ)H literal 0 HcmV?d00001 diff --git a/docs/html/syslog_8c_source.html b/docs/html/syslog_8c_source.html new file mode 100644 index 0000000..d4bddf6 --- /dev/null +++ b/docs/html/syslog_8c_source.html @@ -0,0 +1,139 @@ + + + + +server: src/logger/syslog.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/logger/syslog.c

+
+
+Go to the documentation of this file.
00001 #include <syslog.h>
+00002 
+00003 #include "logger.h"
+00004 #include "interface/logger.h"
+00005 
+00006 static
+00007 const
+00008 int syslog_priority[] = {
+00009     LOG_USER | LOG_DEBUG,
+00010     LOG_USER | LOG_INFO,
+00011     LOG_USER | LOG_NOTICE,
+00012     LOG_USER | LOG_WARNING,
+00013     LOG_USER | LOG_ERR,
+00014     LOG_USER | LOG_CRIT,
+00015     LOG_USER | LOG_ALERT,
+00016     LOG_USER | LOG_EMERG
+00017 };
+00018 
+00019 static
+00020 void
+00021 logSyslog(void * this, logger_level level, const char * const msg)
+00022 {
+00023     syslog(syslog_priority[level], "[%s] %s", logger_level_str[level], msg);
+00024 }
+00025 
+00026 INIT_IFACE(Logger, logSyslog);
+00027 CREATE_CLASS(LoggerSyslog, Logger, IFACE(Logger));
+00028 
+00029 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..2d99ef23fed78c7683f0b5aa803d937060d288c4 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qo)`sjv*C{Z|CmjY;X`^DSv)) z;hc^cTF;t%XWXdwWP5+kt?jQ5uhqKtjd^EY`^^-S;M%tFAj_l)EwVTK)E@1LSD0{e q?a6($SGQTzz1#QBzr0NMKf^0WCX-0bi?u-G89ZJ6T-G@yGywp8?ljB* literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c3d2be3c7e518fbca6bb30f571882e72fc506d GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qk9-Ajv*C{Z|~mbJ)|JfaM8Xd zIP7xAmLwau9@iXhZTrl-TjWj9jM#?{xt`6uU{<)jb9Suc^QnbhJ(o{ib8=j9u0_mE8M7kgF7f<7W7IEf=8(L_qx|g0H;V7iPxm&Q@G7p8W2Kx&iT|YUM=ITC zY<0Qbr;u&AtXD{o@41wH=7&d8=2Z_{M9Tsa=g*t*@A3H$UOlxZk7?f6RUWpx>Fc_L s#LQ{edY3MpIXkMeV^&YV=9fR%8Jv|Kya=#u06K}m)78&qol`;+0RKEt)&Kwi literal 0 HcmV?d00001 diff --git a/docs/html/tab_s.png b/docs/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..978943ac807718de0e69e5a585a8f0a1e5999285 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QZ1e?jv*C{Z|}b5Yzkm-c<7z3 zq^cq0=~}Z;b(!Zvb5Z%sTRFKGlz1=qOFg;myyu?$r`wZb^irPsN1a)6)TwB0r+)wb zPL25;=adu89?fTK`qDR>$D*)b_WOmdKI;Vst02j(hg8%>k literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..2192056 --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/docs/html/testserver_8c.html b/docs/html/testserver_8c.html new file mode 100644 index 0000000..3d42fb8 --- /dev/null +++ b/docs/html/testserver_8c.html @@ -0,0 +1,175 @@ + + + + +server: src/testserver.c File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+ +
+

src/testserver.c File Reference

+
+
+
#include <stdio.h>
+#include <socket.h>
+#include <string.h>
+#include "server.h"
+#include "logger.h"
+#include "http/request_parser.h"
+#include "signalHandling.h"
+#include "interface/class.h"
+
+Include dependency graph for testserver.c:
+
+
+
+
+

Go to the source code of this file.

+ + + +

+Functions

int main ()
+

Function Documentation

+ +
+
+ + + + + + + +
int main ()
+
+
+ +

Definition at line 14 of file testserver.c.

+
{
+        Logger            logger = new(LoggerStderr, LOGGER_INFO);
+        HttpRequestParser parser = new(HttpRequestParser);
+        Server            server = new(Server, logger, parser, 11212, SOMAXCONN);
+        //Server            server = new(Server, logger, parser, 11212, 20);
+
+        init_signals();
+        serverRun(server);
+
+        delete(&server);
+        delete(&logger);
+        delete(&parser);
+
+        return 0;
+}
+
+

+Here is the call graph for this function:
+
+
+ + +
+

+ +
+
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/html/testserver_8c__incl.map b/docs/html/testserver_8c__incl.map new file mode 100644 index 0000000..8be6a30 --- /dev/null +++ b/docs/html/testserver_8c__incl.map @@ -0,0 +1,2 @@ + + diff --git a/docs/html/testserver_8c__incl.md5 b/docs/html/testserver_8c__incl.md5 new file mode 100644 index 0000000..d5c11e9 --- /dev/null +++ b/docs/html/testserver_8c__incl.md5 @@ -0,0 +1 @@ +8688f87e920ceb1680eb04bbc589ac2e \ No newline at end of file diff --git a/docs/html/testserver_8c__incl.png b/docs/html/testserver_8c__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5a32e8632d457f9101786205f15589d04e0555ce GIT binary patch literal 3460 zcma)9c{J3~-=1t~EM?!xQut=<8art$BfBBQ2$7wvlOkeFLbjAaBUxt5*iG4zETxb= zLPM62Es}LC@ARJYp7WmHU%&gu{XFM6_dd_(^SSqrdy}jzjM>0~U=Rqz1~-A(fI#$U z8V+Zsr_Fs~WL{d(vob>%9-o{D2n4rxbm-~nJ$Ue7YI+)1P#`8I_O7)xGc!{`LBZJA z*wxh)kH<$wM)L9TrKP2{wzdur57PurPENL))tYJORG5v0El7Xin->Vgx&?<_L7?*2 zoRcF+>a1o#=iP)d$(WOqu@BDzdOM6_3?{L4lh+b-GCkQYr|*QEqV4~W5yO-?p&s=f z6s*ZQ9e#?3?mefKI7pa{a1Qi@3Be39rUw{ei~jM08^n$MSn#Qr>TiMj(K^$YJS*jB zOQqUK?ft(Omk%fCcvuC984I=lw{N z)nqf6frzmv&EtMGLj5hSYDVKeSXQT?s2r)_w10p(lJHza+uk}d#cgVLw9|wF}LvY?jra9mdZk6AD;#oKw_&RzdW4V zy~`vyqKVD=2ZEPhNVA9lS`^tQoWji+@M$gfEs6}Sz#G+edq+ot$63kKsJ*YP$mwCH zz57G^(q&enfR@kt%F)4y`D<{}KTUlSTzj|syUI$BEMBV zOA|vn0QXxk&@~g|eb%%^{P%2Afp^nq!*O!U>8qybvlBVstnpFPe}%t&5B&!E;jNDb z1*^U^0I3W9>w4-0aClBVY5)`r2-ot)$O!A8Ka)Zx}c+3st z8#5}=wTdJg6r9Yg-U)EN>GO@cDy1yFW5`6~`R=`L(QT|PZ*FF$;2Oa3{Bf>{l&C57 z*1`BHg97$l1?Ha8bCMf%ZL+hFwt&CmuQq)Hpw%xL7E%ihe@H*P-e|_gL<+u+i8D>$ zjT2)EYzcfF62@AyZUvEG=HewY=ZmdMPy!d1g}kOpJYcnxj7|)FnDp*2)v$<2y}#dg zJK1EM5hxUWKJ%3iOMyZ~YJH`l^+|#Jc$r5W>iltxOFpZGa2vN+_IOO)G8jUa&EXV2 zwNPU^Hb_e)| z!!tQMnV;&LS+6~a|MDOzO;?ID<_5`@n10^qJl`zfQ{TV7?{d~{CV~8hT0&xWXUII~ zs6%bp@e%kf(J-T^({#@(W8m}%bAm*ZJ3mEzT4@e7o4_^ybr_l#bKWR6o?L%B#mF(2 zfuv}TdG4P)3!`;6&!mhMc^xTjVnJKdDUMf zkH#_^uWXX0^`7blEX2q^1?k{jL z93B|P-isNw8#6PIljQf_v^+md^^O?^O-Pv6N8Og)dKl6cKQf)Hts>OUvD3_U#X3QC zY6-V_;il+CJ}vTIa{BM&^Wv%T1bWFce(%-`Dw?icVq}@C(y!EDEtb7R5>Ad%Mt`t# zmL8bxH++L-`FZA;v9)?Z<5mvU?KT_srrV*g!H$Z(`Vev_}45Tbxch!{DSXQfpx%e7!<< z9N}P!;mKx(;F#{>#WTxugXfw9Y_g;2T^~^$ZolWm)`|7-PC|&+?FF83yMHz0=$Tde z^kNIuG~wrTd^#U{W^vx`^(n~c)g3eGjjy~xHkN#DGwl@>tll-Me-@!=#Vaj?x-6fn zHy)a>`>xPA$;Hz-n!Bgmf9eqfqo(exNkUw!jR|y4y^rY{&5Fzpimc08OAxPWi7jDO zKfF3Fb>=+c6fi3`J7~5}Dw4IgQFCp)zDfSc@1CMx*b_5xX{-3g=T4hF6R(ZT=Qk-k zVL75NKPYm;?N!Uxa~d+tZLNJDFtr|)rEv9(w>c&7AE{F+uQ5LL)WZG^EDk$z7}+$P0HhxIu3YmvPrU3C{!eaKi-Jr?uSFHfCzNuvvi z^~=X6FL}o#`*P3%c0f>N^i2y0zP37lM7{^zL4RvTbgPPcDWv+YitYuKIl*Vf=(4sE zr(*VunGd+?c)DQc#h5t*4I!@`=M~k3nWLO^i>Kl^zzN7 ze%G_cSUHZ;ApbfT;%ef!yp8~!dhK2X%Yi~xAv`eS4iA@`rtK5dpU{9UF@=Y7lIk8Z zSSu6^`zv%=gXP+pTDAkOPa6#4{!F1^GLr9xfACvKtS}gF7jKjmDen)+bc^;^aABp{ znacMTY#kL6)=(Dbl6g`|NK`OUDk;3(SSbc?k%>*NYewY6YpDnW+H&@DV|ET*u&kW4 z5MXmlAB}EM@hEGD+%xwt+h_=`tw8@hi*U#~!VuFv6jHHZXm5CiBif&OcdxKrP`v`| zxG)q8romWn^#8>lgldrqw?F|W=-K{CEcA=tLGW?FvT(0x=lq8ZdL}6T>E$RmUZ>wj zYIdaq%Xa6XcRfZGhd*(cQM6gaJ)hF?(5#w*Z+qV6xqc72NoFg++#c)AW9K3(Gg9R8 zE-Hrx+w(jw&*^3Uu8A8qgvxUw8Z-j<-hjDoQ|t>1or+(EJC8GjAytUM4x-g4)DFaJ zOV$v5oO?_Hgn45swF~%SP%87pG(%x3FrUapmUP)TP!91VyOFA!&+bm{o%|g7j#)8Z zH<>(+8GDX#(;inxIUmA&y>qE8L5xA6K|k>e5+Z@ab^DCQT4B3^#iBmNq(RhLB7+x? zrlIUFJ;u)ivRPpb=KVH>eMw+MmsaD-LxX}cs~t|qL2To0$Q+EEy7tZ6&JhnN7TWBt zYvx#!MtZq8T*ca31zT~tYhUce$HTY)8wkuZC3k!O2|`I$eCabPISl{-9$88?;%exM zJgdYoTtux(LG!cXv6Q<4)Z~uii8oG(9or#!mvS>a;Y1&!wbx@_^8uCa=UNWtU)|oa zz2KsS?L_i_{I%4{&zWPl#9dO{nv~RF8Rx2XTIU)XkOr(os(#AL{dJtLeLgz&NzEn= z7YHLce=l`>mSr(2TWCuddBJ%t&f1qZ=}}c$gyL37X+NsYj?g!#M>I(Vmna2}@&Qr` z_7x5cQnxSBs1;C9c@NjP1(J~sAb1ikR zm+nn4)oZ#l`Urvd%6L?Kpg0$_y>5H2F0#12G?%cE3YPZRC|5vy6XbEq5{FlSO0^%q zwSdkNle*KphmjFpcGB{aC)$2)h-XP~m)$N)7s;*B!R*oiTRTELk`NqWmx3r{eenuW z7u=epwMlu;HD<6TFB4V(F2PTlUw}7Odo>EBgqtpL1B{xGYE89dSm#)mo*x7ul?C-P zp1`uKMnUogifp0R3)KX|j%=uMjvo)oKaphp>*lTh_r&V%x)LJBcA{q>mwQ&I?YKZ4 z<8|bNkb%=ve0`aO-{)qr;Y-S<7m}Ov7ijkDERaaILMlQgXf>*37$GmH(*xa?H*}uIc3@vxOQy39coJs*_o2w0qcmXMS;dpSx=a(n4wEG?X3^z=GEnVEA zwzsT)yOSjCLHVgUFozG^Nf~i|Wl(2UJghPlCwjr9vkR$vubEvwO7|q(ftda=*z%_R z2w+Oo-CnlOU0UYHK98slm7udbaaeCRa3xuJ*?TQqRIlPw0sk`4yXF7UnmsF=NXJE7 zl^3O-I?z%gjF=^vkkTR?zKqQWII(;#&9lnrv*U-Zt4qy~Hg zTF6?az2+&saP)1R!0A}G5$XOOx+qjzn}Mk&=||2|q$7<375v2)_spG{KhZxpq&;7w zDnr;h#jM;Ur+q14MU`{ym2{M($bv%*DP1o{Y}QKzko%~&&as}lwR#sppx^Flwp_O^ zTwEyfKyLpd8ZN+Nl%AvH4+r>Zerk|6CwmBY$maqc}U_TJ>_tbwG z+icuQTQ^&N^rJ%#JtY;ok?M;Y)=j#9IzubH|Nn<2)^|^gJF$j3_@OWP9}hRQfK?jY GeE2_F-EP4E literal 0 HcmV?d00001 diff --git a/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map b/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map new file mode 100644 index 0000000..d42047b --- /dev/null +++ b/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 b/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 new file mode 100644 index 0000000..0bb1b99 --- /dev/null +++ b/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 @@ -0,0 +1 @@ +13bd7eb33e05d633c1ace99188c41a6f \ No newline at end of file diff --git a/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png b/docs/html/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8bde492d6bffe85b66843a2ed25ae5f5a9acb2 GIT binary patch literal 1800 zcmaKtX*Ao38pcy*n2B0uG^3TGovE#+wGJW?6iqRfu~SRYqSi#JnY2N*Rir7ULyDkk zNg1)Uw!}7S1T9G`D)vxE{&po*q9oV!o_p@OU+y{YdEe)p=R6;tFYhni#R(+~RtAGW zAX&Q$Hm)GhA?$&^|Bd9qE*na}bZ}rUzq;Fs#NuPe&=wXJ9i5$OYHCHr#Yss?(>$K8 zu5M;#CY4G>p-_Q=fl5kBI2^9Cvy;Q&97M%pvByt0{yI>HuDLq7fh_r>p&*b{f}M?( z`|p(1!uz?Urxk1yIQ{cKSq z=%TAL>f-RGgj-y^KZ@zoY-I5~BD(d{KILYcS$uGL7=@ehX^=bHRW$vEzJy(Ajd|0| zz~pJub~6(hFV>kA9v5AFCP?nlr+=K&aOKv-haI09(p&W*MRW7dx;xx4UfFIK-Zbj5 zpYbCm9^st9Jteg>yrwufn#*;ai%sqY#J-mFVZ&unl@<8y;dAC&Zb}}tNq0w=(j)Ns z!RlzFiv5Bg>CT&^#YzOd@k)g6VnkIMso=uu_h#!A3C0nbkoXe#cTn>&-=YfdZz=a> z0S_H2UY+^&S#6Zhgwc?D0hpXGQ){vN_^lDj-x~;Wez#ltw{u)Tp3(;cw&U1ll^!Gu zqlhqk(p>e(*Yyw@{nSf%!5E;pV@cadxZzo8mRNndS?< zwySsV>eSF6>d%p{+gHM^IF0of#SLfeHB&c-=gXHH4cV2{@?5I6r|Wn)RVjjppgE{; zHFt{^5NZnq7c59q54D z3peFFXC}MdGVlRk#b$Toy&uiGmd~_F06~M!2Cd!7Y|+hSKeTD^`g)E^9Bex=kiS1K zT&yz<{G76(!h-V}Wai-%bO%l%c|#?`tk(v~su6tVm;Q9OID|)^WGKCKe%X$cW@8F7 zd6}tuiKK|@ybfmSFz`cyCI$N*Cf*j%lGc{^{`=*H%NNnCG+^(%#kQKd@H}f!1VZ8(-%VF_M$kDAj!ZvzT|IZeV45Yo}@kLdwg}rL7PXvfmz&l@ym8}^kqcTuvHC^;}7cJ zHwA5KYt4k&OD?r8rhl`UTtSl4Rsl4iS_YxYBJc?AEcE0b_C#)-Hq@zEfH29y%1NU_ zs(pUTHHIIH`qkv6I$w~}Qa%=z7AMV`$)nKA~i#JN72jH#5VqF{5H&)>kLsS;d|62;HZ842<`3UJ&8DaKm8`bO4vuO> z_J(?6&if=7^?&QZAJ8|KGzJr!3atGo#QDlRiXn55@WnAHTgk;cO^nq&qX*{!=(Q}0 z%X|%FUjU14sfGXo80F?EP4_$;B6`01VmN#pUE@7+2ECTNE&4A8z7&-I4;{1<=5yKa gQ1S;9AsC4d^>j^v&h|Sr{6iHxTPK^EbC+)a3quy4(f|Me literal 0 HcmV?d00001 diff --git a/docs/html/testserver_8c_source.html b/docs/html/testserver_8c_source.html new file mode 100644 index 0000000..71be63f --- /dev/null +++ b/docs/html/testserver_8c_source.html @@ -0,0 +1,141 @@ + + + + +server: src/testserver.c Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
server 0.0.1
+
basicserverinfrastructure
+
+
+ + +
+
+ +
+
+
+ +
+
+
+

src/testserver.c

+
+
+Go to the documentation of this file.
00001 #include <stdio.h>
+00002 #include <socket.h>
+00003 #include <string.h>
+00004 
+00005 #include "server.h"
+00006 #include "logger.h"
+00007 #include "http/request_parser.h"
+00008 
+00009 #include "signalHandling.h"
+00010 
+00011 #include "interface/class.h"
+00012 
+00013 int
+00014 main()
+00015 {
+00016         Logger            logger = new(LoggerStderr, LOGGER_INFO);
+00017         HttpRequestParser parser = new(HttpRequestParser);
+00018         Server            server = new(Server, logger, parser, 11212, SOMAXCONN);
+00019         //Server            server = new(Server, logger, parser, 11212, 20);
+00020 
+00021         init_signals();
+00022         serverRun(server);
+00023 
+00024         delete(&server);
+00025         delete(&logger);
+00026         delete(&parser);
+00027 
+00028         return 0;
+00029 }
+00030 
+00031 // vim: set ts=4 sw=4:
+
+
+ + + + + +
+ +
+ + + + diff --git a/docs/latex/Makefile b/docs/latex/Makefile new file mode 100644 index 0000000..8b7c89a --- /dev/null +++ b/docs/latex/Makefile @@ -0,0 +1,19 @@ +all: clean refman.pdf + +pdf: refman.pdf + +refman.pdf: refman.tex + pdflatex refman.tex + makeindex refman.idx + pdflatex refman.tex + latex_count=5 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman.tex ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf diff --git a/docs/latex/accept_8c.tex b/docs/latex/accept_8c.tex new file mode 100644 index 0000000..707cc8d --- /dev/null +++ b/docs/latex/accept_8c.tex @@ -0,0 +1,68 @@ +\hypertarget{accept_8c}{ +\section{src/socket/accept.c File Reference} +\label{accept_8c}\index{src/socket/accept.c@{src/socket/accept.c}} +} +{\ttfamily \#include $<$errno.h$>$}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for accept.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{structSock}{Sock} \hyperlink{accept_8c_a46aa6b495ccf752e844f93bf46c9edd6}{socketAccept} (\hyperlink{structSock}{Sock} this, char remoteAddr\mbox{[}16\mbox{]}) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{accept_8c_a46aa6b495ccf752e844f93bf46c9edd6}{ +\index{accept.c@{accept.c}!socketAccept@{socketAccept}} +\index{socketAccept@{socketAccept}!accept.c@{accept.c}} +\subsubsection[{socketAccept}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Sock} socketAccept ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{char}]{remoteAddr\mbox{[}16\mbox{]}} +\end{DoxyParamCaption} +)}} +\label{accept_8c_a46aa6b495ccf752e844f93bf46c9edd6} + + +: Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D + +: change port to remote port on success + + + +Definition at line 8 of file accept.c. + + +\begin{DoxyCode} +{ + Sock sock; /* Socket for client */ + unsigned int len; /* Length of client address data structure */ + + /* Set the size of the in-out parameter */ + len = sizeof(this->addr); + + sock = new(Sock, this->log, this->port); + close(sock->handle); + /* Wait for a client to connect */ + sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len); + + if (-1 == sock->handle) { + loggerLog(this->log, LOGGER_WARNING, + "error accepting connection: %s", strerror(errno)); + } else { + loggerLog(this->log, LOGGER_INFO, + "handling client %s\n", inet_ntoa((sock->addr).si + n_addr)); + } + + return sock; +} +\end{DoxyCode} + + +Here is the call graph for this function: + + diff --git a/docs/latex/accept_8c__incl.dot b/docs/latex/accept_8c__incl.dot new file mode 100644 index 0000000..4de4e6b --- /dev/null +++ b/docs/latex/accept_8c__incl.dot @@ -0,0 +1,15 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/socket/accept.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="errno.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/accept_8c__incl.md5 b/docs/latex/accept_8c__incl.md5 new file mode 100644 index 0000000..a88075b --- /dev/null +++ b/docs/latex/accept_8c__incl.md5 @@ -0,0 +1 @@ +1c58e26005132ec1aa1680942569b176 \ No newline at end of file diff --git a/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot b/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot new file mode 100644 index 0000000..8db5343 --- /dev/null +++ b/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketAccept",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 b/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 new file mode 100644 index 0000000..30c94d1 --- /dev/null +++ b/docs/latex/accept_8c_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 @@ -0,0 +1 @@ +a87e97e5a05cbb8f89e4bc27d3257053 \ No newline at end of file diff --git a/docs/latex/annotated.tex b/docs/latex/annotated.tex new file mode 100644 index 0000000..51911dd --- /dev/null +++ b/docs/latex/annotated.tex @@ -0,0 +1,17 @@ +\section{Data Structures} +Here are the data structures with brief descriptions:\begin{DoxyCompactList} +\item\contentsline{section}{\hyperlink{structclass}{class} }{\pageref{structclass}}{} +\item\contentsline{section}{\hyperlink{structHttpRequest}{HttpRequest} }{\pageref{structHttpRequest}}{} +\item\contentsline{section}{\hyperlink{structHttpRequestParser}{HttpRequestParser} }{\pageref{structHttpRequestParser}}{} +\item\contentsline{section}{\hyperlink{structHttpRequestQueue}{HttpRequestQueue} }{\pageref{structHttpRequestQueue}}{} +\item\contentsline{section}{\hyperlink{structi__Class}{i\_\-Class} }{\pageref{structi__Class}}{} +\item\contentsline{section}{\hyperlink{structi__Logger}{i\_\-Logger} }{\pageref{structi__Logger}}{} +\item\contentsline{section}{\hyperlink{structi__StreamReader}{i\_\-StreamReader} }{\pageref{structi__StreamReader}}{} +\item\contentsline{section}{\hyperlink{structiface__impl}{iface\_\-impl} }{\pageref{structiface__impl}}{} +\item\contentsline{section}{\hyperlink{structinterface}{interface} }{\pageref{structinterface}}{} +\item\contentsline{section}{\hyperlink{structLogger}{Logger} }{\pageref{structLogger}}{} +\item\contentsline{section}{\hyperlink{structLoggerStderr}{LoggerStderr} }{\pageref{structLoggerStderr}}{} +\item\contentsline{section}{\hyperlink{structLoggerSyslog}{LoggerSyslog} }{\pageref{structLoggerSyslog}}{} +\item\contentsline{section}{\hyperlink{structServer}{Server} }{\pageref{structServer}}{} +\item\contentsline{section}{\hyperlink{structSock}{Sock} }{\pageref{structSock}}{} +\end{DoxyCompactList} diff --git a/docs/latex/class_8c.tex b/docs/latex/class_8c.tex new file mode 100644 index 0000000..9c04af3 --- /dev/null +++ b/docs/latex/class_8c.tex @@ -0,0 +1,70 @@ +\hypertarget{class_8c}{ +\section{src/class.c File Reference} +\label{class_8c}\index{src/class.c@{src/class.c}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface.h\char`\"{}}\par +Include dependency graph for class.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void $\ast$ \hyperlink{class_8c_a30ee53043e30a6f7517952a07b9dad83}{class\_\-getInterface} (\hyperlink{structclass}{class\_\-ptr} $\ast$\hyperlink{structclass}{class}, \hyperlink{structinterface}{iface\_\-ptr} \_\-iface) +\item +\hyperlink{structclass}{class\_\-ptr} \hyperlink{class_8c_a4571582148d8bd8a9387e89843e1904a}{class\_\-getClass} (void $\ast$object) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{class_8c_a4571582148d8bd8a9387e89843e1904a}{ +\index{class.c@{class.c}!class\_\-getClass@{class\_\-getClass}} +\index{class\_\-getClass@{class\_\-getClass}!class.c@{class.c}} +\subsubsection[{class\_\-getClass}]{\setlength{\rightskip}{0pt plus 5cm}{\bf class\_\-ptr} class\_\-getClass ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{object} +\end{DoxyParamCaption} +)}} +\label{class_8c_a4571582148d8bd8a9387e89843e1904a} + + +Definition at line 21 of file class.c. + + +\begin{DoxyCode} +{ + return *(class_ptr *)(object - sizeof(void*)); +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + +\hypertarget{class_8c_a30ee53043e30a6f7517952a07b9dad83}{ +\index{class.c@{class.c}!class\_\-getInterface@{class\_\-getInterface}} +\index{class\_\-getInterface@{class\_\-getInterface}!class.c@{class.c}} +\subsubsection[{class\_\-getInterface}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ class\_\-getInterface ( +\begin{DoxyParamCaption} +\item[{{\bf class\_\-ptr} $\ast$}]{class, } +\item[{{\bf iface\_\-ptr}}]{\_\-iface} +\end{DoxyParamCaption} +)}} +\label{class_8c_a30ee53043e30a6f7517952a07b9dad83} + + +Definition at line 8 of file class.c. + + +\begin{DoxyCode} +{ + void * iface = (void *)IFACE_GET(*class, _iface); + + while(NULL == iface && HAS_PARENT(*class)) { + *class = (*class)->parent; + iface = (void *)IFACE_GET(*class, _iface); + } + + return iface; +} +\end{DoxyCode} diff --git a/docs/latex/class_8c__incl.dot b/docs/latex/class_8c__incl.dot new file mode 100644 index 0000000..af193e4 --- /dev/null +++ b/docs/latex/class_8c__incl.dot @@ -0,0 +1,15 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/class.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/class_8c__incl.md5 b/docs/latex/class_8c__incl.md5 new file mode 100644 index 0000000..3bd0211 --- /dev/null +++ b/docs/latex/class_8c__incl.md5 @@ -0,0 +1 @@ +1922e487506377dd7f0f97faac6a74d4 \ No newline at end of file diff --git a/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.dot b/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.dot new file mode 100644 index 0000000..de9064a --- /dev/null +++ b/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="class_getClass",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="classClone",height=0.2,width=0.4,color="black",URL="$interface_2class_8c.html#ada46f0179448063a30f6f219270bf1e0"]; +} diff --git a/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 b/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 new file mode 100644 index 0000000..4fd005c --- /dev/null +++ b/docs/latex/class_8c_a4571582148d8bd8a9387e89843e1904a_icgraph.md5 @@ -0,0 +1 @@ +e3784e6b850239e78fddc5ad8dd02142 \ No newline at end of file diff --git a/docs/latex/class_8h.tex b/docs/latex/class_8h.tex new file mode 100644 index 0000000..d013a59 --- /dev/null +++ b/docs/latex/class_8h.tex @@ -0,0 +1,350 @@ +\hypertarget{class_8h}{ +\section{include/class.h File Reference} +\label{class_8h}\index{include/class.h@{include/class.h}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include $<$sys/types.h$>$}\par +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include $<$assert.h$>$}\par +{\ttfamily \#include \char`\"{}interface.h\char`\"{}}\par +Include dependency graph for class.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structclass}{class} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{class_8h_a04ec2c53aa9fcdb5b58dc8e9d552dec0}{\_\-ISOC99\_\-SOURCE} +\item +\#define \hyperlink{class_8h_a28c4c4c1ebf62795262a3553d59e8bff}{CLASS\_\-MAGIC}~0xFEFE +\item +\#define \hyperlink{class_8h_ab12c2142e0ec3f4f19a03b3879c67f32}{CLASS}(name) +\item +\#define \hyperlink{class_8h_a45e588b871b5b73461805ab4a5c59aa5}{EXTENDS}(parent)~const char \_\-\mbox{[}sizeof(struct c\_\-\#\#parent)\mbox{]} +\item +\#define \hyperlink{class_8h_ab9f9098d95379c04d979721396dabf68}{\_\-NULL}~NULL +\item +\#define \hyperlink{class_8h_a509b4880afb25bb862c448d7a71e7afe}{CREATE\_\-CLASS}(name, \_\-parent,...) +\item +\#define \hyperlink{class_8h_a2e9a0b177e4115cc7e547b51ac35c5af}{\_\-CALL}(object, \_\-iface, method,...) +\item +\#define \hyperlink{class_8h_ada752d9d1fdbf84e978606e8999c762d}{CALL}(object, \_\-iface, method,...) +\item +\#define \hyperlink{class_8h_a06fb0f2e08d1cbacbed6784319e7c3fc}{RETCALL}(object, \_\-iface, method, ret,...) +\item +\#define \hyperlink{class_8h_adb99542d8748b5108322ccb26bb367e0}{IFACE\_\-GET}(\hyperlink{structclass}{class}, iface)~(interfaceGet(\&((\hyperlink{structclass}{class})-\/$>$impl),(iface))) +\item +\#define \hyperlink{class_8h_a80e924aca338b869530dde0a9389e916}{IFACE\_\-EXISTS}(\hyperlink{structclass}{class}, iface)~(NULL != IFACE\_\-GET((\hyperlink{structclass}{class}),(iface))) +\item +\#define \hyperlink{class_8h_a5ea9893a0e62748b9d1154d5b77abed1}{HAS\_\-PARENT}(\hyperlink{structclass}{class})~(NULL != ((\hyperlink{structclass}{class})-\/$>$parent)) +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef void($\ast$ \hyperlink{class_8h_aa0ba47bce818b20155a8ef17a1fdc35c}{fptr\_\-classInit} )(void) +\item +typedef struct \hyperlink{structclass}{class} $\ast$ \hyperlink{class_8h_a68df9f6e346c5fad9f61bb2557d1d832}{class\_\-ptr} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void $\ast$ \hyperlink{class_8h_ad96186de45579eb423ab318a5caaf62f}{class\_\-getInterface} (\hyperlink{structclass}{class\_\-ptr} $\ast$, \hyperlink{structinterface}{iface\_\-ptr}) +\item +\hyperlink{structclass}{class\_\-ptr} \hyperlink{class_8h_a1f382a42de272d5cc4d6bb5b17db6ede}{class\_\-getClass} (void $\ast$) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{class_8h_a2e9a0b177e4115cc7e547b51ac35c5af}{ +\index{class.h@{class.h}!\_\-CALL@{\_\-CALL}} +\index{\_\-CALL@{\_\-CALL}!class.h@{class.h}} +\subsubsection[{\_\-CALL}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-CALL( +\begin{DoxyParamCaption} +\item[{}]{object, } +\item[{}]{\_\-iface, } +\item[{}]{method, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{class_8h_a2e9a0b177e4115cc7e547b51ac35c5af} +{\bfseries Value:} +\begin{DoxyCode} +class_ptr class = class_getClass((object)); \ + struct i_##_iface * iface; + \ + if (class->init) class->init(); + \ + iface = (struct i_##_iface *)class_getInterface(&class, &i_##_iface); + \ + while ((NULL == iface || NULL == iface->method) && HAS_PARENT(class)) { + \ + class = class->parent; + \ + if (class->init) class->init(); + \ + iface = (struct i_##_iface *)class_getInterface(&class, &i_##_ifa + ce); \ + }; + \ + assert(NULL != iface->method); +\end{DoxyCode} +: actually i use gcc feature \#\# for variadoc... think about a way to make this standard. + +Definition at line 43 of file class.h. + +\hypertarget{class_8h_a04ec2c53aa9fcdb5b58dc8e9d552dec0}{ +\index{class.h@{class.h}!\_\-ISOC99\_\-SOURCE@{\_\-ISOC99\_\-SOURCE}} +\index{\_\-ISOC99\_\-SOURCE@{\_\-ISOC99\_\-SOURCE}!class.h@{class.h}} +\subsubsection[{\_\-ISOC99\_\-SOURCE}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-ISOC99\_\-SOURCE}} +\label{class_8h_a04ec2c53aa9fcdb5b58dc8e9d552dec0} + + +Definition at line 11 of file class.h. + +\hypertarget{class_8h_ab9f9098d95379c04d979721396dabf68}{ +\index{class.h@{class.h}!\_\-NULL@{\_\-NULL}} +\index{\_\-NULL@{\_\-NULL}!class.h@{class.h}} +\subsubsection[{\_\-NULL}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-NULL~NULL}} +\label{class_8h_ab9f9098d95379c04d979721396dabf68} + + +Definition at line 24 of file class.h. + +\hypertarget{class_8h_ada752d9d1fdbf84e978606e8999c762d}{ +\index{class.h@{class.h}!CALL@{CALL}} +\index{CALL@{CALL}!class.h@{class.h}} +\subsubsection[{CALL}]{\setlength{\rightskip}{0pt plus 5cm}\#define CALL( +\begin{DoxyParamCaption} +\item[{}]{object, } +\item[{}]{\_\-iface, } +\item[{}]{method, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{class_8h_ada752d9d1fdbf84e978606e8999c762d} +{\bfseries Value:} +\begin{DoxyCode} +do { \ + _CALL(object, _iface, method, ##__VA_ARGS__); \ + iface->method(object, ##__VA_ARGS__); \ + } while(0) +\end{DoxyCode} + + +Definition at line 55 of file class.h. + +\hypertarget{class_8h_ab12c2142e0ec3f4f19a03b3879c67f32}{ +\index{class.h@{class.h}!CLASS@{CLASS}} +\index{CLASS@{CLASS}!class.h@{class.h}} +\subsubsection[{CLASS}]{\setlength{\rightskip}{0pt plus 5cm}\#define CLASS( +\begin{DoxyParamCaption} +\item[{}]{name} +\end{DoxyParamCaption} +)}} +\label{class_8h_ab12c2142e0ec3f4f19a03b3879c67f32} +{\bfseries Value:} +\begin{DoxyCode} +struct c_##name; \ + typedef struct c_##name * name; \ + extern struct class * const _##name; \ + struct c_##name +\end{DoxyCode} + + +Definition at line 15 of file class.h. + +\hypertarget{class_8h_a28c4c4c1ebf62795262a3553d59e8bff}{ +\index{class.h@{class.h}!CLASS\_\-MAGIC@{CLASS\_\-MAGIC}} +\index{CLASS\_\-MAGIC@{CLASS\_\-MAGIC}!class.h@{class.h}} +\subsubsection[{CLASS\_\-MAGIC}]{\setlength{\rightskip}{0pt plus 5cm}\#define CLASS\_\-MAGIC~0xFEFE}} +\label{class_8h_a28c4c4c1ebf62795262a3553d59e8bff} + + +Definition at line 13 of file class.h. + +\hypertarget{class_8h_a509b4880afb25bb862c448d7a71e7afe}{ +\index{class.h@{class.h}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!class.h@{class.h}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}\#define CREATE\_\-CLASS( +\begin{DoxyParamCaption} +\item[{}]{name, } +\item[{}]{\_\-parent, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{class_8h_a509b4880afb25bb862c448d7a71e7afe} +{\bfseries Value:} +\begin{DoxyCode} +static struct class c_##name; \ + static void _classInit_(void) { \ + c_##name.parent = _##_parent; \ + c_##name.init = NULL; \ + } \ + static struct class c_##name = { \ + CLASS_MAGIC, \ + NULL, \ + sizeof(struct c_##name), \ + _classInit_, \ + INIT_IMPL(__VA_ARGS__) \ + }; struct class * const _##name = &c_##name +\end{DoxyCode} + + +Definition at line 25 of file class.h. + +\hypertarget{class_8h_a45e588b871b5b73461805ab4a5c59aa5}{ +\index{class.h@{class.h}!EXTENDS@{EXTENDS}} +\index{EXTENDS@{EXTENDS}!class.h@{class.h}} +\subsubsection[{EXTENDS}]{\setlength{\rightskip}{0pt plus 5cm}\#define EXTENDS( +\begin{DoxyParamCaption} +\item[{}]{parent} +\end{DoxyParamCaption} +)~const char \_\-\mbox{[}sizeof(struct c\_\-\#\#parent)\mbox{]}}} +\label{class_8h_a45e588b871b5b73461805ab4a5c59aa5} + + +Definition at line 21 of file class.h. + +\hypertarget{class_8h_a5ea9893a0e62748b9d1154d5b77abed1}{ +\index{class.h@{class.h}!HAS\_\-PARENT@{HAS\_\-PARENT}} +\index{HAS\_\-PARENT@{HAS\_\-PARENT}!class.h@{class.h}} +\subsubsection[{HAS\_\-PARENT}]{\setlength{\rightskip}{0pt plus 5cm}\#define HAS\_\-PARENT( +\begin{DoxyParamCaption} +\item[{}]{{\bf class}} +\end{DoxyParamCaption} +)~(NULL != (({\bf class})-\/$>$parent))}} +\label{class_8h_a5ea9893a0e62748b9d1154d5b77abed1} + + +Definition at line 71 of file class.h. + +\hypertarget{class_8h_a80e924aca338b869530dde0a9389e916}{ +\index{class.h@{class.h}!IFACE\_\-EXISTS@{IFACE\_\-EXISTS}} +\index{IFACE\_\-EXISTS@{IFACE\_\-EXISTS}!class.h@{class.h}} +\subsubsection[{IFACE\_\-EXISTS}]{\setlength{\rightskip}{0pt plus 5cm}\#define IFACE\_\-EXISTS( +\begin{DoxyParamCaption} +\item[{}]{{\bf class}, } +\item[{}]{iface} +\end{DoxyParamCaption} +)~(NULL != IFACE\_\-GET(({\bf class}),(iface)))}} +\label{class_8h_a80e924aca338b869530dde0a9389e916} + + +Definition at line 69 of file class.h. + +\hypertarget{class_8h_adb99542d8748b5108322ccb26bb367e0}{ +\index{class.h@{class.h}!IFACE\_\-GET@{IFACE\_\-GET}} +\index{IFACE\_\-GET@{IFACE\_\-GET}!class.h@{class.h}} +\subsubsection[{IFACE\_\-GET}]{\setlength{\rightskip}{0pt plus 5cm}\#define IFACE\_\-GET( +\begin{DoxyParamCaption} +\item[{}]{{\bf class}, } +\item[{}]{iface} +\end{DoxyParamCaption} +)~(interfaceGet(\&(({\bf class})-\/$>$impl),(iface)))}} +\label{class_8h_adb99542d8748b5108322ccb26bb367e0} + + +Definition at line 68 of file class.h. + +\hypertarget{class_8h_a06fb0f2e08d1cbacbed6784319e7c3fc}{ +\index{class.h@{class.h}!RETCALL@{RETCALL}} +\index{RETCALL@{RETCALL}!class.h@{class.h}} +\subsubsection[{RETCALL}]{\setlength{\rightskip}{0pt plus 5cm}\#define RETCALL( +\begin{DoxyParamCaption} +\item[{}]{object, } +\item[{}]{\_\-iface, } +\item[{}]{method, } +\item[{}]{ret, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{class_8h_a06fb0f2e08d1cbacbed6784319e7c3fc} +{\bfseries Value:} +\begin{DoxyCode} +do { \ + _CALL(object, _iface, method, ##__VA_ARGS__); \ + ret = iface->method(object, ##__VA_ARGS__); \ + } while(0) +\end{DoxyCode} + + +Definition at line 61 of file class.h. + + + +\subsection{Typedef Documentation} +\hypertarget{class_8h_a68df9f6e346c5fad9f61bb2557d1d832}{ +\index{class.h@{class.h}!class\_\-ptr@{class\_\-ptr}} +\index{class\_\-ptr@{class\_\-ptr}!class.h@{class.h}} +\subsubsection[{class\_\-ptr}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf class}$\ast$ {\bf class\_\-ptr}}} +\label{class_8h_a68df9f6e346c5fad9f61bb2557d1d832} + + +Definition at line 76 of file class.h. + +\hypertarget{class_8h_aa0ba47bce818b20155a8ef17a1fdc35c}{ +\index{class.h@{class.h}!fptr\_\-classInit@{fptr\_\-classInit}} +\index{fptr\_\-classInit@{fptr\_\-classInit}!class.h@{class.h}} +\subsubsection[{fptr\_\-classInit}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf fptr\_\-classInit})(void)}} +\label{class_8h_aa0ba47bce818b20155a8ef17a1fdc35c} + + +Definition at line 73 of file class.h. + + + +\subsection{Function Documentation} +\hypertarget{class_8h_a1f382a42de272d5cc4d6bb5b17db6ede}{ +\index{class.h@{class.h}!class\_\-getClass@{class\_\-getClass}} +\index{class\_\-getClass@{class\_\-getClass}!class.h@{class.h}} +\subsubsection[{class\_\-getClass}]{\setlength{\rightskip}{0pt plus 5cm}{\bf class\_\-ptr} class\_\-getClass ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{} +\end{DoxyParamCaption} +)}} +\label{class_8h_a1f382a42de272d5cc4d6bb5b17db6ede} + + +Definition at line 21 of file class.c. + + +\begin{DoxyCode} +{ + return *(class_ptr *)(object - sizeof(void*)); +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + +\hypertarget{class_8h_ad96186de45579eb423ab318a5caaf62f}{ +\index{class.h@{class.h}!class\_\-getInterface@{class\_\-getInterface}} +\index{class\_\-getInterface@{class\_\-getInterface}!class.h@{class.h}} +\subsubsection[{class\_\-getInterface}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ class\_\-getInterface ( +\begin{DoxyParamCaption} +\item[{{\bf class\_\-ptr} $\ast$}]{, } +\item[{{\bf iface\_\-ptr}}]{} +\end{DoxyParamCaption} +)}} +\label{class_8h_ad96186de45579eb423ab318a5caaf62f} + + +Definition at line 8 of file class.c. + + +\begin{DoxyCode} +{ + void * iface = (void *)IFACE_GET(*class, _iface); + + while(NULL == iface && HAS_PARENT(*class)) { + *class = (*class)->parent; + iface = (void *)IFACE_GET(*class, _iface); + } + + return iface; +} +\end{DoxyCode} diff --git a/docs/latex/class_8h__dep__incl.dot b/docs/latex/class_8h__dep__incl.dot new file mode 100644 index 0000000..c3d7206 --- /dev/null +++ b/docs/latex/class_8h__dep__incl.dot @@ -0,0 +1,16 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/class.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="include/logger.h",height=0.2,width=0.4,color="black",URL="$logger_8h.html"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="include/socket.h",height=0.2,width=0.4,color="black",URL="$socket_8h.html"]; + Node3 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="include/server.h",height=0.2,width=0.4,color="black",URL="$server_8h.html"]; + Node2 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/class_8h__dep__incl.md5 b/docs/latex/class_8h__dep__incl.md5 new file mode 100644 index 0000000..1432a9c --- /dev/null +++ b/docs/latex/class_8h__dep__incl.md5 @@ -0,0 +1 @@ +743c0f1a4db49d95196986108d4026e8 \ No newline at end of file diff --git a/docs/latex/class_8h__incl.dot b/docs/latex/class_8h__incl.dot new file mode 100644 index 0000000..45ad351 --- /dev/null +++ b/docs/latex/class_8h__incl.dot @@ -0,0 +1,18 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/class.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="assert.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="interface.h",height=0.2,width=0.4,color="black",URL="$interface_8h.html"]; + Node6 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/class_8h__incl.md5 b/docs/latex/class_8h__incl.md5 new file mode 100644 index 0000000..6fc0b0b --- /dev/null +++ b/docs/latex/class_8h__incl.md5 @@ -0,0 +1 @@ +e55fd9b295617946e63f2ab649c73115 \ No newline at end of file diff --git a/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.dot b/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.dot new file mode 100644 index 0000000..de9064a --- /dev/null +++ b/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="class_getClass",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="classClone",height=0.2,width=0.4,color="black",URL="$interface_2class_8c.html#ada46f0179448063a30f6f219270bf1e0"]; +} diff --git a/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 b/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 new file mode 100644 index 0000000..4fd005c --- /dev/null +++ b/docs/latex/class_8h_a1f382a42de272d5cc4d6bb5b17db6ede_icgraph.md5 @@ -0,0 +1 @@ +e3784e6b850239e78fddc5ad8dd02142 \ No newline at end of file diff --git a/docs/latex/close__conn_8c.tex b/docs/latex/close__conn_8c.tex new file mode 100644 index 0000000..9406ed2 --- /dev/null +++ b/docs/latex/close__conn_8c.tex @@ -0,0 +1,48 @@ +\hypertarget{close__conn_8c}{ +\section{src/server/close\_\-conn.c File Reference} +\label{close__conn_8c}\index{src/server/close\_\-conn.c@{src/server/close\_\-conn.c}} +} +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include \char`\"{}server.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +Include dependency graph for close\_\-conn.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266}{serverCloseConn} (\hyperlink{structServer}{Server} this, unsigned int i) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266}{ +\index{close\_\-conn.c@{close\_\-conn.c}!serverCloseConn@{serverCloseConn}} +\index{serverCloseConn@{serverCloseConn}!close_conn.c@{close\_\-conn.c}} +\subsubsection[{serverCloseConn}]{\setlength{\rightskip}{0pt plus 5cm}void serverCloseConn ( +\begin{DoxyParamCaption} +\item[{{\bf Server}}]{this, } +\item[{unsigned int}]{i} +\end{DoxyParamCaption} +)}} +\label{close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266} + + +Definition at line 7 of file close\_\-conn.c. + + +\begin{DoxyCode} +{ + int fd = (this->fds)[i].fd; + + delete(&((this->conns)[fd].sock)); + delete(&((this->conns)[fd].reader)); + (this->fds)[i].events = 0; + this->ndel++; +// CLEAR_CONN(this, i); +// this->nfds--; +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + diff --git a/docs/latex/close__conn_8c__incl.dot b/docs/latex/close__conn_8c__incl.dot new file mode 100644 index 0000000..53eed16 --- /dev/null +++ b/docs/latex/close__conn_8c__incl.dot @@ -0,0 +1,13 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server/close_conn.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="server.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/close__conn_8c__incl.md5 b/docs/latex/close__conn_8c__incl.md5 new file mode 100644 index 0000000..e662d9e --- /dev/null +++ b/docs/latex/close__conn_8c__incl.md5 @@ -0,0 +1 @@ +ff43219012ef29327905204fcca6a7cd \ No newline at end of file diff --git a/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.dot b/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.dot new file mode 100644 index 0000000..80a64cb --- /dev/null +++ b/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverCloseConn",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="serverRun",height=0.2,width=0.4,color="black",URL="$run_8c.html#a67a4d9073b80d8ae1459fb11ddd23675"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 b/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 new file mode 100644 index 0000000..f2bc53c --- /dev/null +++ b/docs/latex/close__conn_8c_ad721e61c8676f0b4c3b8fc401e26f266_icgraph.md5 @@ -0,0 +1 @@ +e78969226285854db8f53c7299426df2 \ No newline at end of file diff --git a/docs/latex/connect_8c.tex b/docs/latex/connect_8c.tex new file mode 100644 index 0000000..308e37d --- /dev/null +++ b/docs/latex/connect_8c.tex @@ -0,0 +1,53 @@ +\hypertarget{connect_8c}{ +\section{src/socket/connect.c File Reference} +\label{connect_8c}\index{src/socket/connect.c@{src/socket/connect.c}} +} +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$errno.h$>$}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for connect.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{connect_8c_adbfc4792c437102f20e2c86c4ee8581b}{socketConnect} (\hyperlink{structSock}{Sock} this, const char $\ast$addr) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{connect_8c_adbfc4792c437102f20e2c86c4ee8581b}{ +\index{connect.c@{connect.c}!socketConnect@{socketConnect}} +\index{socketConnect@{socketConnect}!connect.c@{connect.c}} +\subsubsection[{socketConnect}]{\setlength{\rightskip}{0pt plus 5cm}void socketConnect ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{const char $\ast$}]{addr} +\end{DoxyParamCaption} +)}} +\label{connect_8c_adbfc4792c437102f20e2c86c4ee8581b} + + +Definition at line 10 of file connect.c. + + +\begin{DoxyCode} +{ + inet_pton(AF_INET, addr, &((this->addr).sin_addr)); + (this->addr).sin_family = AF_INET; /* Internet address family */ + (this->addr).sin_port = htons(this->port); /* Local port */ + + if (-1 == connect(this->handle, (struct sockaddr*) &(this->addr), sizeof( + this->addr))) { + loggerLog(this->log, LOGGER_CRIT, + "error connection socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + diff --git a/docs/latex/connect_8c__incl.dot b/docs/latex/connect_8c__incl.dot new file mode 100644 index 0000000..eec67cc --- /dev/null +++ b/docs/latex/connect_8c__incl.dot @@ -0,0 +1,17 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/socket/connect.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="errno.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/connect_8c__incl.md5 b/docs/latex/connect_8c__incl.md5 new file mode 100644 index 0000000..2d0eb54 --- /dev/null +++ b/docs/latex/connect_8c__incl.md5 @@ -0,0 +1 @@ +c7b1742ea57dbf2fa3b5487303cc6d27 \ No newline at end of file diff --git a/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot b/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot new file mode 100644 index 0000000..de308ae --- /dev/null +++ b/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketConnect",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 b/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 new file mode 100644 index 0000000..39afb5b --- /dev/null +++ b/docs/latex/connect_8c_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 @@ -0,0 +1 @@ +d4b61c03fa9446761ec7f4284d17967f \ No newline at end of file diff --git a/docs/latex/daemonize_8c.tex b/docs/latex/daemonize_8c.tex new file mode 100644 index 0000000..39a4b81 --- /dev/null +++ b/docs/latex/daemonize_8c.tex @@ -0,0 +1,50 @@ +\hypertarget{daemonize_8c}{ +\section{src/daemonize.c File Reference} +\label{daemonize_8c}\index{src/daemonize.c@{src/daemonize.c}} +} +{\ttfamily \#include $<$stdio.h$>$}\par +{\ttfamily \#include $<$unistd.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +Include dependency graph for daemonize.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{daemonize_8c_a29b0af1da2432bcc90721c0b62f4e660}{daemonize} (void) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{daemonize_8c_a29b0af1da2432bcc90721c0b62f4e660}{ +\index{daemonize.c@{daemonize.c}!daemonize@{daemonize}} +\index{daemonize@{daemonize}!daemonize.c@{daemonize.c}} +\subsubsection[{daemonize}]{\setlength{\rightskip}{0pt plus 5cm}void daemonize ( +\begin{DoxyParamCaption} +\item[{void}]{} +\end{DoxyParamCaption} +)}} +\label{daemonize_8c_a29b0af1da2432bcc90721c0b62f4e660} + + +Definition at line 6 of file daemonize.c. + + +\begin{DoxyCode} + { + pid_t pid; + + if (0 > ((pid = fork()))) { + perror("deamoinze[fork]"); + exit(EXIT_FAILURE); + } else if (0 != pid) { + exit(EXIT_SUCCESS); + } + + /* make new child session leader */ + setsid(); + + /* connect all standard streams to /dev/null */ + stderr = freopen("/dev/null", "w", stderr); + stdin = freopen("/dev/null", "r", stdin); + stdout = freopen("/dev/null", "w", stdout); +} +\end{DoxyCode} diff --git a/docs/latex/daemonize_8c__incl.dot b/docs/latex/daemonize_8c__incl.dot new file mode 100644 index 0000000..99e8cc4 --- /dev/null +++ b/docs/latex/daemonize_8c__incl.dot @@ -0,0 +1,13 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/daemonize.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdio.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="unistd.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/daemonize_8c__incl.md5 b/docs/latex/daemonize_8c__incl.md5 new file mode 100644 index 0000000..bc98496 --- /dev/null +++ b/docs/latex/daemonize_8c__incl.md5 @@ -0,0 +1 @@ +403b8d0b590d43f10a9874fc6dbeffa0 \ No newline at end of file diff --git a/docs/latex/doxygen.sty b/docs/latex/doxygen.sty new file mode 100644 index 0000000..680e609 --- /dev/null +++ b/docs/latex/doxygen.sty @@ -0,0 +1,445 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +\RequirePackage{array} +\RequirePackage{calc} +\RequirePackage{color} +\RequirePackage{fancyhdr} +\RequirePackage{longtable} +\RequirePackage{verbatim} +\RequirePackage{ifthen} +\RequirePackage{xcolor} + +% Use helvetica font instead of times roman +\RequirePackage{helvet} +\RequirePackage{sectsty} +\RequirePackage{tocloft} +\allsectionsfont{\usefont{OT1}{phv}{bc}{n}\selectfont} +\providecommand{\cftchapfont}{% + \fontsize{11}{13}\usefont{OT1}{phv}{bc}{n}\selectfont +} +\providecommand{\cftchappagefont}{% + \fontsize{11}{13}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsecfont}{% + \fontsize{10}{12}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsecpagefont}{% + \fontsize{10}{12}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsubsecfont}{% + \fontsize{10}{12}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsubsecpagefont}{% + \fontsize{10}{12}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsubsubsecfont}{% + \fontsize{9}{11}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftsubsubsecpagefont}{% + \fontsize{9}{11}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftparafont}{% + \fontsize{9}{11}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cftparapagefont}{% + \fontsize{9}{11}\usefont{OT1}{phv}{c}{n}\selectfont +} +\providecommand{\cfttoctitlefont}{% + \fontsize{20}{22}\usefont{OT1}{phv}{b}{n}\selectfont +} +\providecommand{\rmdefault}{phv} +\providecommand{\bfdefault}{bc} + + +% Setup fancy headings +\pagestyle{fancyplain} +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Feb 8 2012 13:04:39 for server by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Feb 8 2012 13:04:39 for server by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +%---------- Internal commands used in this style file ---------------- + +% Generic environment used by all paragraph-based environments defined +% below. Note that the command \title{...} needs to be defined inside +% those environments! +\newenvironment{DoxyDesc}[1]{% + \begin{list}{}% + {% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
 ... 
+\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}{% + \DoxyCode% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
    ...
) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
    ...
) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
...
) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, and @dot ... @enddot +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{list}{}% + {% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \begin{DoxyDesc}{#2}% + \begin{description}% + \item[] \hspace{\fill} \vspace{-25pt}% + \definecolor{tableShade}{HTML}{F8F8F8}% + \rowcolors{1}{white}{tableShade}% + \arrayrulecolor{gray}% + \setlength{\tabcolsep}{0.01\textwidth}% + \ifthenelse{\equal{#1}{}} + {\begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.87\textwidth}|}}% + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtable}{|>{\centering}p{0.10\textwidth}|% + >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.75\textwidth}|}}% + {\begin{longtable}{|>{\centering}p{0.10\textwidth}|% + >{\centering\hspace{0pt}}p{0.15\textwidth}|% + >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.58\textwidth}|}}% + }\hline% +}{% + \end{longtable}% + \end{description}% + \end{DoxyDesc}% +} + +% is used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{##1 {\em ##2}}% + }{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \begin{DoxyDesc}{#1}% + \begin{description}% + \item[] \hspace{\fill} \vspace{-25pt}% + \definecolor{tableShade}{HTML}{F8F8F8}% + \rowcolors{1}{white}{tableShade}% + \arrayrulecolor{gray}% + \setlength{\tabcolsep}{0.01\textwidth}% + \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.77\textwidth}|}% + \hline% +}{% + \end{longtable}% + \end{description}% + \end{DoxyDesc}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \begin{DoxyDesc}{#1}% + \begin{description}% + \item[] \hspace{\fill} \vspace{-25pt}% + \definecolor{tableShade}{HTML}{F8F8F8}% + \rowcolors{1}{white}{tableShade}% + \arrayrulecolor{gray}% + \setlength{\tabcolsep}{0.01\textwidth}% + \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.77\textwidth}|}% + \hline% +}{% + \end{longtable}% + \end{description}% + \end{DoxyDesc}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \begin{DoxyDesc}{#1}% + \begin{description}% + \item[] \hspace{\fill} \vspace{-25pt}% + \definecolor{tableShade}{HTML}{F8F8F8}% + \rowcolors{1}{white}{tableShade}% + \arrayrulecolor{gray}% + \setlength{\tabcolsep}{0.01\textwidth}% + \begin{longtable}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.77\textwidth}|}% + \hline% +}{% + \end{longtable}% + \end{description}% + \end{DoxyDesc}% +} + +\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})} +\newenvironment{DoxyCompactList} +{\begin{list}{}{ + \setlength{\leftmargin}{0.5cm} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \renewcommand{\makelabel}{\hfill}}} +{\end{list}} +\newenvironment{DoxyCompactItemize} +{ + \begin{itemize} + \setlength{\itemsep}{-3pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0pt} + \setlength{\partopsep}{0pt} +} +{\end{itemize}} +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} +\newlength{\tmplength} +\newenvironment{TabularC}[1] +{ +\setlength{\tmplength} + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} + \par\begin{tabular*}{\linewidth} + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} +} +{\end{tabular*}\par} +\newcommand{\entrylabel}[1]{ + {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}} +\newenvironment{Desc} +{\begin{list}{} + { + \settowidth{\labelwidth}{40pt} + \setlength{\leftmargin}{\labelwidth} + \setlength{\parsep}{0pt} + \setlength{\itemsep}{-4pt} + \renewcommand{\makelabel}{\entrylabel} + } +} +{\end{list}} +\newenvironment{Indent} + {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} + \item[]\ignorespaces} + {\unskip\end{list}} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\addtocounter{secnumdepth}{1} +\usepackage[T1]{fontenc} +\makeatletter +\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}% + {-3.25ex plus -1ex minus -0.2ex}% + {1.5ex plus 0.2ex}% + {\normalfont\normalsize\bfseries}} +\makeatother +\stepcounter{secnumdepth} +\stepcounter{tocdepth} +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} diff --git a/docs/latex/files.tex b/docs/latex/files.tex new file mode 100644 index 0000000..6166190 --- /dev/null +++ b/docs/latex/files.tex @@ -0,0 +1,39 @@ +\section{File List} +Here is a list of all files with brief descriptions:\begin{DoxyCompactList} +\item\contentsline{section}{include/\hyperlink{class_8h}{class.h} }{\pageref{class_8h}}{} +\item\contentsline{section}{include/\hyperlink{interface_8h}{interface.h} }{\pageref{interface_8h}}{} +\item\contentsline{section}{include/\hyperlink{logger_8h}{logger.h} }{\pageref{logger_8h}}{} +\item\contentsline{section}{include/\hyperlink{server_8h}{server.h} }{\pageref{server_8h}}{} +\item\contentsline{section}{include/\hyperlink{signalHandling_8h}{signalHandling.h} }{\pageref{signalHandling_8h}}{} +\item\contentsline{section}{include/\hyperlink{socket_8h}{socket.h} }{\pageref{socket_8h}}{} +\item\contentsline{section}{include/http/\hyperlink{request_8h}{request.h} }{\pageref{request_8h}}{} +\item\contentsline{section}{include/http/\hyperlink{request__parser_8h}{request\_\-parser.h} }{\pageref{request__parser_8h}}{} +\item\contentsline{section}{include/http/\hyperlink{request__queue_8h}{request\_\-queue.h} }{\pageref{request__queue_8h}}{} +\item\contentsline{section}{include/interface/\hyperlink{interface_2class_8h}{class.h} }{\pageref{interface_2class_8h}}{} +\item\contentsline{section}{include/interface/\hyperlink{interface_2logger_8h}{logger.h} }{\pageref{interface_2logger_8h}}{} +\item\contentsline{section}{include/interface/\hyperlink{stream__reader_8h}{stream\_\-reader.h} }{\pageref{stream__reader_8h}}{} +\item\contentsline{section}{src/\hyperlink{class_8c}{class.c} }{\pageref{class_8c}}{} +\item\contentsline{section}{src/\hyperlink{daemonize_8c}{daemonize.c} }{\pageref{daemonize_8c}}{} +\item\contentsline{section}{src/\hyperlink{interface_8c}{interface.c} }{\pageref{interface_8c}}{} +\item\contentsline{section}{src/\hyperlink{logger_8c}{logger.c} }{\pageref{logger_8c}}{} +\item\contentsline{section}{src/\hyperlink{server_8c}{server.c} }{\pageref{server_8c}}{} +\item\contentsline{section}{src/\hyperlink{signalHandling_8c}{signalHandling.c} }{\pageref{signalHandling_8c}}{} +\item\contentsline{section}{src/\hyperlink{socket_8c}{socket.c} }{\pageref{socket_8c}}{} +\item\contentsline{section}{src/\hyperlink{testserver_8c}{testserver.c} }{\pageref{testserver_8c}}{} +\item\contentsline{section}{src/http/\hyperlink{request_8c}{request.c} }{\pageref{request_8c}}{} +\item\contentsline{section}{src/http/\hyperlink{request__parser_8c}{request\_\-parser.c} }{\pageref{request__parser_8c}}{} +\item\contentsline{section}{src/http/\hyperlink{request__queue_8c}{request\_\-queue.c} }{\pageref{request__queue_8c}}{} +\item\contentsline{section}{src/interface/\hyperlink{interface_2class_8c}{class.c} }{\pageref{interface_2class_8c}}{} +\item\contentsline{section}{src/interface/\hyperlink{interface_2logger_8c}{logger.c} }{\pageref{interface_2logger_8c}}{} +\item\contentsline{section}{src/interface/\hyperlink{stream__reader_8c}{stream\_\-reader.c} }{\pageref{stream__reader_8c}}{} +\item\contentsline{section}{src/logger/\hyperlink{stderr_8c}{stderr.c} }{\pageref{stderr_8c}}{} +\item\contentsline{section}{src/logger/\hyperlink{syslog_8c}{syslog.c} }{\pageref{syslog_8c}}{} +\item\contentsline{section}{src/server/\hyperlink{close__conn_8c}{close\_\-conn.c} }{\pageref{close__conn_8c}}{} +\item\contentsline{section}{src/server/\hyperlink{handle__accept_8c}{handle\_\-accept.c} }{\pageref{handle__accept_8c}}{} +\item\contentsline{section}{src/server/\hyperlink{poll_8c}{poll.c} }{\pageref{poll_8c}}{} +\item\contentsline{section}{src/server/\hyperlink{read_8c}{read.c} }{\pageref{read_8c}}{} +\item\contentsline{section}{src/server/\hyperlink{run_8c}{run.c} }{\pageref{run_8c}}{} +\item\contentsline{section}{src/socket/\hyperlink{accept_8c}{accept.c} }{\pageref{accept_8c}}{} +\item\contentsline{section}{src/socket/\hyperlink{connect_8c}{connect.c} }{\pageref{connect_8c}}{} +\item\contentsline{section}{src/socket/\hyperlink{listen_8c}{listen.c} }{\pageref{listen_8c}}{} +\end{DoxyCompactList} diff --git a/docs/latex/handle__accept_8c.tex b/docs/latex/handle__accept_8c.tex new file mode 100644 index 0000000..c0079ba --- /dev/null +++ b/docs/latex/handle__accept_8c.tex @@ -0,0 +1,5 @@ +\hypertarget{handle__accept_8c}{ +\section{src/server/handle\_\-accept.c File Reference} +\label{handle__accept_8c}\index{src/server/handle\_\-accept.c@{src/server/handle\_\-accept.c}} +} +This graph shows which files directly or indirectly include this file: diff --git a/docs/latex/handle__accept_8c__dep__incl.dot b/docs/latex/handle__accept_8c__dep__incl.dot new file mode 100644 index 0000000..0b13af4 --- /dev/null +++ b/docs/latex/handle__accept_8c__dep__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server/handle_accept.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="src/server/run.c",height=0.2,width=0.4,color="black",URL="$run_8c.html"]; +} diff --git a/docs/latex/handle__accept_8c__dep__incl.md5 b/docs/latex/handle__accept_8c__dep__incl.md5 new file mode 100644 index 0000000..b77e5ec --- /dev/null +++ b/docs/latex/handle__accept_8c__dep__incl.md5 @@ -0,0 +1 @@ +202b02f8d82b9a69e87d5eac330c8cb2 \ No newline at end of file diff --git a/docs/latex/interface_2class_8c.tex b/docs/latex/interface_2class_8c.tex new file mode 100644 index 0000000..847fa3d --- /dev/null +++ b/docs/latex/interface_2class_8c.tex @@ -0,0 +1,109 @@ +\hypertarget{interface_2class_8c}{ +\section{src/interface/class.c File Reference} +\label{interface_2class_8c}\index{src/interface/class.c@{src/interface/class.c}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$assert.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +Include dependency graph for class.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void $\ast$ \hyperlink{interface_2class_8c_a841e4a0f9bceb16fda262302d038bfa0}{classNew} (\hyperlink{structclass}{class\_\-ptr} \hyperlink{structclass}{class},...) +\item +void \hyperlink{interface_2class_8c_a292005216c251622a115ea90ff6d36c0}{classDelete} (void $\ast$$\ast$object) +\item +void $\ast$ \hyperlink{interface_2class_8c_ada46f0179448063a30f6f219270bf1e0}{classClone} (void $\ast$\_\-object) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{interface_2class_8c_ada46f0179448063a30f6f219270bf1e0}{ +\index{interface/class.c@{interface/class.c}!classClone@{classClone}} +\index{classClone@{classClone}!interface/class.c@{interface/class.c}} +\subsubsection[{classClone}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ classClone ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{\_\-object} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8c_ada46f0179448063a30f6f219270bf1e0} + + +Definition at line 42 of file class.c. + + +\begin{DoxyCode} +{ + class_ptr class = class_getClass(_object); + void * object = calloc(1, class->object_size + sizeof(void*)); + + * (class_ptr *)object = class; + object += sizeof(void*); + +#undef clone + CALL(object, Class, clone, _object); + + return object; +} +\end{DoxyCode} + + +Here is the call graph for this function: + + +\hypertarget{interface_2class_8c_a292005216c251622a115ea90ff6d36c0}{ +\index{interface/class.c@{interface/class.c}!classDelete@{classDelete}} +\index{classDelete@{classDelete}!interface/class.c@{interface/class.c}} +\subsubsection[{classDelete}]{\setlength{\rightskip}{0pt plus 5cm}void classDelete ( +\begin{DoxyParamCaption} +\item[{void $\ast$$\ast$}]{object} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8c_a292005216c251622a115ea90ff6d36c0} + + +Definition at line 33 of file class.c. + + +\begin{DoxyCode} +{ + CALL(*object, Class, dtor); + + free(*object - sizeof(void*)); + *object = NULL; +} +\end{DoxyCode} +\hypertarget{interface_2class_8c_a841e4a0f9bceb16fda262302d038bfa0}{ +\index{interface/class.c@{interface/class.c}!classNew@{classNew}} +\index{classNew@{classNew}!interface/class.c@{interface/class.c}} +\subsubsection[{classNew}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ classNew ( +\begin{DoxyParamCaption} +\item[{{\bf class\_\-ptr}}]{class, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8c_a841e4a0f9bceb16fda262302d038bfa0} + + +Definition at line 15 of file class.c. + + +\begin{DoxyCode} +{ + void * object = calloc(1, class->object_size + sizeof(void*)); + va_list params; + + if (class->init) class->init(); + + * (class_ptr *)object = class; + object += sizeof(void*); + + va_start(params, class); + CALL(object, Class, ctor, ¶ms); + va_end(params); + + return object; +} +\end{DoxyCode} diff --git a/docs/latex/interface_2class_8c__incl.dot b/docs/latex/interface_2class_8c__incl.dot new file mode 100644 index 0000000..f87456f --- /dev/null +++ b/docs/latex/interface_2class_8c__incl.dot @@ -0,0 +1,17 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/interface/class.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="assert.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/interface_2class_8c__incl.md5 b/docs/latex/interface_2class_8c__incl.md5 new file mode 100644 index 0000000..896c016 --- /dev/null +++ b/docs/latex/interface_2class_8c__incl.md5 @@ -0,0 +1 @@ +d385f264a2ce6003971df8559889df1b \ No newline at end of file diff --git a/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.dot b/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.dot new file mode 100644 index 0000000..76973c7 --- /dev/null +++ b/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="classClone",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class_getClass",height=0.2,width=0.4,color="black",URL="$class_8h.html#a1f382a42de272d5cc4d6bb5b17db6ede"]; +} diff --git a/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 b/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 new file mode 100644 index 0000000..dda6e21 --- /dev/null +++ b/docs/latex/interface_2class_8c_ada46f0179448063a30f6f219270bf1e0_cgraph.md5 @@ -0,0 +1 @@ +3c009b311a9cda1bd0f95e0be210ba41 \ No newline at end of file diff --git a/docs/latex/interface_2class_8h.tex b/docs/latex/interface_2class_8h.tex new file mode 100644 index 0000000..e076c94 --- /dev/null +++ b/docs/latex/interface_2class_8h.tex @@ -0,0 +1,204 @@ +\hypertarget{interface_2class_8h}{ +\section{include/interface/class.h File Reference} +\label{interface_2class_8h}\index{include/interface/class.h@{include/interface/class.h}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface.h\char`\"{}}\par +Include dependency graph for class.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structi__Class}{i\_\-Class} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{interface_2class_8h_a323cb9a9088662b03bc37a47403e4212}{new}(\hyperlink{structclass}{class},...)~classNew(\_\-\#\#\hyperlink{structclass}{class}, \#\#\_\-\_\-VA\_\-ARGS\_\-\_\-) +\item +\#define \hyperlink{interface_2class_8h_adb9a02719a59dd833c56e1a33ded59db}{delete}(object)~classDelete((void $\ast$$\ast$)(object)) +\item +\#define \hyperlink{interface_2class_8h_a864061d3c9c7f123efb63649bb0fade7}{clone}(object)~classClone((void $\ast$)(object)) +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef void($\ast$ \hyperlink{interface_2class_8h_a207fe2c25aae0b91e9df60b0ece4217e}{fptr\_\-ctor} )(void $\ast$, va\_\-list $\ast$) +\item +typedef void($\ast$ \hyperlink{interface_2class_8h_a59366634eecbace7ae9c8c5e65199c91}{fptr\_\-dtor} )(void $\ast$) +\item +typedef void($\ast$ \hyperlink{interface_2class_8h_a6d852b3640eeb6ef8a3d776b87736392}{fptr\_\-clone} )(void $\ast$, void $\ast$const) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void $\ast$ \hyperlink{interface_2class_8h_adebe9bba79f753f5c44409a2ff664299}{classNew} (\hyperlink{structclass}{class\_\-ptr},...) +\item +void \hyperlink{interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878}{classDelete} (void $\ast$$\ast$) +\item +void $\ast$ \hyperlink{interface_2class_8h_a51116659174ec46c5a04721d31631053}{classClone} (void $\ast$) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{interface_2class_8h_a864061d3c9c7f123efb63649bb0fade7}{ +\index{interface/class.h@{interface/class.h}!clone@{clone}} +\index{clone@{clone}!interface/class.h@{interface/class.h}} +\subsubsection[{clone}]{\setlength{\rightskip}{0pt plus 5cm}\#define clone( +\begin{DoxyParamCaption} +\item[{}]{object} +\end{DoxyParamCaption} +)~classClone((void $\ast$)(object))}} +\label{interface_2class_8h_a864061d3c9c7f123efb63649bb0fade7} + + +Definition at line 28 of file class.h. + +\hypertarget{interface_2class_8h_adb9a02719a59dd833c56e1a33ded59db}{ +\index{interface/class.h@{interface/class.h}!delete@{delete}} +\index{delete@{delete}!interface/class.h@{interface/class.h}} +\subsubsection[{delete}]{\setlength{\rightskip}{0pt plus 5cm}\#define delete( +\begin{DoxyParamCaption} +\item[{}]{object} +\end{DoxyParamCaption} +)~classDelete((void $\ast$$\ast$)(object))}} +\label{interface_2class_8h_adb9a02719a59dd833c56e1a33ded59db} + + +Definition at line 27 of file class.h. + +\hypertarget{interface_2class_8h_a323cb9a9088662b03bc37a47403e4212}{ +\index{interface/class.h@{interface/class.h}!new@{new}} +\index{new@{new}!interface/class.h@{interface/class.h}} +\subsubsection[{new}]{\setlength{\rightskip}{0pt plus 5cm}\#define new( +\begin{DoxyParamCaption} +\item[{}]{{\bf class}, } +\item[{}]{...} +\end{DoxyParamCaption} +)~classNew(\_\-\#\#{\bf class}, \#\#\_\-\_\-VA\_\-ARGS\_\-\_\-)}} +\label{interface_2class_8h_a323cb9a9088662b03bc37a47403e4212} + + +Definition at line 26 of file class.h. + + + +\subsection{Typedef Documentation} +\hypertarget{interface_2class_8h_a6d852b3640eeb6ef8a3d776b87736392}{ +\index{interface/class.h@{interface/class.h}!fptr\_\-clone@{fptr\_\-clone}} +\index{fptr\_\-clone@{fptr\_\-clone}!interface/class.h@{interface/class.h}} +\subsubsection[{fptr\_\-clone}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf fptr\_\-clone})(void $\ast$, void $\ast$const)}} +\label{interface_2class_8h_a6d852b3640eeb6ef8a3d776b87736392} + + +Definition at line 11 of file class.h. + +\hypertarget{interface_2class_8h_a207fe2c25aae0b91e9df60b0ece4217e}{ +\index{interface/class.h@{interface/class.h}!fptr\_\-ctor@{fptr\_\-ctor}} +\index{fptr\_\-ctor@{fptr\_\-ctor}!interface/class.h@{interface/class.h}} +\subsubsection[{fptr\_\-ctor}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf fptr\_\-ctor})(void $\ast$, va\_\-list $\ast$)}} +\label{interface_2class_8h_a207fe2c25aae0b91e9df60b0ece4217e} + + +Definition at line 9 of file class.h. + +\hypertarget{interface_2class_8h_a59366634eecbace7ae9c8c5e65199c91}{ +\index{interface/class.h@{interface/class.h}!fptr\_\-dtor@{fptr\_\-dtor}} +\index{fptr\_\-dtor@{fptr\_\-dtor}!interface/class.h@{interface/class.h}} +\subsubsection[{fptr\_\-dtor}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf fptr\_\-dtor})(void $\ast$)}} +\label{interface_2class_8h_a59366634eecbace7ae9c8c5e65199c91} + + +Definition at line 10 of file class.h. + + + +\subsection{Function Documentation} +\hypertarget{interface_2class_8h_a51116659174ec46c5a04721d31631053}{ +\index{interface/class.h@{interface/class.h}!classClone@{classClone}} +\index{classClone@{classClone}!interface/class.h@{interface/class.h}} +\subsubsection[{classClone}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ classClone ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8h_a51116659174ec46c5a04721d31631053} + + +Definition at line 42 of file class.c. + + +\begin{DoxyCode} +{ + class_ptr class = class_getClass(_object); + void * object = calloc(1, class->object_size + sizeof(void*)); + + * (class_ptr *)object = class; + object += sizeof(void*); + +#undef clone + CALL(object, Class, clone, _object); + + return object; +} +\end{DoxyCode} + + +Here is the call graph for this function: + + +\hypertarget{interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878}{ +\index{interface/class.h@{interface/class.h}!classDelete@{classDelete}} +\index{classDelete@{classDelete}!interface/class.h@{interface/class.h}} +\subsubsection[{classDelete}]{\setlength{\rightskip}{0pt plus 5cm}void classDelete ( +\begin{DoxyParamCaption} +\item[{void $\ast$$\ast$}]{} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8h_ac064b1caf75bc6c8b1a4371748d55878} + + +Definition at line 33 of file class.c. + + +\begin{DoxyCode} +{ + CALL(*object, Class, dtor); + + free(*object - sizeof(void*)); + *object = NULL; +} +\end{DoxyCode} +\hypertarget{interface_2class_8h_adebe9bba79f753f5c44409a2ff664299}{ +\index{interface/class.h@{interface/class.h}!classNew@{classNew}} +\index{classNew@{classNew}!interface/class.h@{interface/class.h}} +\subsubsection[{classNew}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ classNew ( +\begin{DoxyParamCaption} +\item[{{\bf class\_\-ptr}}]{, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{interface_2class_8h_adebe9bba79f753f5c44409a2ff664299} + + +Definition at line 15 of file class.c. + + +\begin{DoxyCode} +{ + void * object = calloc(1, class->object_size + sizeof(void*)); + va_list params; + + if (class->init) class->init(); + + * (class_ptr *)object = class; + object += sizeof(void*); + + va_start(params, class); + CALL(object, Class, ctor, ¶ms); + va_end(params); + + return object; +} +\end{DoxyCode} diff --git a/docs/latex/interface_2class_8h__dep__incl.dot b/docs/latex/interface_2class_8h__dep__incl.dot new file mode 100644 index 0000000..5fe300a --- /dev/null +++ b/docs/latex/interface_2class_8h__dep__incl.dot @@ -0,0 +1,8 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface/class.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node1 [dir=back,color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/interface_2class_8h__dep__incl.md5 b/docs/latex/interface_2class_8h__dep__incl.md5 new file mode 100644 index 0000000..f1ed3d2 --- /dev/null +++ b/docs/latex/interface_2class_8h__dep__incl.md5 @@ -0,0 +1 @@ +465c0b34ebf6d6763ab90d2d446b72ab \ No newline at end of file diff --git a/docs/latex/interface_2class_8h__incl.dot b/docs/latex/interface_2class_8h__incl.dot new file mode 100644 index 0000000..05495c4 --- /dev/null +++ b/docs/latex/interface_2class_8h__incl.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface/class.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node1 [color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="interface.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/interface_2class_8h__incl.md5 b/docs/latex/interface_2class_8h__incl.md5 new file mode 100644 index 0000000..9ba9cde --- /dev/null +++ b/docs/latex/interface_2class_8h__incl.md5 @@ -0,0 +1 @@ +6b58762b248da531ad8d2946e11b7f00 \ No newline at end of file diff --git a/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.dot b/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.dot new file mode 100644 index 0000000..76973c7 --- /dev/null +++ b/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="classClone",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class_getClass",height=0.2,width=0.4,color="black",URL="$class_8h.html#a1f382a42de272d5cc4d6bb5b17db6ede"]; +} diff --git a/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 b/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 new file mode 100644 index 0000000..dda6e21 --- /dev/null +++ b/docs/latex/interface_2class_8h_a51116659174ec46c5a04721d31631053_cgraph.md5 @@ -0,0 +1 @@ +3c009b311a9cda1bd0f95e0be210ba41 \ No newline at end of file diff --git a/docs/latex/interface_2logger_8c.tex b/docs/latex/interface_2logger_8c.tex new file mode 100644 index 0000000..511a62f --- /dev/null +++ b/docs/latex/interface_2logger_8c.tex @@ -0,0 +1,64 @@ +\hypertarget{interface_2logger_8c}{ +\section{src/interface/logger.c File Reference} +\label{interface_2logger_8c}\index{src/interface/logger.c@{src/interface/logger.c}} +} +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for logger.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f}{loggerLog} (void $\ast$\_\-object, \hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level} level, const char $\ast$const fmt,...) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f}{ +\index{interface/logger.c@{interface/logger.c}!loggerLog@{loggerLog}} +\index{loggerLog@{loggerLog}!interface/logger.c@{interface/logger.c}} +\subsubsection[{loggerLog}]{\setlength{\rightskip}{0pt plus 5cm}void loggerLog ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{\_\-object, } +\item[{{\bf logger\_\-level}}]{level, } +\item[{const char $\ast$const}]{fmt, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f} + + +Definition at line 13 of file logger.c. + + +\begin{DoxyCode} + { + Logger object = _object; + + if (level >= object->min_level) { + char * msg = NULL; + size_t msg_size = 0; + va_list params; + + va_start(params, fmt); + msg_size = vsnprintf(msg, msg_size, fmt, params); + va_end(params); + + msg = malloc(msg_size + 1); + + va_start(params, fmt); + vsnprintf(msg, msg_size + 1, fmt, params); + va_end(params); + + CALL(_object, Logger, log, level, msg); + + free(msg); + } +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + diff --git a/docs/latex/interface_2logger_8c__incl.dot b/docs/latex/interface_2logger_8c__incl.dot new file mode 100644 index 0000000..59b6db9 --- /dev/null +++ b/docs/latex/interface_2logger_8c__incl.dot @@ -0,0 +1,15 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/interface/logger.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/interface_2logger_8c__incl.md5 b/docs/latex/interface_2logger_8c__incl.md5 new file mode 100644 index 0000000..6387ae2 --- /dev/null +++ b/docs/latex/interface_2logger_8c__incl.md5 @@ -0,0 +1 @@ +50e0ae68c02b64d0c740c30cb412ba48 \ No newline at end of file diff --git a/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.dot b/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.dot new file mode 100644 index 0000000..38d4890 --- /dev/null +++ b/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.dot @@ -0,0 +1,18 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="loggerLog",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="serverRun",height=0.2,width=0.4,color="black",URL="$run_8c.html#a67a4d9073b80d8ae1459fb11ddd23675"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; + Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="socketAccept",height=0.2,width=0.4,color="black",URL="$accept_8c.html#a46aa6b495ccf752e844f93bf46c9edd6"]; + Node1 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="socketConnect",height=0.2,width=0.4,color="black",URL="$connect_8c.html#adbfc4792c437102f20e2c86c4ee8581b"]; + Node1 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="socketListen",height=0.2,width=0.4,color="black",URL="$listen_8c.html#a757c220e9371523ef55b1137a1efed57"]; +} diff --git a/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 b/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 new file mode 100644 index 0000000..08c4b62 --- /dev/null +++ b/docs/latex/interface_2logger_8c_a9053743a944f1faef3866efaa52d3c7f_icgraph.md5 @@ -0,0 +1 @@ +d95cb4c57c90bfe358449d670a3395c0 \ No newline at end of file diff --git a/docs/latex/interface_2logger_8h.tex b/docs/latex/interface_2logger_8h.tex new file mode 100644 index 0000000..b178727 --- /dev/null +++ b/docs/latex/interface_2logger_8h.tex @@ -0,0 +1,86 @@ +\hypertarget{interface_2logger_8h}{ +\section{include/interface/logger.h File Reference} +\label{interface_2logger_8h}\index{include/interface/logger.h@{include/interface/logger.h}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}interface.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +Include dependency graph for logger.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structi__Logger}{i\_\-Logger} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef void($\ast$ \hyperlink{interface_2logger_8h_a4dcd041363da34329e1c9442c98a273e}{fptr\_\-log} )(void $\ast$, \hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level}, const char $\ast$const) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e}{loggerLog} (void $\ast$, \hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level}, const char $\ast$const,...) +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\hypertarget{interface_2logger_8h_a4dcd041363da34329e1c9442c98a273e}{ +\index{interface/logger.h@{interface/logger.h}!fptr\_\-log@{fptr\_\-log}} +\index{fptr\_\-log@{fptr\_\-log}!interface/logger.h@{interface/logger.h}} +\subsubsection[{fptr\_\-log}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf fptr\_\-log})(void $\ast$, {\bf logger\_\-level}, const char $\ast$const)}} +\label{interface_2logger_8h_a4dcd041363da34329e1c9442c98a273e} + + +Definition at line 9 of file logger.h. + + + +\subsection{Function Documentation} +\hypertarget{interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e}{ +\index{interface/logger.h@{interface/logger.h}!loggerLog@{loggerLog}} +\index{loggerLog@{loggerLog}!interface/logger.h@{interface/logger.h}} +\subsubsection[{loggerLog}]{\setlength{\rightskip}{0pt plus 5cm}void loggerLog ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{, } +\item[{{\bf logger\_\-level}}]{, } +\item[{const char $\ast$}]{const, } +\item[{}]{...} +\end{DoxyParamCaption} +)}} +\label{interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e} + + +Definition at line 13 of file logger.c. + + +\begin{DoxyCode} + { + Logger object = _object; + + if (level >= object->min_level) { + char * msg = NULL; + size_t msg_size = 0; + va_list params; + + va_start(params, fmt); + msg_size = vsnprintf(msg, msg_size, fmt, params); + va_end(params); + + msg = malloc(msg_size + 1); + + va_start(params, fmt); + vsnprintf(msg, msg_size + 1, fmt, params); + va_end(params); + + CALL(_object, Logger, log, level, msg); + + free(msg); + } +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + diff --git a/docs/latex/interface_2logger_8h__dep__incl.dot b/docs/latex/interface_2logger_8h__dep__incl.dot new file mode 100644 index 0000000..ff75ee5 --- /dev/null +++ b/docs/latex/interface_2logger_8h__dep__incl.dot @@ -0,0 +1,8 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface/logger.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node1 [dir=back,color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/interface_2logger_8h__dep__incl.md5 b/docs/latex/interface_2logger_8h__dep__incl.md5 new file mode 100644 index 0000000..10bc0cd --- /dev/null +++ b/docs/latex/interface_2logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +f38e06bc2f319d8a8d7e0aa9731641cb \ No newline at end of file diff --git a/docs/latex/interface_2logger_8h__incl.dot b/docs/latex/interface_2logger_8h__incl.dot new file mode 100644 index 0000000..b2afc04 --- /dev/null +++ b/docs/latex/interface_2logger_8h__incl.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface/logger.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="interface.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node1 [color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/interface_2logger_8h__incl.md5 b/docs/latex/interface_2logger_8h__incl.md5 new file mode 100644 index 0000000..137e595 --- /dev/null +++ b/docs/latex/interface_2logger_8h__incl.md5 @@ -0,0 +1 @@ +2bc981d947623d8518e26b04bf2f1202 \ No newline at end of file diff --git a/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.dot b/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.dot new file mode 100644 index 0000000..38d4890 --- /dev/null +++ b/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.dot @@ -0,0 +1,18 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="loggerLog",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="serverRun",height=0.2,width=0.4,color="black",URL="$run_8c.html#a67a4d9073b80d8ae1459fb11ddd23675"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; + Node1 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="socketAccept",height=0.2,width=0.4,color="black",URL="$accept_8c.html#a46aa6b495ccf752e844f93bf46c9edd6"]; + Node1 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="socketConnect",height=0.2,width=0.4,color="black",URL="$connect_8c.html#adbfc4792c437102f20e2c86c4ee8581b"]; + Node1 -> Node6 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="socketListen",height=0.2,width=0.4,color="black",URL="$listen_8c.html#a757c220e9371523ef55b1137a1efed57"]; +} diff --git a/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 b/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 new file mode 100644 index 0000000..08c4b62 --- /dev/null +++ b/docs/latex/interface_2logger_8h_ae9f8662ec8b300dcfb5064906937553e_icgraph.md5 @@ -0,0 +1 @@ +d95cb4c57c90bfe358449d670a3395c0 \ No newline at end of file diff --git a/docs/latex/interface_8c.tex b/docs/latex/interface_8c.tex new file mode 100644 index 0000000..ddf1339 --- /dev/null +++ b/docs/latex/interface_8c.tex @@ -0,0 +1,69 @@ +\hypertarget{interface_8c}{ +\section{src/interface.c File Reference} +\label{interface_8c}\index{src/interface.c@{src/interface.c}} +} +{\ttfamily \#include $<$sys/types.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include \char`\"{}interface.h\char`\"{}}\par +Include dependency graph for interface.c: +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{interface_8c_aa8cecfc5c5c054d2875c03e77b7be15d}{TRUE}~1 +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} $\ast$ \hyperlink{interface_8c_a3592671f742071d6b215f46ba58f53ab}{interfaceGet} (\hyperlink{structiface__impl}{iface\_\-impl\_\-ptr} \hyperlink{structiface__impl}{iface\_\-impl}, const \hyperlink{structinterface}{iface\_\-ptr} \_\-iface) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{interface_8c_aa8cecfc5c5c054d2875c03e77b7be15d}{ +\index{interface.c@{interface.c}!TRUE@{TRUE}} +\index{TRUE@{TRUE}!interface.c@{interface.c}} +\subsubsection[{TRUE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TRUE~1}} +\label{interface_8c_aa8cecfc5c5c054d2875c03e77b7be15d} + + +Definition at line 7 of file interface.c. + + + +\subsection{Function Documentation} +\hypertarget{interface_8c_a3592671f742071d6b215f46ba58f53ab}{ +\index{interface.c@{interface.c}!interfaceGet@{interfaceGet}} +\index{interfaceGet@{interfaceGet}!interface.c@{interface.c}} +\subsubsection[{interfaceGet}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ interfaceGet ( +\begin{DoxyParamCaption} +\item[{{\bf iface\_\-impl\_\-ptr}}]{iface\_\-impl, } +\item[{const {\bf iface\_\-ptr}}]{\_\-iface} +\end{DoxyParamCaption} +)\hspace{0.3cm}{\ttfamily \mbox{[}read\mbox{]}}}} +\label{interface_8c_a3592671f742071d6b215f46ba58f53ab} +this one is important in selector functions to get the correct interface implementation of a class. + +Definition at line 25 of file interface.c. + + +\begin{DoxyCode} +{ + const iface_ptr * iface = &_iface; + void * dummy; + + if (! iface_impl->simpl) { + qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), c + omp); + iface_impl->simpl=TRUE; + } + + dummy = bsearch( + &iface, + iface_impl->impl, + iface_impl->nimpl, + sizeof(iface_ptr), + comp); + + return dummy? *(struct interface **)dummy : dummy; +} +\end{DoxyCode} diff --git a/docs/latex/interface_8c__incl.dot b/docs/latex/interface_8c__incl.dot new file mode 100644 index 0000000..16295a7 --- /dev/null +++ b/docs/latex/interface_8c__incl.dot @@ -0,0 +1,13 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/interface.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/interface_8c__incl.md5 b/docs/latex/interface_8c__incl.md5 new file mode 100644 index 0000000..110d011 --- /dev/null +++ b/docs/latex/interface_8c__incl.md5 @@ -0,0 +1 @@ +a33e8cb0390b141deafdb3a8fb923990 \ No newline at end of file diff --git a/docs/latex/interface_8h.tex b/docs/latex/interface_8h.tex new file mode 100644 index 0000000..3397efa --- /dev/null +++ b/docs/latex/interface_8h.tex @@ -0,0 +1,195 @@ +\hypertarget{interface_8h}{ +\section{include/interface.h File Reference} +\label{interface_8h}\index{include/interface.h@{include/interface.h}} +} +{\ttfamily \#include $<$sys/types.h$>$}\par +Include dependency graph for interface.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} +\item +struct \hyperlink{structiface__impl}{iface\_\-impl} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{interface_8h_ad620a89e939b586d6a025cf342da8e55}{MAX\_\-IFACE}~32 +\item +\#define \hyperlink{interface_8h_a02255665665c91d905ec32d00d9a4a85}{IFACE}(name)~((const struct i\_\-\#\#name const$\ast$)\&i\_\-\#\#name\#\#\_\-impl) +\item +\#define \hyperlink{interface_8h_a446cc7d7282f8a0b8e62a371671ea605}{INIT\_\-IFACE}(name,...)~static const struct i\_\-\#\#name i\_\-\#\#name\#\#\_\-impl = \{\&i\_\-\#\#name,\_\-\_\-VA\_\-ARGS\_\-\_\-\} +\item +\#define \hyperlink{interface_8h_a9dda4d034150e3159927f83d9d15d840}{NUMARGS}(...)~(sizeof((const void$\ast$\mbox{[}$\,$\mbox{]})\{\_\-\_\-VA\_\-ARGS\_\-\_\-\})/sizeof(void$\ast$)) +\item +\#define \hyperlink{interface_8h_a6e8015282e5aac5747daff5bb71d8601}{INIT\_\-IMPL}(...)~\{NUMARGS(\_\-\_\-VA\_\-ARGS\_\-\_\-), 0, \{\_\-\_\-VA\_\-ARGS\_\-\_\-\}\} +\item +\#define \hyperlink{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5}{CREATE\_\-IMPL}(...)~static struct \hyperlink{structiface__impl}{iface\_\-impl} \hyperlink{structiface__impl}{iface\_\-impl} = INIT\_\-IMPL(\_\-\_\-VA\_\-ARGS\_\-\_\-) +\item +\#define \hyperlink{interface_8h_a12243bdd01e5366fecc15f395f09221a}{METHOD\_\-GET}(iface, method)~(iface-\/$>$method) +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \hyperlink{structinterface}{interface} $\ast$ \hyperlink{interface_8h_afaa63cd951f41a496111e88acf36dc40}{iface\_\-ptr} +\item +typedef struct \hyperlink{structiface__impl}{iface\_\-impl} $\ast$ \hyperlink{interface_8h_a998b025a5015049fd824424d6983f2df}{iface\_\-impl\_\-ptr} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} $\ast$ \hyperlink{interface_8h_ae4bb16dde691d2513d444ce772f48718}{interfaceGet} (\hyperlink{structiface__impl}{iface\_\-impl\_\-ptr}, const \hyperlink{structinterface}{iface\_\-ptr}) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5}{ +\index{interface.h@{interface.h}!CREATE\_\-IMPL@{CREATE\_\-IMPL}} +\index{CREATE\_\-IMPL@{CREATE\_\-IMPL}!interface.h@{interface.h}} +\subsubsection[{CREATE\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define CREATE\_\-IMPL( +\begin{DoxyParamCaption} +\item[{}]{...} +\end{DoxyParamCaption} +)~static struct {\bf iface\_\-impl} {\bf iface\_\-impl} = INIT\_\-IMPL(\_\-\_\-VA\_\-ARGS\_\-\_\-)}} +\label{interface_8h_a855b98f3119c2d64e7dd4c2c910bd5b5} + + +Definition at line 16 of file interface.h. + +\hypertarget{interface_8h_a02255665665c91d905ec32d00d9a4a85}{ +\index{interface.h@{interface.h}!IFACE@{IFACE}} +\index{IFACE@{IFACE}!interface.h@{interface.h}} +\subsubsection[{IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define IFACE( +\begin{DoxyParamCaption} +\item[{}]{name} +\end{DoxyParamCaption} +)~((const struct i\_\-\#\#name const$\ast$)\&i\_\-\#\#name\#\#\_\-impl)}} +\label{interface_8h_a02255665665c91d905ec32d00d9a4a85} + + +Definition at line 8 of file interface.h. + +\hypertarget{interface_8h_a446cc7d7282f8a0b8e62a371671ea605}{ +\index{interface.h@{interface.h}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!interface.h@{interface.h}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define INIT\_\-IFACE( +\begin{DoxyParamCaption} +\item[{}]{name, } +\item[{}]{...} +\end{DoxyParamCaption} +)~static const struct i\_\-\#\#name i\_\-\#\#name\#\#\_\-impl = \{\&i\_\-\#\#name,\_\-\_\-VA\_\-ARGS\_\-\_\-\}}} +\label{interface_8h_a446cc7d7282f8a0b8e62a371671ea605} + + +Definition at line 10 of file interface.h. + +\hypertarget{interface_8h_a6e8015282e5aac5747daff5bb71d8601}{ +\index{interface.h@{interface.h}!INIT\_\-IMPL@{INIT\_\-IMPL}} +\index{INIT\_\-IMPL@{INIT\_\-IMPL}!interface.h@{interface.h}} +\subsubsection[{INIT\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define INIT\_\-IMPL( +\begin{DoxyParamCaption} +\item[{}]{...} +\end{DoxyParamCaption} +)~\{NUMARGS(\_\-\_\-VA\_\-ARGS\_\-\_\-), 0, \{\_\-\_\-VA\_\-ARGS\_\-\_\-\}\}}} +\label{interface_8h_a6e8015282e5aac5747daff5bb71d8601} + + +Definition at line 15 of file interface.h. + +\hypertarget{interface_8h_ad620a89e939b586d6a025cf342da8e55}{ +\index{interface.h@{interface.h}!MAX\_\-IFACE@{MAX\_\-IFACE}} +\index{MAX\_\-IFACE@{MAX\_\-IFACE}!interface.h@{interface.h}} +\subsubsection[{MAX\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}\#define MAX\_\-IFACE~32}} +\label{interface_8h_ad620a89e939b586d6a025cf342da8e55} + + +Definition at line 6 of file interface.h. + +\hypertarget{interface_8h_a12243bdd01e5366fecc15f395f09221a}{ +\index{interface.h@{interface.h}!METHOD\_\-GET@{METHOD\_\-GET}} +\index{METHOD\_\-GET@{METHOD\_\-GET}!interface.h@{interface.h}} +\subsubsection[{METHOD\_\-GET}]{\setlength{\rightskip}{0pt plus 5cm}\#define METHOD\_\-GET( +\begin{DoxyParamCaption} +\item[{}]{iface, } +\item[{}]{method} +\end{DoxyParamCaption} +)~(iface-\/$>$method)}} +\label{interface_8h_a12243bdd01e5366fecc15f395f09221a} + + +Definition at line 19 of file interface.h. + +\hypertarget{interface_8h_a9dda4d034150e3159927f83d9d15d840}{ +\index{interface.h@{interface.h}!NUMARGS@{NUMARGS}} +\index{NUMARGS@{NUMARGS}!interface.h@{interface.h}} +\subsubsection[{NUMARGS}]{\setlength{\rightskip}{0pt plus 5cm}\#define NUMARGS( +\begin{DoxyParamCaption} +\item[{}]{...} +\end{DoxyParamCaption} +)~(sizeof((const void$\ast$\mbox{[}$\,$\mbox{]})\{\_\-\_\-VA\_\-ARGS\_\-\_\-\})/sizeof(void$\ast$))}} +\label{interface_8h_a9dda4d034150e3159927f83d9d15d840} + + +Definition at line 13 of file interface.h. + + + +\subsection{Typedef Documentation} +\hypertarget{interface_8h_a998b025a5015049fd824424d6983f2df}{ +\index{interface.h@{interface.h}!iface\_\-impl\_\-ptr@{iface\_\-impl\_\-ptr}} +\index{iface\_\-impl\_\-ptr@{iface\_\-impl\_\-ptr}!interface.h@{interface.h}} +\subsubsection[{iface\_\-impl\_\-ptr}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf iface\_\-impl}$\ast$ {\bf iface\_\-impl\_\-ptr}}} +\label{interface_8h_a998b025a5015049fd824424d6983f2df} + + +Definition at line 33 of file interface.h. + +\hypertarget{interface_8h_afaa63cd951f41a496111e88acf36dc40}{ +\index{interface.h@{interface.h}!iface\_\-ptr@{iface\_\-ptr}} +\index{iface\_\-ptr@{iface\_\-ptr}!interface.h@{interface.h}} +\subsubsection[{iface\_\-ptr}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf interface}$\ast$ {\bf iface\_\-ptr}}} +\label{interface_8h_afaa63cd951f41a496111e88acf36dc40} + + +Definition at line 26 of file interface.h. + + + +\subsection{Function Documentation} +\hypertarget{interface_8h_ae4bb16dde691d2513d444ce772f48718}{ +\index{interface.h@{interface.h}!interfaceGet@{interfaceGet}} +\index{interfaceGet@{interfaceGet}!interface.h@{interface.h}} +\subsubsection[{interfaceGet}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ interfaceGet ( +\begin{DoxyParamCaption} +\item[{{\bf iface\_\-impl\_\-ptr}}]{iface\_\-impl, } +\item[{const {\bf iface\_\-ptr}}]{\_\-iface} +\end{DoxyParamCaption} +)\hspace{0.3cm}{\ttfamily \mbox{[}read\mbox{]}}}} +\label{interface_8h_ae4bb16dde691d2513d444ce772f48718} +this one is important in selector functions to get the correct interface implementation of a class. + +Definition at line 25 of file interface.c. + + +\begin{DoxyCode} +{ + const iface_ptr * iface = &_iface; + void * dummy; + + if (! iface_impl->simpl) { + qsort((void**)(iface_impl->impl), iface_impl->nimpl, sizeof(iface_ptr), c + omp); + iface_impl->simpl=TRUE; + } + + dummy = bsearch( + &iface, + iface_impl->impl, + iface_impl->nimpl, + sizeof(iface_ptr), + comp); + + return dummy? *(struct interface **)dummy : dummy; +} +\end{DoxyCode} diff --git a/docs/latex/interface_8h__dep__incl.dot b/docs/latex/interface_8h__dep__incl.dot new file mode 100644 index 0000000..9290352 --- /dev/null +++ b/docs/latex/interface_8h__dep__incl.dot @@ -0,0 +1,18 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="include/class.h",height=0.2,width=0.4,color="black",URL="$class_8h.html"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="include/logger.h",height=0.2,width=0.4,color="black",URL="$logger_8h.html"]; + Node3 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="include/socket.h",height=0.2,width=0.4,color="black",URL="$socket_8h.html"]; + Node4 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="include/server.h",height=0.2,width=0.4,color="black",URL="$server_8h.html"]; + Node3 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 -> Node5 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 -> Node4 [dir=back,color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/interface_8h__dep__incl.md5 b/docs/latex/interface_8h__dep__incl.md5 new file mode 100644 index 0000000..835d87e --- /dev/null +++ b/docs/latex/interface_8h__dep__incl.md5 @@ -0,0 +1 @@ +48514c60a17f6133e5522a18f6291a6a \ No newline at end of file diff --git a/docs/latex/interface_8h__incl.dot b/docs/latex/interface_8h__incl.dot new file mode 100644 index 0000000..c5a8345 --- /dev/null +++ b/docs/latex/interface_8h__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/interface_8h__incl.md5 b/docs/latex/interface_8h__incl.md5 new file mode 100644 index 0000000..cca5a90 --- /dev/null +++ b/docs/latex/interface_8h__incl.md5 @@ -0,0 +1 @@ +e9dd42938c2ede4b7449aa7db0132d54 \ No newline at end of file diff --git a/docs/latex/listen_8c.tex b/docs/latex/listen_8c.tex new file mode 100644 index 0000000..5aea047 --- /dev/null +++ b/docs/latex/listen_8c.tex @@ -0,0 +1,64 @@ +\hypertarget{listen_8c}{ +\section{src/socket/listen.c File Reference} +\label{listen_8c}\index{src/socket/listen.c@{src/socket/listen.c}} +} +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$errno.h$>$}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for listen.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{listen_8c_a757c220e9371523ef55b1137a1efed57}{socketListen} (\hyperlink{structSock}{Sock} this, int backlog) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{listen_8c_a757c220e9371523ef55b1137a1efed57}{ +\index{listen.c@{listen.c}!socketListen@{socketListen}} +\index{socketListen@{socketListen}!listen.c@{listen.c}} +\subsubsection[{socketListen}]{\setlength{\rightskip}{0pt plus 5cm}void socketListen ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{int}]{backlog} +\end{DoxyParamCaption} +)}} +\label{listen_8c_a757c220e9371523ef55b1137a1efed57} + + +Definition at line 10 of file listen.c. + + +\begin{DoxyCode} +{ + (this->addr).sin_family = AF_INET; /* Internet address family + */ + (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface * + / + (this->addr).sin_port = htons(this->port); /* Local port */ + + /* Bind to the local address */ + if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this-> + addr))) { + loggerLog(this->log, LOGGER_CRIT, + "error binding socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } + + /* Mark the socket so it will listen for incoming connections */ + if (-1 == listen(this->handle, backlog)) { + loggerLog(this->log, LOGGER_CRIT, + "error binding socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + diff --git a/docs/latex/listen_8c__incl.dot b/docs/latex/listen_8c__incl.dot new file mode 100644 index 0000000..418b9a6 --- /dev/null +++ b/docs/latex/listen_8c__incl.dot @@ -0,0 +1,17 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/socket/listen.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="errno.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/listen_8c__incl.md5 b/docs/latex/listen_8c__incl.md5 new file mode 100644 index 0000000..30400f8 --- /dev/null +++ b/docs/latex/listen_8c__incl.md5 @@ -0,0 +1 @@ +5ca6e39d43d7d8ae2d18033afbef3889 \ No newline at end of file diff --git a/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.dot b/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.dot new file mode 100644 index 0000000..457e774 --- /dev/null +++ b/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketListen",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..8d1cc7c --- /dev/null +++ b/docs/latex/listen_8c_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +9119991752c8de97a1c44af5d17e244c \ No newline at end of file diff --git a/docs/latex/logger_8c.tex b/docs/latex/logger_8c.tex new file mode 100644 index 0000000..b3b6c31 --- /dev/null +++ b/docs/latex/logger_8c.tex @@ -0,0 +1,72 @@ +\hypertarget{logger_8c}{ +\section{src/logger.c File Reference} +\label{logger_8c}\index{src/logger.c@{src/logger.c}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for logger.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{logger_8c_a4dd368b7bead6fa0805e91405d90f786}{INIT\_\-IFACE} (Class, ctor, dtor, NULL) +\item +\hyperlink{logger_8c_a010ac92393088a64e3dbe6cd301e6cd0}{CREATE\_\-CLASS} (\hyperlink{structLogger}{Logger}, NULL, IFACE(Class)) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const char $\ast$const \hyperlink{logger_8c_a6f4ba515aab77f23138ce05b414ee616}{logger\_\-level\_\-str} \mbox{[}$\,$\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{logger_8c_a010ac92393088a64e3dbe6cd301e6cd0}{ +\index{logger.c@{logger.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!logger.c@{logger.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf Logger}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{} +\end{DoxyParamCaption} +)}} +\label{logger_8c_a010ac92393088a64e3dbe6cd301e6cd0} +\hypertarget{logger_8c_a4dd368b7bead6fa0805e91405d90f786}{ +\index{logger.c@{logger.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!logger.c@{logger.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{NULL}]{} +\end{DoxyParamCaption} +)}} +\label{logger_8c_a4dd368b7bead6fa0805e91405d90f786} + + +\subsection{Variable Documentation} +\hypertarget{logger_8c_a6f4ba515aab77f23138ce05b414ee616}{ +\index{logger.c@{logger.c}!logger\_\-level\_\-str@{logger\_\-level\_\-str}} +\index{logger\_\-level\_\-str@{logger\_\-level\_\-str}!logger.c@{logger.c}} +\subsubsection[{logger\_\-level\_\-str}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ const {\bf logger\_\-level\_\-str}\mbox{[}$\,$\mbox{]}}} +\label{logger_8c_a6f4ba515aab77f23138ce05b414ee616} +{\bfseries Initial value:} +\begin{DoxyCode} + { + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERR", + "CRIT", + "ALERT", + "EMERG" +} +\end{DoxyCode} + + +Definition at line 9 of file logger.c. + diff --git a/docs/latex/logger_8c__incl.dot b/docs/latex/logger_8c__incl.dot new file mode 100644 index 0000000..00ce7b9 --- /dev/null +++ b/docs/latex/logger_8c__incl.dot @@ -0,0 +1,15 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/logger.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/logger_8c__incl.md5 b/docs/latex/logger_8c__incl.md5 new file mode 100644 index 0000000..af0ff64 --- /dev/null +++ b/docs/latex/logger_8c__incl.md5 @@ -0,0 +1 @@ +d9b74b2f9dad9b5bcc091215c1c9f478 \ No newline at end of file diff --git a/docs/latex/logger_8h.tex b/docs/latex/logger_8h.tex new file mode 100644 index 0000000..4eb30b8 --- /dev/null +++ b/docs/latex/logger_8h.tex @@ -0,0 +1,124 @@ +\hypertarget{logger_8h}{ +\section{include/logger.h File Reference} +\label{logger_8h}\index{include/logger.h@{include/logger.h}} +} +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +Include dependency graph for logger.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structLogger}{Logger} +\item +struct \hyperlink{structLoggerStderr}{LoggerStderr} +\item +struct \hyperlink{structLoggerSyslog}{LoggerSyslog} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef enum \hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level} \hyperlink{logger_8h_a5c4c4dba00ce08b2a3d0a6c7ab8daf92}{logger\_\-level} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level} \{ \par +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea30eb5eac34e7c2406c74fb78d9004f6c}{LOGGER\_\-DEBUG} = 0, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea3a56c2c000665930df74a9ebf9047316}{LOGGER\_\-INFO}, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea8cc2b7c645b647fecb44f2e5a5aa7fa8}{LOGGER\_\-NOTICE}, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea236a2401a6ed3e96611f3a14352082ad}{LOGGER\_\-WARNING}, +\par +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eadea66ab9219dfd6addc90edf08ed96fb}{LOGGER\_\-ERR}, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eaa7d55c7b377d82da77e532aa299eeeb0}{LOGGER\_\-CRIT}, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea55e6111bbd01c0bee4a7ca7373f31bc8}{LOGGER\_\-ALERT}, +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eabbdf8b92875d1e13023c293b21a467ec}{LOGGER\_\-EMERG} + \} +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const char $\ast$const \hyperlink{logger_8h_a6f4ba515aab77f23138ce05b414ee616}{logger\_\-level\_\-str} \mbox{[}$\,$\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\hypertarget{logger_8h_a5c4c4dba00ce08b2a3d0a6c7ab8daf92}{ +\index{logger.h@{logger.h}!logger\_\-level@{logger\_\-level}} +\index{logger\_\-level@{logger\_\-level}!logger.h@{logger.h}} +\subsubsection[{logger\_\-level}]{\setlength{\rightskip}{0pt plus 5cm}typedef enum {\bf logger\_\-level} {\bf logger\_\-level}}} +\label{logger_8h_a5c4c4dba00ce08b2a3d0a6c7ab8daf92} + + +\subsection{Enumeration Type Documentation} +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{ +\index{logger.h@{logger.h}!logger\_\-level@{logger\_\-level}} +\index{logger\_\-level@{logger\_\-level}!logger.h@{logger.h}} +\subsubsection[{logger\_\-level}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf logger\_\-level}}} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e} +\begin{Desc} +\item[Enumerator: ]\par +\begin{description} +\index{LOGGER\_\-DEBUG@{LOGGER\_\-DEBUG}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-DEBUG@{LOGGER\_\-DEBUG}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea30eb5eac34e7c2406c74fb78d9004f6c}{ +LOGGER\_\-DEBUG} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea30eb5eac34e7c2406c74fb78d9004f6c} +}]\index{LOGGER\_\-INFO@{LOGGER\_\-INFO}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-INFO@{LOGGER\_\-INFO}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea3a56c2c000665930df74a9ebf9047316}{ +LOGGER\_\-INFO} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea3a56c2c000665930df74a9ebf9047316} +}]\index{LOGGER\_\-NOTICE@{LOGGER\_\-NOTICE}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-NOTICE@{LOGGER\_\-NOTICE}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea8cc2b7c645b647fecb44f2e5a5aa7fa8}{ +LOGGER\_\-NOTICE} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea8cc2b7c645b647fecb44f2e5a5aa7fa8} +}]\index{LOGGER\_\-WARNING@{LOGGER\_\-WARNING}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-WARNING@{LOGGER\_\-WARNING}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea236a2401a6ed3e96611f3a14352082ad}{ +LOGGER\_\-WARNING} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea236a2401a6ed3e96611f3a14352082ad} +}]\index{LOGGER\_\-ERR@{LOGGER\_\-ERR}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-ERR@{LOGGER\_\-ERR}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eadea66ab9219dfd6addc90edf08ed96fb}{ +LOGGER\_\-ERR} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eadea66ab9219dfd6addc90edf08ed96fb} +}]\index{LOGGER\_\-CRIT@{LOGGER\_\-CRIT}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-CRIT@{LOGGER\_\-CRIT}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eaa7d55c7b377d82da77e532aa299eeeb0}{ +LOGGER\_\-CRIT} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eaa7d55c7b377d82da77e532aa299eeeb0} +}]\index{LOGGER\_\-ALERT@{LOGGER\_\-ALERT}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-ALERT@{LOGGER\_\-ALERT}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea55e6111bbd01c0bee4a7ca7373f31bc8}{ +LOGGER\_\-ALERT} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1ea55e6111bbd01c0bee4a7ca7373f31bc8} +}]\index{LOGGER\_\-EMERG@{LOGGER\_\-EMERG}!logger.h@{logger.h}}\index{logger.h@{logger.h}!LOGGER\_\-EMERG@{LOGGER\_\-EMERG}}\item[{\em +\hypertarget{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eabbdf8b92875d1e13023c293b21a467ec}{ +LOGGER\_\-EMERG} +\label{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1eabbdf8b92875d1e13023c293b21a467ec} +}]\end{description} +\end{Desc} + + + +Definition at line 6 of file logger.h. + + +\begin{DoxyCode} + { + LOGGER_DEBUG=0, + LOGGER_INFO, + LOGGER_NOTICE, + LOGGER_WARNING, + LOGGER_ERR, + LOGGER_CRIT, + LOGGER_ALERT, + LOGGER_EMERG +} logger_level; +\end{DoxyCode} + + +\subsection{Variable Documentation} +\hypertarget{logger_8h_a6f4ba515aab77f23138ce05b414ee616}{ +\index{logger.h@{logger.h}!logger\_\-level\_\-str@{logger\_\-level\_\-str}} +\index{logger\_\-level\_\-str@{logger\_\-level\_\-str}!logger.h@{logger.h}} +\subsubsection[{logger\_\-level\_\-str}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ const {\bf logger\_\-level\_\-str}\mbox{[}$\,$\mbox{]}}} +\label{logger_8h_a6f4ba515aab77f23138ce05b414ee616} + + +Definition at line 9 of file logger.c. + diff --git a/docs/latex/logger_8h__dep__incl.dot b/docs/latex/logger_8h__dep__incl.dot new file mode 100644 index 0000000..04212bd --- /dev/null +++ b/docs/latex/logger_8h__dep__incl.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/logger.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="include/socket.h",height=0.2,width=0.4,color="black",URL="$socket_8h.html"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="include/server.h",height=0.2,width=0.4,color="black",URL="$server_8h.html"]; + Node1 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/logger_8h__dep__incl.md5 b/docs/latex/logger_8h__dep__incl.md5 new file mode 100644 index 0000000..380e5f7 --- /dev/null +++ b/docs/latex/logger_8h__dep__incl.md5 @@ -0,0 +1 @@ +f7a2abed7130c6ae3bf9dfc84d27450f \ No newline at end of file diff --git a/docs/latex/logger_8h__incl.dot b/docs/latex/logger_8h__incl.dot new file mode 100644 index 0000000..35bfcb0 --- /dev/null +++ b/docs/latex/logger_8h__incl.dot @@ -0,0 +1,20 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/logger.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class.h",height=0.2,width=0.4,color="black",URL="$class_8h.html"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="assert.h",height=0.2,width=0.4,color="grey75"]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="interface.h",height=0.2,width=0.4,color="black",URL="$interface_8h.html"]; + Node7 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/logger_8h__incl.md5 b/docs/latex/logger_8h__incl.md5 new file mode 100644 index 0000000..9f28c2b --- /dev/null +++ b/docs/latex/logger_8h__incl.md5 @@ -0,0 +1 @@ +153ef79425ada7406c77fd58d85d501f \ No newline at end of file diff --git a/docs/latex/poll_8c.tex b/docs/latex/poll_8c.tex new file mode 100644 index 0000000..6301d65 --- /dev/null +++ b/docs/latex/poll_8c.tex @@ -0,0 +1,26 @@ +\hypertarget{poll_8c}{ +\section{src/server/poll.c File Reference} +\label{poll_8c}\index{src/server/poll.c@{src/server/poll.c}} +} +This graph shows which files directly or indirectly include this file: +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{poll_8c_aef9c98bcbff485b7c43831fe918ce4ac}{POLLFD}(ptr)~((struct pollfd $\ast$)(ptr)) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{poll_8c_aef9c98bcbff485b7c43831fe918ce4ac}{ +\index{poll.c@{poll.c}!POLLFD@{POLLFD}} +\index{POLLFD@{POLLFD}!poll.c@{poll.c}} +\subsubsection[{POLLFD}]{\setlength{\rightskip}{0pt plus 5cm}\#define POLLFD( +\begin{DoxyParamCaption} +\item[{}]{ptr} +\end{DoxyParamCaption} +)~((struct pollfd $\ast$)(ptr))}} +\label{poll_8c_aef9c98bcbff485b7c43831fe918ce4ac} + + +Definition at line 1 of file poll.c. + diff --git a/docs/latex/poll_8c__dep__incl.dot b/docs/latex/poll_8c__dep__incl.dot new file mode 100644 index 0000000..139a099 --- /dev/null +++ b/docs/latex/poll_8c__dep__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server/poll.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="src/server/run.c",height=0.2,width=0.4,color="black",URL="$run_8c.html"]; +} diff --git a/docs/latex/poll_8c__dep__incl.md5 b/docs/latex/poll_8c__dep__incl.md5 new file mode 100644 index 0000000..3dbc544 --- /dev/null +++ b/docs/latex/poll_8c__dep__incl.md5 @@ -0,0 +1 @@ +d4cde99efc4a70ad19caaef72552d897 \ No newline at end of file diff --git a/docs/latex/read_8c.tex b/docs/latex/read_8c.tex new file mode 100644 index 0000000..28d5853 --- /dev/null +++ b/docs/latex/read_8c.tex @@ -0,0 +1,5 @@ +\hypertarget{read_8c}{ +\section{src/server/read.c File Reference} +\label{read_8c}\index{src/server/read.c@{src/server/read.c}} +} +This graph shows which files directly or indirectly include this file: diff --git a/docs/latex/read_8c__dep__incl.dot b/docs/latex/read_8c__dep__incl.dot new file mode 100644 index 0000000..0f71800 --- /dev/null +++ b/docs/latex/read_8c__dep__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server/read.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="src/server/run.c",height=0.2,width=0.4,color="black",URL="$run_8c.html"]; +} diff --git a/docs/latex/read_8c__dep__incl.md5 b/docs/latex/read_8c__dep__incl.md5 new file mode 100644 index 0000000..be214ab --- /dev/null +++ b/docs/latex/read_8c__dep__incl.md5 @@ -0,0 +1 @@ +0e9313dd220094a0b8b5a9c33e3c622e \ No newline at end of file diff --git a/docs/latex/refman.tex b/docs/latex/refman.tex new file mode 100644 index 0000000..5b178a5 --- /dev/null +++ b/docs/latex/refman.tex @@ -0,0 +1,113 @@ +\documentclass[a4paper]{book} +\usepackage{makeidx} +\usepackage{graphicx} +\usepackage{multicol} +\usepackage{float} +\usepackage{listings} +\usepackage{color} +\usepackage{ifthen} +\usepackage[table]{xcolor} +\usepackage{textcomp} +\usepackage{alltt} +\usepackage{ifpdf} +\ifpdf +\usepackage[pdftex, + pagebackref=true, + colorlinks=true, + linkcolor=blue, + unicode + ]{hyperref} +\else +\usepackage[ps2pdf, + pagebackref=true, + colorlinks=true, + linkcolor=blue, + unicode + ]{hyperref} +\usepackage{pspicture} +\fi +\usepackage[utf8]{inputenc} +\usepackage{mathptmx} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{doxygen} +\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left } +\makeindex +\setcounter{tocdepth}{3} +\renewcommand{\footrulewidth}{0.4pt} +\begin{document} +\hypersetup{pageanchor=false} +\begin{titlepage} +\vspace*{7cm} +\begin{center} +{\Large server \\[1ex]\large 0.0.1 }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.7.3}\\ +\vspace*{0.5cm} +{\small Wed Feb 8 2012 13:04:39}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} +\chapter{Data Structure Index} +\input{annotated} +\chapter{File Index} +\input{files} +\chapter{Data Structure Documentation} +\input{structclass} +\input{structHttpRequest} +\input{structHttpRequestParser} +\input{structHttpRequestQueue} +\input{structi__Class} +\input{structi__Logger} +\input{structi__StreamReader} +\input{structiface__impl} +\input{structinterface} +\input{structLogger} +\input{structLoggerStderr} +\input{structLoggerSyslog} +\input{structServer} +\input{structSock} +\chapter{File Documentation} +\input{class_8h} +\input{interface_2class_8h} +\input{request_8h} +\input{request__parser_8h} +\input{request__queue_8h} +\input{interface_8h} +\input{interface_2logger_8h} +\input{logger_8h} +\input{stream__reader_8h} +\input{server_8h} +\input{signalHandling_8h} +\input{socket_8h} +\input{class_8c} +\input{interface_2class_8c} +\input{daemonize_8c} +\input{request_8c} +\input{request__parser_8c} +\input{request__queue_8c} +\input{interface_8c} +\input{interface_2logger_8c} +\input{logger_8c} +\input{stream__reader_8c} +\input{stderr_8c} +\input{syslog_8c} +\input{server_8c} +\input{close__conn_8c} +\input{handle__accept_8c} +\input{poll_8c} +\input{read_8c} +\input{run_8c} +\input{signalHandling_8c} +\input{socket_8c} +\input{accept_8c} +\input{connect_8c} +\input{listen_8c} +\input{testserver_8c} +\printindex +\end{document} diff --git a/docs/latex/request_8c.tex b/docs/latex/request_8c.tex new file mode 100644 index 0000000..7d2588c --- /dev/null +++ b/docs/latex/request_8c.tex @@ -0,0 +1,43 @@ +\hypertarget{request_8c}{ +\section{src/http/request.c File Reference} +\label{request_8c}\index{src/http/request.c@{src/http/request.c}} +} +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request.h\char`\"{}}\par +Include dependency graph for request.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{request_8c_a4dd368b7bead6fa0805e91405d90f786}{INIT\_\-IFACE} (Class, ctor, dtor, NULL) +\item +\hyperlink{request_8c_a3eb93e136cdb6fe8cd7ae90040020852}{CREATE\_\-CLASS} (\hyperlink{structHttpRequest}{HttpRequest}, NULL, IFACE(Class)) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{request_8c_a3eb93e136cdb6fe8cd7ae90040020852}{ +\index{request.c@{request.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!request.c@{request.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf HttpRequest}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{} +\end{DoxyParamCaption} +)}} +\label{request_8c_a3eb93e136cdb6fe8cd7ae90040020852} +\hypertarget{request_8c_a4dd368b7bead6fa0805e91405d90f786}{ +\index{request.c@{request.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!request.c@{request.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{NULL}]{} +\end{DoxyParamCaption} +)}} +\label{request_8c_a4dd368b7bead6fa0805e91405d90f786} diff --git a/docs/latex/request_8c__incl.dot b/docs/latex/request_8c__incl.dot new file mode 100644 index 0000000..5da78f9 --- /dev/null +++ b/docs/latex/request_8c__incl.dot @@ -0,0 +1,17 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/http/request.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="http/request.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request_8c__incl.md5 b/docs/latex/request_8c__incl.md5 new file mode 100644 index 0000000..87a6f57 --- /dev/null +++ b/docs/latex/request_8c__incl.md5 @@ -0,0 +1 @@ +378072bbb519175e128e7ef34710ddf3 \ No newline at end of file diff --git a/docs/latex/request_8h.tex b/docs/latex/request_8h.tex new file mode 100644 index 0000000..97d32e1 --- /dev/null +++ b/docs/latex/request_8h.tex @@ -0,0 +1,11 @@ +\hypertarget{request_8h}{ +\section{include/http/request.h File Reference} +\label{request_8h}\index{include/http/request.h@{include/http/request.h}} +} +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +Include dependency graph for request.h: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structHttpRequest}{HttpRequest} +\end{DoxyCompactItemize} diff --git a/docs/latex/request_8h__incl.dot b/docs/latex/request_8h__incl.dot new file mode 100644 index 0000000..37257c1 --- /dev/null +++ b/docs/latex/request_8h__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/http/request.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request_8h__incl.md5 b/docs/latex/request_8h__incl.md5 new file mode 100644 index 0000000..583c8ca --- /dev/null +++ b/docs/latex/request_8h__incl.md5 @@ -0,0 +1 @@ +f6f270865384a1dc6fd690301ee2181a \ No newline at end of file diff --git a/docs/latex/request__parser_8c.tex b/docs/latex/request__parser_8c.tex new file mode 100644 index 0000000..d5ca7b1 --- /dev/null +++ b/docs/latex/request__parser_8c.tex @@ -0,0 +1,63 @@ +\hypertarget{request__parser_8c}{ +\section{src/http/request\_\-parser.c File Reference} +\label{request__parser_8c}\index{src/http/request\_\-parser.c@{src/http/request\_\-parser.c}} +} +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include $<$stdio.h$>$}\par +{\ttfamily \#include $<$unistd.h$>$}\par +{\ttfamily \#include $<$ctype.h$>$}\par +{\ttfamily \#include $<$sys/types.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-parser.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/stream\_\-reader.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-queue.h\char`\"{}}\par +Include dependency graph for request\_\-parser.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{request__parser_8c_a0508cf41efb8d26b8c43116711820d71}{INIT\_\-IFACE} (Class, ctor, dtor, \_\-clone) +\item +\hyperlink{request__parser_8c_a70f4eea7746a809dd8da71e9cbf4842a}{INIT\_\-IFACE} (StreamReader, get\_\-data) +\item +\hyperlink{request__parser_8c_a70093dfed29b221273e59f63936237b5}{CREATE\_\-CLASS} (\hyperlink{structHttpRequestParser}{HttpRequestParser}, NULL, IFACE(Class), IFACE(StreamReader)) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{request__parser_8c_a70093dfed29b221273e59f63936237b5}{ +\index{request\_\-parser.c@{request\_\-parser.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!request_parser.c@{request\_\-parser.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf HttpRequestParser}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{, } +\item[{IFACE(StreamReader)}]{} +\end{DoxyParamCaption} +)}} +\label{request__parser_8c_a70093dfed29b221273e59f63936237b5} +\hypertarget{request__parser_8c_a0508cf41efb8d26b8c43116711820d71}{ +\index{request\_\-parser.c@{request\_\-parser.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!request_parser.c@{request\_\-parser.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{\_\-clone}]{} +\end{DoxyParamCaption} +)}} +\label{request__parser_8c_a0508cf41efb8d26b8c43116711820d71} +\hypertarget{request__parser_8c_a70f4eea7746a809dd8da71e9cbf4842a}{ +\index{request\_\-parser.c@{request\_\-parser.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!request_parser.c@{request\_\-parser.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{StreamReader}]{, } +\item[{get\_\-data}]{} +\end{DoxyParamCaption} +)}} +\label{request__parser_8c_a70f4eea7746a809dd8da71e9cbf4842a} diff --git a/docs/latex/request__parser_8c__incl.dot b/docs/latex/request__parser_8c__incl.dot new file mode 100644 index 0000000..51592d4 --- /dev/null +++ b/docs/latex/request__parser_8c__incl.dot @@ -0,0 +1,31 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/http/request_parser.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="stdio.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="unistd.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="ctype.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="http/request_parser.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid"]; + Node10 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid"]; + Node11 [label="interface/stream_reader.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid"]; + Node12 [label="http/request.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid"]; + Node13 [label="http/request_queue.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request__parser_8c__incl.md5 b/docs/latex/request__parser_8c__incl.md5 new file mode 100644 index 0000000..5a46c08 --- /dev/null +++ b/docs/latex/request__parser_8c__incl.md5 @@ -0,0 +1 @@ +e5c3db015d7ff4276a9569d02cfe2142 \ No newline at end of file diff --git a/docs/latex/request__parser_8h.tex b/docs/latex/request__parser_8h.tex new file mode 100644 index 0000000..2efeb19 --- /dev/null +++ b/docs/latex/request__parser_8h.tex @@ -0,0 +1,102 @@ +\hypertarget{request__parser_8h}{ +\section{include/http/request\_\-parser.h File Reference} +\label{request__parser_8h}\index{include/http/request\_\-parser.h@{include/http/request\_\-parser.h}} +} +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-queue.h\char`\"{}}\par +Include dependency graph for request\_\-parser.h: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structHttpRequestParser}{HttpRequestParser} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{request__parser_8h_ad645c7940041e8d57b5557a197e133fb}{HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK}~1024 +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef enum \hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21}{e\_\-HttpRequestState} \hyperlink{request__parser_8h_acaccfe3e34d50afe26e415749f7f4827}{HttpRequestState} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21}{e\_\-HttpRequestState} \{ \par +\hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21ab3db7445ba173b1f1e96920cc9a68ce5}{HTTP\_\-REQUEST\_\-GARBAGE} = 0, +\hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21adb7cd42594721f63ab68224a0b1c250a}{HTTP\_\-REQUEST\_\-START}, +\hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a7d6368bbdc9707276bace26d735c2395}{HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE}, +\hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a1a45d176d7e76f28cf1529c72a245cb7}{HTTP\_\-REQUEST\_\-HEADERS\_\-DONE}, +\par +\hyperlink{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21abb5b68f30f3d5e90723983a86ef54a8b}{HTTP\_\-REQUEST\_\-DONE} + \} +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{request__parser_8h_ad645c7940041e8d57b5557a197e133fb}{ +\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK@{HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK}} +\index{HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK@{HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK}!request_parser.h@{request\_\-parser.h}} +\subsubsection[{HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK}]{\setlength{\rightskip}{0pt plus 5cm}\#define HTTP\_\-REQUEST\_\-PARSER\_\-READ\_\-CHUNK~1024}} +\label{request__parser_8h_ad645c7940041e8d57b5557a197e133fb} + + +Definition at line 7 of file request\_\-parser.h. + + + +\subsection{Typedef Documentation} +\hypertarget{request__parser_8h_acaccfe3e34d50afe26e415749f7f4827}{ +\index{request\_\-parser.h@{request\_\-parser.h}!HttpRequestState@{HttpRequestState}} +\index{HttpRequestState@{HttpRequestState}!request_parser.h@{request\_\-parser.h}} +\subsubsection[{HttpRequestState}]{\setlength{\rightskip}{0pt plus 5cm}typedef enum {\bf e\_\-HttpRequestState} {\bf HttpRequestState}}} +\label{request__parser_8h_acaccfe3e34d50afe26e415749f7f4827} + + +\subsection{Enumeration Type Documentation} +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21}{ +\index{request\_\-parser.h@{request\_\-parser.h}!e\_\-HttpRequestState@{e\_\-HttpRequestState}} +\index{e\_\-HttpRequestState@{e\_\-HttpRequestState}!request_parser.h@{request\_\-parser.h}} +\subsubsection[{e\_\-HttpRequestState}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf e\_\-HttpRequestState}}} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21} +\begin{Desc} +\item[Enumerator: ]\par +\begin{description} +\index{HTTP\_\-REQUEST\_\-GARBAGE@{HTTP\_\-REQUEST\_\-GARBAGE}!request\_\-parser.h@{request\_\-parser.h}}\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-GARBAGE@{HTTP\_\-REQUEST\_\-GARBAGE}}\item[{\em +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21ab3db7445ba173b1f1e96920cc9a68ce5}{ +HTTP\_\-REQUEST\_\-GARBAGE} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21ab3db7445ba173b1f1e96920cc9a68ce5} +}]\index{HTTP\_\-REQUEST\_\-START@{HTTP\_\-REQUEST\_\-START}!request\_\-parser.h@{request\_\-parser.h}}\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-START@{HTTP\_\-REQUEST\_\-START}}\item[{\em +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21adb7cd42594721f63ab68224a0b1c250a}{ +HTTP\_\-REQUEST\_\-START} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21adb7cd42594721f63ab68224a0b1c250a} +}]\index{HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE@{HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE}!request\_\-parser.h@{request\_\-parser.h}}\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE@{HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE}}\item[{\em +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a7d6368bbdc9707276bace26d735c2395}{ +HTTP\_\-REQUEST\_\-REQUEST\_\-LINE\_\-DONE} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a7d6368bbdc9707276bace26d735c2395} +}]\index{HTTP\_\-REQUEST\_\-HEADERS\_\-DONE@{HTTP\_\-REQUEST\_\-HEADERS\_\-DONE}!request\_\-parser.h@{request\_\-parser.h}}\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-HEADERS\_\-DONE@{HTTP\_\-REQUEST\_\-HEADERS\_\-DONE}}\item[{\em +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a1a45d176d7e76f28cf1529c72a245cb7}{ +HTTP\_\-REQUEST\_\-HEADERS\_\-DONE} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21a1a45d176d7e76f28cf1529c72a245cb7} +}]\index{HTTP\_\-REQUEST\_\-DONE@{HTTP\_\-REQUEST\_\-DONE}!request\_\-parser.h@{request\_\-parser.h}}\index{request\_\-parser.h@{request\_\-parser.h}!HTTP\_\-REQUEST\_\-DONE@{HTTP\_\-REQUEST\_\-DONE}}\item[{\em +\hypertarget{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21abb5b68f30f3d5e90723983a86ef54a8b}{ +HTTP\_\-REQUEST\_\-DONE} +\label{request__parser_8h_a9e1bc4e9118896fae9e2d86e25582c21abb5b68f30f3d5e90723983a86ef54a8b} +}]\end{description} +\end{Desc} + + + +Definition at line 9 of file request\_\-parser.h. + + +\begin{DoxyCode} + { + HTTP_REQUEST_GARBAGE=0, + HTTP_REQUEST_START, + HTTP_REQUEST_REQUEST_LINE_DONE, + HTTP_REQUEST_HEADERS_DONE, + HTTP_REQUEST_DONE +} HttpRequestState; +\end{DoxyCode} diff --git a/docs/latex/request__parser_8h__incl.dot b/docs/latex/request__parser_8h__incl.dot new file mode 100644 index 0000000..710c3e3 --- /dev/null +++ b/docs/latex/request__parser_8h__incl.dot @@ -0,0 +1,11 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/http/request_parser.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="http/request_queue.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request__parser_8h__incl.md5 b/docs/latex/request__parser_8h__incl.md5 new file mode 100644 index 0000000..6b2339f --- /dev/null +++ b/docs/latex/request__parser_8h__incl.md5 @@ -0,0 +1 @@ +f4353f096084b5a858371ea1064eadf9 \ No newline at end of file diff --git a/docs/latex/request__queue_8c.tex b/docs/latex/request__queue_8c.tex new file mode 100644 index 0000000..ac90e1b --- /dev/null +++ b/docs/latex/request__queue_8c.tex @@ -0,0 +1,42 @@ +\hypertarget{request__queue_8c}{ +\section{src/http/request\_\-queue.c File Reference} +\label{request__queue_8c}\index{src/http/request\_\-queue.c@{src/http/request\_\-queue.c}} +} +{\ttfamily \#include $<$stdarg.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-queue.h\char`\"{}}\par +Include dependency graph for request\_\-queue.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{request__queue_8c_a4dd368b7bead6fa0805e91405d90f786}{INIT\_\-IFACE} (Class, ctor, dtor, NULL) +\item +\hyperlink{request__queue_8c_aebf96b69aa671f499918b976cd20c087}{CREATE\_\-CLASS} (\hyperlink{structHttpRequestQueue}{HttpRequestQueue}, NULL, IFACE(Class)) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{request__queue_8c_aebf96b69aa671f499918b976cd20c087}{ +\index{request\_\-queue.c@{request\_\-queue.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!request_queue.c@{request\_\-queue.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf HttpRequestQueue}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{} +\end{DoxyParamCaption} +)}} +\label{request__queue_8c_aebf96b69aa671f499918b976cd20c087} +\hypertarget{request__queue_8c_a4dd368b7bead6fa0805e91405d90f786}{ +\index{request\_\-queue.c@{request\_\-queue.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!request_queue.c@{request\_\-queue.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{NULL}]{} +\end{DoxyParamCaption} +)}} +\label{request__queue_8c_a4dd368b7bead6fa0805e91405d90f786} diff --git a/docs/latex/request__queue_8c__incl.dot b/docs/latex/request__queue_8c__incl.dot new file mode 100644 index 0000000..281352d --- /dev/null +++ b/docs/latex/request__queue_8c__incl.dot @@ -0,0 +1,15 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/http/request_queue.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="http/request_queue.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request__queue_8c__incl.md5 b/docs/latex/request__queue_8c__incl.md5 new file mode 100644 index 0000000..d3358b8 --- /dev/null +++ b/docs/latex/request__queue_8c__incl.md5 @@ -0,0 +1 @@ +a0d6a7af2ddaac59429db9a94dbf5e2a \ No newline at end of file diff --git a/docs/latex/request__queue_8h.tex b/docs/latex/request__queue_8h.tex new file mode 100644 index 0000000..9c67dfb --- /dev/null +++ b/docs/latex/request__queue_8h.tex @@ -0,0 +1,29 @@ +\hypertarget{request__queue_8h}{ +\section{include/http/request\_\-queue.h File Reference} +\label{request__queue_8h}\index{include/http/request\_\-queue.h@{include/http/request\_\-queue.h}} +} +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request.h\char`\"{}}\par +Include dependency graph for request\_\-queue.h: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structHttpRequestQueue}{HttpRequestQueue} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{request__queue_8h_a0da148930da7187cea2a610466756a30}{HTTP\_\-REQUEST\_\-QUEUE\_\-MAX}~1024 +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{request__queue_8h_a0da148930da7187cea2a610466756a30}{ +\index{request\_\-queue.h@{request\_\-queue.h}!HTTP\_\-REQUEST\_\-QUEUE\_\-MAX@{HTTP\_\-REQUEST\_\-QUEUE\_\-MAX}} +\index{HTTP\_\-REQUEST\_\-QUEUE\_\-MAX@{HTTP\_\-REQUEST\_\-QUEUE\_\-MAX}!request_queue.h@{request\_\-queue.h}} +\subsubsection[{HTTP\_\-REQUEST\_\-QUEUE\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define HTTP\_\-REQUEST\_\-QUEUE\_\-MAX~1024}} +\label{request__queue_8h_a0da148930da7187cea2a610466756a30} + + +Definition at line 7 of file request\_\-queue.h. + diff --git a/docs/latex/request__queue_8h__incl.dot b/docs/latex/request__queue_8h__incl.dot new file mode 100644 index 0000000..6c6b8e6 --- /dev/null +++ b/docs/latex/request__queue_8h__incl.dot @@ -0,0 +1,11 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/http/request_queue.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="http/request.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/request__queue_8h__incl.md5 b/docs/latex/request__queue_8h__incl.md5 new file mode 100644 index 0000000..ee792c5 --- /dev/null +++ b/docs/latex/request__queue_8h__incl.md5 @@ -0,0 +1 @@ +d872b444a33dd71853cb83214c7f37e8 \ No newline at end of file diff --git a/docs/latex/run_8c.tex b/docs/latex/run_8c.tex new file mode 100644 index 0000000..59a67bc --- /dev/null +++ b/docs/latex/run_8c.tex @@ -0,0 +1,226 @@ +\hypertarget{run_8c}{ +\section{src/server/run.c File Reference} +\label{run_8c}\index{src/server/run.c@{src/server/run.c}} +} +{\ttfamily \#include $<$poll.h$>$}\par +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include $<$errno.h$>$}\par +{\ttfamily \#include $<$unistd.h$>$}\par +{\ttfamily \#include $<$time.h$>$}\par +{\ttfamily \#include \char`\"{}server.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}signalHandling.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/stream\_\-reader.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-parser.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-queue.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}poll.c\char`\"{}}\par +{\ttfamily \#include \char`\"{}handle\_\-accept.c\char`\"{}}\par +{\ttfamily \#include \char`\"{}read.c\char`\"{}}\par +Include dependency graph for run.c: +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{run_8c_aacc3ee1a7f283f8ef65cea31f4436a95}{MAX}(x, y)~((x) $>$ (y) ? (x) : (y)) +\item +\#define \hyperlink{run_8c_a62de8b169a3e2f03f0e793aee87b3758}{RESP\_\-HEAD} +\item +\#define \hyperlink{run_8c_a668b468f247abfce706ce6eaf6caecc9}{RESP\_\-DATA} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{run_8c_a67a4d9073b80d8ae1459fb11ddd23675}{serverRun} (\hyperlink{structServer}{Server} this) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{run_8c_aacc3ee1a7f283f8ef65cea31f4436a95}{ +\index{run.c@{run.c}!MAX@{MAX}} +\index{MAX@{MAX}!run.c@{run.c}} +\subsubsection[{MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define MAX( +\begin{DoxyParamCaption} +\item[{}]{x, } +\item[{}]{y} +\end{DoxyParamCaption} +)~((x) $>$ (y) ? (x) : (y))}} +\label{run_8c_aacc3ee1a7f283f8ef65cea31f4436a95} + + +Definition at line 23 of file run.c. + +\hypertarget{run_8c_a668b468f247abfce706ce6eaf6caecc9}{ +\index{run.c@{run.c}!RESP\_\-DATA@{RESP\_\-DATA}} +\index{RESP\_\-DATA@{RESP\_\-DATA}!run.c@{run.c}} +\subsubsection[{RESP\_\-DATA}]{\setlength{\rightskip}{0pt plus 5cm}\#define RESP\_\-DATA}} +\label{run_8c_a668b468f247abfce706ce6eaf6caecc9} +{\bfseries Value:} +\begin{DoxyCode} +"\n" \ + "\n" \ + "\n" \ + "404 - Not F + ound" \ + "

404 - Not Foun + d

" \ + "" +\end{DoxyCode} +\hypertarget{run_8c_a62de8b169a3e2f03f0e793aee87b3758}{ +\index{run.c@{run.c}!RESP\_\-HEAD@{RESP\_\-HEAD}} +\index{RESP\_\-HEAD@{RESP\_\-HEAD}!run.c@{run.c}} +\subsubsection[{RESP\_\-HEAD}]{\setlength{\rightskip}{0pt plus 5cm}\#define RESP\_\-HEAD}} +\label{run_8c_a62de8b169a3e2f03f0e793aee87b3758} +{\bfseries Value:} +\begin{DoxyCode} +"HTTP/1.1 404 Not Found\r\n" \ + "Content-Type: text/html\ + r\n" \ + "Content-Length: %lu\r\n" + \ + "Date: %s\r\n" \ + "Server: testserver\r\n" +\end{DoxyCode} + + +\subsection{Function Documentation} +\hypertarget{run_8c_a67a4d9073b80d8ae1459fb11ddd23675}{ +\index{run.c@{run.c}!serverRun@{serverRun}} +\index{serverRun@{serverRun}!run.c@{run.c}} +\subsubsection[{serverRun}]{\setlength{\rightskip}{0pt plus 5cm}void serverRun ( +\begin{DoxyParamCaption} +\item[{{\bf Server}}]{this} +\end{DoxyParamCaption} +)}} +\label{run_8c_a67a4d9073b80d8ae1459fb11ddd23675} + + +: actually this is the main loop of my server. When stuff becomes more complicated it might be feasabible to split stuff into separate processes. This will definetly involve some IPC and syncing. Right now as this is actually only a simple HTTP server implementation we go on with this single process. What we can first do to get some processing between read/write cicles is to use the poll timeout. + +handle accept + +handle reads + +do some other processing : actually this will hard assume that our stream reader is a http parser and it has its queue...think about more generalizing here. + +: for now simply remove request and send not found. Make this sane. + +: the complete response stuff have to be removed here. + +: just to send an answer and be able to make some apache benchs i do it here...this definetly MUST BE moved + +handle writes + + + +Definition at line 30 of file run.c. + + +\begin{DoxyCode} +{ + loggerLog(this->logger, LOGGER_INFO, "service started"); + + while (!doShutdown) /* until error or signal */ + { + int events; + unsigned int i; + + events = serverPoll(this); + if (doShutdown) break; + + for (i=0; i < events; i++) { + int fd = (this->fds)[i].fd; + //int nreads = 0, nwrites = 0; + + if (0 != ((this->fds)[i].revents & POLLIN)) { + if (this->sock->handle == (this->fds)[i].fd) { + serverHandleAccept(this); + } + + else { + serverRead(this, i); + + { + int j; + HttpRequestQueue queue = + ((HttpRequestParser)(this + ->conns)[fd].reader)->request_queue; + + for (j=0; jnrequests; j++ + ) { + HttpRequest request = que + ue->requests[j]; + + delete(&request); + + time_t t; + struct tm * tmp; + char timestr[200]; + +#define RESP_HEAD "HTTP/1.1 404 Not Found\r\n" \ + "Content-Type: text/html\ + r\n" \ + "Content-Length: %lu\r\n" + \ + "Date: %s\r\n" \ + "Server: testserver\r\n" + +#define RESP_DATA "\n" \ + "\n" \ + "\n" \ + "404 - Not F + ound" \ + "

404 - Not Foun + d

" \ + "" + + t = time(NULL); + tmp = localtime(&t); + strftime(timestr, sizeof( + timestr), "%a, %d %b %Y %T %Z", tmp); + + sprintf((this->conns)[fd] + .wbuf, RESP_HEAD "\r\n" RESP_DATA, sizeof(RESP_DATA), timestr); + (this->fds)[i].events = ( + this->fds)[i].events | POLLOUT; + } + + queue->nrequests = 0; + } + } + } + + if (0 != ((this->fds)[i].revents & POLLOUT)) { + write( + (this->fds)[i].fd, + (this->conns)[fd].wbuf, + strlen((this->conns)[fd].wbuf)); + (this->fds)[i].events = (this->fds)[i].events & ~ + POLLOUT; + serverCloseConn(this, i); + } + } + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + + + +Here is the caller graph for this function: + + diff --git a/docs/latex/run_8c__incl.dot b/docs/latex/run_8c__incl.dot new file mode 100644 index 0000000..39f64a9 --- /dev/null +++ b/docs/latex/run_8c__incl.dot @@ -0,0 +1,45 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server/run.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="poll.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="errno.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="unistd.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="time.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="server.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid"]; + Node10 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid"]; + Node11 [label="signalHandling.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid"]; + Node12 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid"]; + Node13 [label="interface/stream_reader.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid"]; + Node14 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid"]; + Node15 [label="http/request.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid"]; + Node16 [label="http/request_parser.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node17 [color="midnightblue",fontsize="10",style="solid"]; + Node17 [label="http/request_queue.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node18 [color="midnightblue",fontsize="10",style="solid"]; + Node18 [label="poll.c",height=0.2,width=0.4,color="black",URL="$poll_8c.html"]; + Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid"]; + Node19 [label="handle_accept.c",height=0.2,width=0.4,color="black",URL="$handle__accept_8c.html"]; + Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid"]; + Node20 [label="read.c",height=0.2,width=0.4,color="black",URL="$read_8c.html"]; +} diff --git a/docs/latex/run_8c__incl.md5 b/docs/latex/run_8c__incl.md5 new file mode 100644 index 0000000..75068e2 --- /dev/null +++ b/docs/latex/run_8c__incl.md5 @@ -0,0 +1 @@ +8e7e67f71f253716d115fb4fdf370888 \ No newline at end of file diff --git a/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot new file mode 100644 index 0000000..21ff4d4 --- /dev/null +++ b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverRun",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="serverCloseConn",height=0.2,width=0.4,color="black",URL="$server_8h.html#a81f787254ea87cbc851d292e5a7d195d"]; +} diff --git a/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..4366343 --- /dev/null +++ b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +20bd890713aba8c1362051f5c585eb58 \ No newline at end of file diff --git a/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot new file mode 100644 index 0000000..d4bdd93 --- /dev/null +++ b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverRun",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..fa1638f --- /dev/null +++ b/docs/latex/run_8c_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +f1542b75481431f7d027e2cc9fe982c2 \ No newline at end of file diff --git a/docs/latex/server_8c.tex b/docs/latex/server_8c.tex new file mode 100644 index 0000000..df88860 --- /dev/null +++ b/docs/latex/server_8c.tex @@ -0,0 +1,46 @@ +\hypertarget{server_8c}{ +\section{src/server.c File Reference} +\label{server_8c}\index{src/server.c@{src/server.c}} +} +{\ttfamily \#include $<$poll.h$>$}\par +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}server.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +Include dependency graph for server.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{server_8c_a4dd368b7bead6fa0805e91405d90f786}{INIT\_\-IFACE} (Class, ctor, dtor, NULL) +\item +\hyperlink{server_8c_a69cdcc8e4e123675a4c70e8d38693826}{CREATE\_\-CLASS} (\hyperlink{structServer}{Server}, NULL, IFACE(Class)) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{server_8c_a69cdcc8e4e123675a4c70e8d38693826}{ +\index{server.c@{server.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!server.c@{server.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf Server}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{} +\end{DoxyParamCaption} +)}} +\label{server_8c_a69cdcc8e4e123675a4c70e8d38693826} +\hypertarget{server_8c_a4dd368b7bead6fa0805e91405d90f786}{ +\index{server.c@{server.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!server.c@{server.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{NULL}]{} +\end{DoxyParamCaption} +)}} +\label{server_8c_a4dd368b7bead6fa0805e91405d90f786} diff --git a/docs/latex/server_8c__incl.dot b/docs/latex/server_8c__incl.dot new file mode 100644 index 0000000..9a13df2 --- /dev/null +++ b/docs/latex/server_8c__incl.dot @@ -0,0 +1,23 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/server.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="poll.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="server.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/server_8c__incl.md5 b/docs/latex/server_8c__incl.md5 new file mode 100644 index 0000000..b76681b --- /dev/null +++ b/docs/latex/server_8c__incl.md5 @@ -0,0 +1 @@ +14c81617325dec7d6a2eaa9198988de2 \ No newline at end of file diff --git a/docs/latex/server_8h.tex b/docs/latex/server_8h.tex new file mode 100644 index 0000000..e0e2b35 --- /dev/null +++ b/docs/latex/server_8h.tex @@ -0,0 +1,259 @@ +\hypertarget{server_8h}{ +\section{include/server.h File Reference} +\label{server_8h}\index{include/server.h@{include/server.h}} +} +{\ttfamily \#include $<$stdio.h$>$}\par +{\ttfamily \#include $<$poll.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +Include dependency graph for server.h: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structServer}{Server} +\end{DoxyCompactItemize} +\subsection*{Defines} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{server_8h_a6371240ebfb3156b737ddd83e1e142bd}{POLL\_\-FD\_\-NSIZE}~1024 +\item +\#define \hyperlink{server_8h_ade0a08dce19efc4f1ec7dc2ab0120ab9}{POLL\_\-FD\_\-SIZE}~(sizeof(struct pollfd) $\ast$ POLL\_\-FD\_\-NSIZE) +\item +\#define \hyperlink{server_8h_a4a694160d07797872cb3861f94b95c94}{MOVE\_\-SIZE}(size, idx)~((size) $\ast$ (POLL\_\-FD\_\-NSIZE-\/((idx)+1))) +\item +\#define \hyperlink{server_8h_a11d5c89fb77bc941d085e8f38d014665}{CLEAR\_\-CONN}(server, idx) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{server_8h_a67a4d9073b80d8ae1459fb11ddd23675}{serverRun} (\hyperlink{structServer}{Server} this) +\item +void \hyperlink{server_8h_a81f787254ea87cbc851d292e5a7d195d}{serverCloseConn} (\hyperlink{structServer}{Server} this, unsigned int handle) +\end{DoxyCompactItemize} + + +\subsection{Define Documentation} +\hypertarget{server_8h_a11d5c89fb77bc941d085e8f38d014665}{ +\index{server.h@{server.h}!CLEAR\_\-CONN@{CLEAR\_\-CONN}} +\index{CLEAR\_\-CONN@{CLEAR\_\-CONN}!server.h@{server.h}} +\subsubsection[{CLEAR\_\-CONN}]{\setlength{\rightskip}{0pt plus 5cm}\#define CLEAR\_\-CONN( +\begin{DoxyParamCaption} +\item[{}]{server, } +\item[{}]{idx} +\end{DoxyParamCaption} +)}} +\label{server_8h_a11d5c89fb77bc941d085e8f38d014665} +{\bfseries Value:} +\begin{DoxyCode} +memmove(&(((server)->fds)[(idx)]), \ + &(((server)->fds)[(idx)+1]), \ + MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \ + memmove(&(((server)->conns)[(idx)]), \ + &(((server)->conns)[(idx)+1]), \ + MOVE_SIZE(sizeof(((server)->conns)[0]),(idx))) +\end{DoxyCode} + + +Definition at line 15 of file server.h. + +\hypertarget{server_8h_a4a694160d07797872cb3861f94b95c94}{ +\index{server.h@{server.h}!MOVE\_\-SIZE@{MOVE\_\-SIZE}} +\index{MOVE\_\-SIZE@{MOVE\_\-SIZE}!server.h@{server.h}} +\subsubsection[{MOVE\_\-SIZE}]{\setlength{\rightskip}{0pt plus 5cm}\#define MOVE\_\-SIZE( +\begin{DoxyParamCaption} +\item[{}]{size, } +\item[{}]{idx} +\end{DoxyParamCaption} +)~((size) $\ast$ (POLL\_\-FD\_\-NSIZE-\/((idx)+1)))}} +\label{server_8h_a4a694160d07797872cb3861f94b95c94} + + +Definition at line 14 of file server.h. + +\hypertarget{server_8h_a6371240ebfb3156b737ddd83e1e142bd}{ +\index{server.h@{server.h}!POLL\_\-FD\_\-NSIZE@{POLL\_\-FD\_\-NSIZE}} +\index{POLL\_\-FD\_\-NSIZE@{POLL\_\-FD\_\-NSIZE}!server.h@{server.h}} +\subsubsection[{POLL\_\-FD\_\-NSIZE}]{\setlength{\rightskip}{0pt plus 5cm}\#define POLL\_\-FD\_\-NSIZE~1024}} +\label{server_8h_a6371240ebfb3156b737ddd83e1e142bd} + + +Definition at line 11 of file server.h. + +\hypertarget{server_8h_ade0a08dce19efc4f1ec7dc2ab0120ab9}{ +\index{server.h@{server.h}!POLL\_\-FD\_\-SIZE@{POLL\_\-FD\_\-SIZE}} +\index{POLL\_\-FD\_\-SIZE@{POLL\_\-FD\_\-SIZE}!server.h@{server.h}} +\subsubsection[{POLL\_\-FD\_\-SIZE}]{\setlength{\rightskip}{0pt plus 5cm}\#define POLL\_\-FD\_\-SIZE~(sizeof(struct pollfd) $\ast$ POLL\_\-FD\_\-NSIZE)}} +\label{server_8h_ade0a08dce19efc4f1ec7dc2ab0120ab9} + + +Definition at line 12 of file server.h. + + + +\subsection{Function Documentation} +\hypertarget{server_8h_a81f787254ea87cbc851d292e5a7d195d}{ +\index{server.h@{server.h}!serverCloseConn@{serverCloseConn}} +\index{serverCloseConn@{serverCloseConn}!server.h@{server.h}} +\subsubsection[{serverCloseConn}]{\setlength{\rightskip}{0pt plus 5cm}void serverCloseConn ( +\begin{DoxyParamCaption} +\item[{{\bf Server}}]{this, } +\item[{unsigned int}]{handle} +\end{DoxyParamCaption} +)}} +\label{server_8h_a81f787254ea87cbc851d292e5a7d195d} + + +Definition at line 7 of file close\_\-conn.c. + + +\begin{DoxyCode} +{ + int fd = (this->fds)[i].fd; + + delete(&((this->conns)[fd].sock)); + delete(&((this->conns)[fd].reader)); + (this->fds)[i].events = 0; + this->ndel++; +// CLEAR_CONN(this, i); +// this->nfds--; +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + +\hypertarget{server_8h_a67a4d9073b80d8ae1459fb11ddd23675}{ +\index{server.h@{server.h}!serverRun@{serverRun}} +\index{serverRun@{serverRun}!server.h@{server.h}} +\subsubsection[{serverRun}]{\setlength{\rightskip}{0pt plus 5cm}void serverRun ( +\begin{DoxyParamCaption} +\item[{{\bf Server}}]{this} +\end{DoxyParamCaption} +)}} +\label{server_8h_a67a4d9073b80d8ae1459fb11ddd23675} + + +: actually this is the main loop of my server. When stuff becomes more complicated it might be feasabible to split stuff into separate processes. This will definetly involve some IPC and syncing. Right now as this is actually only a simple HTTP server implementation we go on with this single process. What we can first do to get some processing between read/write cicles is to use the poll timeout. + +handle accept + +handle reads + +do some other processing : actually this will hard assume that our stream reader is a http parser and it has its queue...think about more generalizing here. + +: for now simply remove request and send not found. Make this sane. + +: the complete response stuff have to be removed here. + +: just to send an answer and be able to make some apache benchs i do it here...this definetly MUST BE moved + +handle writes + + + +Definition at line 30 of file run.c. + + +\begin{DoxyCode} +{ + loggerLog(this->logger, LOGGER_INFO, "service started"); + + while (!doShutdown) /* until error or signal */ + { + int events; + unsigned int i; + + events = serverPoll(this); + if (doShutdown) break; + + for (i=0; i < events; i++) { + int fd = (this->fds)[i].fd; + //int nreads = 0, nwrites = 0; + + if (0 != ((this->fds)[i].revents & POLLIN)) { + if (this->sock->handle == (this->fds)[i].fd) { + serverHandleAccept(this); + } + + else { + serverRead(this, i); + + { + int j; + HttpRequestQueue queue = + ((HttpRequestParser)(this + ->conns)[fd].reader)->request_queue; + + for (j=0; jnrequests; j++ + ) { + HttpRequest request = que + ue->requests[j]; + + delete(&request); + + time_t t; + struct tm * tmp; + char timestr[200]; + +#define RESP_HEAD "HTTP/1.1 404 Not Found\r\n" \ + "Content-Type: text/html\ + r\n" \ + "Content-Length: %lu\r\n" + \ + "Date: %s\r\n" \ + "Server: testserver\r\n" + +#define RESP_DATA "\n" \ + "\n" \ + "\n" \ + "404 - Not F + ound" \ + "

404 - Not Foun + d

" \ + "" + + t = time(NULL); + tmp = localtime(&t); + strftime(timestr, sizeof( + timestr), "%a, %d %b %Y %T %Z", tmp); + + sprintf((this->conns)[fd] + .wbuf, RESP_HEAD "\r\n" RESP_DATA, sizeof(RESP_DATA), timestr); + (this->fds)[i].events = ( + this->fds)[i].events | POLLOUT; + } + + queue->nrequests = 0; + } + } + } + + if (0 != ((this->fds)[i].revents & POLLOUT)) { + write( + (this->fds)[i].fd, + (this->conns)[fd].wbuf, + strlen((this->conns)[fd].wbuf)); + (this->fds)[i].events = (this->fds)[i].events & ~ + POLLOUT; + serverCloseConn(this, i); + } + } + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + + + +Here is the caller graph for this function: + + diff --git a/docs/latex/server_8h__incl.dot b/docs/latex/server_8h__incl.dot new file mode 100644 index 0000000..95346a1 --- /dev/null +++ b/docs/latex/server_8h__incl.dot @@ -0,0 +1,33 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/server.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdio.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="poll.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="class.h",height=0.2,width=0.4,color="black",URL="$class_8h.html"]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="assert.h",height=0.2,width=0.4,color="grey75"]; + Node4 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="interface.h",height=0.2,width=0.4,color="black",URL="$interface_8h.html"]; + Node9 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid"]; + Node10 [label="socket.h",height=0.2,width=0.4,color="black",URL="$socket_8h.html"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid"]; + Node11 [label="arpa/inet.h",height=0.2,width=0.4,color="grey75"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid"]; + Node12 [label="logger.h",height=0.2,width=0.4,color="black",URL="$logger_8h.html"]; + Node12 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/server_8h__incl.md5 b/docs/latex/server_8h__incl.md5 new file mode 100644 index 0000000..690501c --- /dev/null +++ b/docs/latex/server_8h__incl.md5 @@ -0,0 +1 @@ +0d9d780c9ec9428a2b41d685c83ab21c \ No newline at end of file diff --git a/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot new file mode 100644 index 0000000..21ff4d4 --- /dev/null +++ b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverRun",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="serverCloseConn",height=0.2,width=0.4,color="black",URL="$server_8h.html#a81f787254ea87cbc851d292e5a7d195d"]; +} diff --git a/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 new file mode 100644 index 0000000..4366343 --- /dev/null +++ b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_cgraph.md5 @@ -0,0 +1 @@ +20bd890713aba8c1362051f5c585eb58 \ No newline at end of file diff --git a/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot new file mode 100644 index 0000000..d4bdd93 --- /dev/null +++ b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverRun",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 new file mode 100644 index 0000000..fa1638f --- /dev/null +++ b/docs/latex/server_8h_a67a4d9073b80d8ae1459fb11ddd23675_icgraph.md5 @@ -0,0 +1 @@ +f1542b75481431f7d027e2cc9fe982c2 \ No newline at end of file diff --git a/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.dot b/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.dot new file mode 100644 index 0000000..80a64cb --- /dev/null +++ b/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="serverCloseConn",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="serverRun",height=0.2,width=0.4,color="black",URL="$run_8c.html#a67a4d9073b80d8ae1459fb11ddd23675"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 b/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 new file mode 100644 index 0000000..f2bc53c --- /dev/null +++ b/docs/latex/server_8h_a81f787254ea87cbc851d292e5a7d195d_icgraph.md5 @@ -0,0 +1 @@ +e78969226285854db8f53c7299426df2 \ No newline at end of file diff --git a/docs/latex/signalHandling_8c.tex b/docs/latex/signalHandling_8c.tex new file mode 100644 index 0000000..59b1b95 --- /dev/null +++ b/docs/latex/signalHandling_8c.tex @@ -0,0 +1,98 @@ +\hypertarget{signalHandling_8c}{ +\section{src/signalHandling.c File Reference} +\label{signalHandling_8c}\index{src/signalHandling.c@{src/signalHandling.c}} +} +{\ttfamily \#include $<$signal.h$>$}\par +Include dependency graph for signalHandling.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{signalHandling_8c_a64612b9588ed0fb05d70680db02b3630}{terminate} (int signum) +\item +void \hyperlink{signalHandling_8c_a1de31bdef82f181f8045b94ae0933916}{init\_\-signals} (void) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +volatile int \hyperlink{signalHandling_8c_a960e985a396acaabb1bbed4f15668ade}{doShutdown} +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{signalHandling_8c_a1de31bdef82f181f8045b94ae0933916}{ +\index{signalHandling.c@{signalHandling.c}!init\_\-signals@{init\_\-signals}} +\index{init\_\-signals@{init\_\-signals}!signalHandling.c@{signalHandling.c}} +\subsubsection[{init\_\-signals}]{\setlength{\rightskip}{0pt plus 5cm}void init\_\-signals ( +\begin{DoxyParamCaption} +\item[{void}]{} +\end{DoxyParamCaption} +)}} +\label{signalHandling_8c_a1de31bdef82f181f8045b94ae0933916} + + +Definition at line 14 of file signalHandling.c. + + +\begin{DoxyCode} +{ + signal(SIGTERM, terminate); + signal(SIGHUP, SIG_IGN); + signal(SIGINT, terminate); + signal(SIGQUIT, terminate); + signal(SIGABRT, terminate); + signal(SIGALRM, SIG_IGN); + signal(SIGURG, SIG_IGN); + + signal(SIGPIPE, SIG_IGN); +} +\end{DoxyCode} + + +Here is the call graph for this function: + + + + +Here is the caller graph for this function: + + +\hypertarget{signalHandling_8c_a64612b9588ed0fb05d70680db02b3630}{ +\index{signalHandling.c@{signalHandling.c}!terminate@{terminate}} +\index{terminate@{terminate}!signalHandling.c@{signalHandling.c}} +\subsubsection[{terminate}]{\setlength{\rightskip}{0pt plus 5cm}void terminate ( +\begin{DoxyParamCaption} +\item[{int}]{signum} +\end{DoxyParamCaption} +)}} +\label{signalHandling_8c_a64612b9588ed0fb05d70680db02b3630} + + +Definition at line 5 of file signalHandling.c. + + +\begin{DoxyCode} +{ + signal(signum, SIG_IGN); + /* + * @TODO do logging here + */ + doShutdown = 1; +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + + + +\subsection{Variable Documentation} +\hypertarget{signalHandling_8c_a960e985a396acaabb1bbed4f15668ade}{ +\index{signalHandling.c@{signalHandling.c}!doShutdown@{doShutdown}} +\index{doShutdown@{doShutdown}!signalHandling.c@{signalHandling.c}} +\subsubsection[{doShutdown}]{\setlength{\rightskip}{0pt plus 5cm}volatile int {\bf doShutdown}}} +\label{signalHandling_8c_a960e985a396acaabb1bbed4f15668ade} + + +Definition at line 3 of file signalHandling.c. + diff --git a/docs/latex/signalHandling_8c__incl.dot b/docs/latex/signalHandling_8c__incl.dot new file mode 100644 index 0000000..0ab8267 --- /dev/null +++ b/docs/latex/signalHandling_8c__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/signalHandling.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="signal.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/signalHandling_8c__incl.md5 b/docs/latex/signalHandling_8c__incl.md5 new file mode 100644 index 0000000..0c9b080 --- /dev/null +++ b/docs/latex/signalHandling_8c__incl.md5 @@ -0,0 +1 @@ +857af70172db85996ec747c4ff4dd767 \ No newline at end of file diff --git a/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.dot b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.dot new file mode 100644 index 0000000..f31d7b5 --- /dev/null +++ b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="init_signals",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="terminate",height=0.2,width=0.4,color="black",URL="$signalHandling_8h.html#a64612b9588ed0fb05d70680db02b3630"]; +} diff --git a/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..ac99ab1 --- /dev/null +++ b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +45f2c1327c7275652c55ad27e89ccb8d \ No newline at end of file diff --git a/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.dot b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.dot new file mode 100644 index 0000000..4931f0a --- /dev/null +++ b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="init_signals",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..3e357ac --- /dev/null +++ b/docs/latex/signalHandling_8c_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +9ecf176d9ba1c7bc639926d14eccfac7 \ No newline at end of file diff --git a/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.dot b/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.dot new file mode 100644 index 0000000..dc5fe1b --- /dev/null +++ b/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="terminate",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="init_signals",height=0.2,width=0.4,color="black",URL="$signalHandling_8c.html#a1de31bdef82f181f8045b94ae0933916"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..19f8ce8 --- /dev/null +++ b/docs/latex/signalHandling_8c_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +a55d8b6cee2e92217998bd1eef349153 \ No newline at end of file diff --git a/docs/latex/signalHandling_8h.tex b/docs/latex/signalHandling_8h.tex new file mode 100644 index 0000000..682d5cb --- /dev/null +++ b/docs/latex/signalHandling_8h.tex @@ -0,0 +1,96 @@ +\hypertarget{signalHandling_8h}{ +\section{include/signalHandling.h File Reference} +\label{signalHandling_8h}\index{include/signalHandling.h@{include/signalHandling.h}} +} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{signalHandling_8h_a64612b9588ed0fb05d70680db02b3630}{terminate} (int signum) +\item +void \hyperlink{signalHandling_8h_a1de31bdef82f181f8045b94ae0933916}{init\_\-signals} (void) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +volatile int \hyperlink{signalHandling_8h_a960e985a396acaabb1bbed4f15668ade}{doShutdown} +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{signalHandling_8h_a1de31bdef82f181f8045b94ae0933916}{ +\index{signalHandling.h@{signalHandling.h}!init\_\-signals@{init\_\-signals}} +\index{init\_\-signals@{init\_\-signals}!signalHandling.h@{signalHandling.h}} +\subsubsection[{init\_\-signals}]{\setlength{\rightskip}{0pt plus 5cm}void init\_\-signals ( +\begin{DoxyParamCaption} +\item[{void}]{} +\end{DoxyParamCaption} +)}} +\label{signalHandling_8h_a1de31bdef82f181f8045b94ae0933916} + + +Definition at line 14 of file signalHandling.c. + + +\begin{DoxyCode} +{ + signal(SIGTERM, terminate); + signal(SIGHUP, SIG_IGN); + signal(SIGINT, terminate); + signal(SIGQUIT, terminate); + signal(SIGABRT, terminate); + signal(SIGALRM, SIG_IGN); + signal(SIGURG, SIG_IGN); + + signal(SIGPIPE, SIG_IGN); +} +\end{DoxyCode} + + +Here is the call graph for this function: + + + + +Here is the caller graph for this function: + + +\hypertarget{signalHandling_8h_a64612b9588ed0fb05d70680db02b3630}{ +\index{signalHandling.h@{signalHandling.h}!terminate@{terminate}} +\index{terminate@{terminate}!signalHandling.h@{signalHandling.h}} +\subsubsection[{terminate}]{\setlength{\rightskip}{0pt plus 5cm}void terminate ( +\begin{DoxyParamCaption} +\item[{int}]{signum} +\end{DoxyParamCaption} +)}} +\label{signalHandling_8h_a64612b9588ed0fb05d70680db02b3630} + + +Definition at line 5 of file signalHandling.c. + + +\begin{DoxyCode} +{ + signal(signum, SIG_IGN); + /* + * @TODO do logging here + */ + doShutdown = 1; +} +\end{DoxyCode} + + +Here is the caller graph for this function: + + + + +\subsection{Variable Documentation} +\hypertarget{signalHandling_8h_a960e985a396acaabb1bbed4f15668ade}{ +\index{signalHandling.h@{signalHandling.h}!doShutdown@{doShutdown}} +\index{doShutdown@{doShutdown}!signalHandling.h@{signalHandling.h}} +\subsubsection[{doShutdown}]{\setlength{\rightskip}{0pt plus 5cm}volatile int {\bf doShutdown}}} +\label{signalHandling_8h_a960e985a396acaabb1bbed4f15668ade} + + +Definition at line 3 of file signalHandling.c. + diff --git a/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.dot b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.dot new file mode 100644 index 0000000..f31d7b5 --- /dev/null +++ b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="init_signals",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="terminate",height=0.2,width=0.4,color="black",URL="$signalHandling_8h.html#a64612b9588ed0fb05d70680db02b3630"]; +} diff --git a/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 new file mode 100644 index 0000000..ac99ab1 --- /dev/null +++ b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_cgraph.md5 @@ -0,0 +1 @@ +45f2c1327c7275652c55ad27e89ccb8d \ No newline at end of file diff --git a/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.dot b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.dot new file mode 100644 index 0000000..4931f0a --- /dev/null +++ b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="init_signals",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 new file mode 100644 index 0000000..3e357ac --- /dev/null +++ b/docs/latex/signalHandling_8h_a1de31bdef82f181f8045b94ae0933916_icgraph.md5 @@ -0,0 +1 @@ +9ecf176d9ba1c7bc639926d14eccfac7 \ No newline at end of file diff --git a/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.dot b/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.dot new file mode 100644 index 0000000..dc5fe1b --- /dev/null +++ b/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="terminate",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="init_signals",height=0.2,width=0.4,color="black",URL="$signalHandling_8c.html#a1de31bdef82f181f8045b94ae0933916"]; + Node2 -> Node3 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="main",height=0.2,width=0.4,color="black",URL="$testserver_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4"]; +} diff --git a/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 b/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 new file mode 100644 index 0000000..19f8ce8 --- /dev/null +++ b/docs/latex/signalHandling_8h_a64612b9588ed0fb05d70680db02b3630_icgraph.md5 @@ -0,0 +1 @@ +a55d8b6cee2e92217998bd1eef349153 \ No newline at end of file diff --git a/docs/latex/socket_8c.tex b/docs/latex/socket_8c.tex new file mode 100644 index 0000000..57e8fa1 --- /dev/null +++ b/docs/latex/socket_8c.tex @@ -0,0 +1,44 @@ +\hypertarget{socket_8c}{ +\section{src/socket.c File Reference} +\label{socket_8c}\index{src/socket.c@{src/socket.c}} +} +{\ttfamily \#include $<$errno.h$>$}\par +{\ttfamily \#include $<$stdlib.h$>$}\par +{\ttfamily \#include \char`\"{}socket.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for socket.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{socket_8c_a4dd368b7bead6fa0805e91405d90f786}{INIT\_\-IFACE} (Class, ctor, dtor, NULL) +\item +\hyperlink{socket_8c_a924e6743ea24bce5099df53ea23f25d5}{CREATE\_\-CLASS} (\hyperlink{structSock}{Sock}, NULL, IFACE(Class)) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{socket_8c_a924e6743ea24bce5099df53ea23f25d5}{ +\index{socket.c@{socket.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!socket.c@{socket.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{, } +\item[{NULL}]{, } +\item[{IFACE(Class)}]{} +\end{DoxyParamCaption} +)}} +\label{socket_8c_a924e6743ea24bce5099df53ea23f25d5} +\hypertarget{socket_8c_a4dd368b7bead6fa0805e91405d90f786}{ +\index{socket.c@{socket.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!socket.c@{socket.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{Class}]{, } +\item[{ctor}]{, } +\item[{dtor}]{, } +\item[{NULL}]{} +\end{DoxyParamCaption} +)}} +\label{socket_8c_a4dd368b7bead6fa0805e91405d90f786} diff --git a/docs/latex/socket_8c__incl.dot b/docs/latex/socket_8c__incl.dot new file mode 100644 index 0000000..d7d5242 --- /dev/null +++ b/docs/latex/socket_8c__incl.dot @@ -0,0 +1,19 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/socket.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="errno.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="stdlib.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/socket_8c__incl.md5 b/docs/latex/socket_8c__incl.md5 new file mode 100644 index 0000000..c258070 --- /dev/null +++ b/docs/latex/socket_8c__incl.md5 @@ -0,0 +1 @@ +743efb0e34bd35233cba4ff3b15b8d40 \ No newline at end of file diff --git a/docs/latex/socket_8h.tex b/docs/latex/socket_8h.tex new file mode 100644 index 0000000..a0d67de --- /dev/null +++ b/docs/latex/socket_8h.tex @@ -0,0 +1,158 @@ +\hypertarget{socket_8h}{ +\section{include/socket.h File Reference} +\label{socket_8h}\index{include/socket.h@{include/socket.h}} +} +{\ttfamily \#include $<$arpa/inet.h$>$}\par +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +Include dependency graph for socket.h: +This graph shows which files directly or indirectly include this file: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structSock}{Sock} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{socket_8h_adbfc4792c437102f20e2c86c4ee8581b}{socketConnect} (\hyperlink{structSock}{Sock} this, const char $\ast$addr) +\item +void \hyperlink{socket_8h_a757c220e9371523ef55b1137a1efed57}{socketListen} (\hyperlink{structSock}{Sock} this, int backlog) +\item +\hyperlink{structSock}{Sock} \hyperlink{socket_8h_a46aa6b495ccf752e844f93bf46c9edd6}{socketAccept} (\hyperlink{structSock}{Sock} this, char remoteAddr\mbox{[}16\mbox{]}) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{socket_8h_a46aa6b495ccf752e844f93bf46c9edd6}{ +\index{socket.h@{socket.h}!socketAccept@{socketAccept}} +\index{socketAccept@{socketAccept}!socket.h@{socket.h}} +\subsubsection[{socketAccept}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Sock} socketAccept ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{char}]{remoteAddr\mbox{[}16\mbox{]}} +\end{DoxyParamCaption} +)}} +\label{socket_8h_a46aa6b495ccf752e844f93bf46c9edd6} + + +: Uhh, this is bad. we open a new socket additionally to the one we get from the accept call. i have to change the socket constructor to be able to create the data structure without creation of a socket at all. For now i simply close the socket here.... :D + +: change port to remote port on success + + + +Definition at line 8 of file accept.c. + + +\begin{DoxyCode} +{ + Sock sock; /* Socket for client */ + unsigned int len; /* Length of client address data structure */ + + /* Set the size of the in-out parameter */ + len = sizeof(this->addr); + + sock = new(Sock, this->log, this->port); + close(sock->handle); + /* Wait for a client to connect */ + sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len); + + if (-1 == sock->handle) { + loggerLog(this->log, LOGGER_WARNING, + "error accepting connection: %s", strerror(errno)); + } else { + loggerLog(this->log, LOGGER_INFO, + "handling client %s\n", inet_ntoa((sock->addr).si + n_addr)); + } + + return sock; +} +\end{DoxyCode} + + +Here is the call graph for this function: + + +\hypertarget{socket_8h_adbfc4792c437102f20e2c86c4ee8581b}{ +\index{socket.h@{socket.h}!socketConnect@{socketConnect}} +\index{socketConnect@{socketConnect}!socket.h@{socket.h}} +\subsubsection[{socketConnect}]{\setlength{\rightskip}{0pt plus 5cm}void socketConnect ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{const char $\ast$}]{addr} +\end{DoxyParamCaption} +)}} +\label{socket_8h_adbfc4792c437102f20e2c86c4ee8581b} + + +Definition at line 10 of file connect.c. + + +\begin{DoxyCode} +{ + inet_pton(AF_INET, addr, &((this->addr).sin_addr)); + (this->addr).sin_family = AF_INET; /* Internet address family */ + (this->addr).sin_port = htons(this->port); /* Local port */ + + if (-1 == connect(this->handle, (struct sockaddr*) &(this->addr), sizeof( + this->addr))) { + loggerLog(this->log, LOGGER_CRIT, + "error connection socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + +\hypertarget{socket_8h_a757c220e9371523ef55b1137a1efed57}{ +\index{socket.h@{socket.h}!socketListen@{socketListen}} +\index{socketListen@{socketListen}!socket.h@{socket.h}} +\subsubsection[{socketListen}]{\setlength{\rightskip}{0pt plus 5cm}void socketListen ( +\begin{DoxyParamCaption} +\item[{{\bf Sock}}]{this, } +\item[{int}]{backlog} +\end{DoxyParamCaption} +)}} +\label{socket_8h_a757c220e9371523ef55b1137a1efed57} + + +Definition at line 10 of file listen.c. + + +\begin{DoxyCode} +{ + (this->addr).sin_family = AF_INET; /* Internet address family + */ + (this->addr).sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface * + / + (this->addr).sin_port = htons(this->port); /* Local port */ + + /* Bind to the local address */ + if (-1 == bind(this->handle, (struct sockaddr *) &(this->addr), sizeof(this-> + addr))) { + loggerLog(this->log, LOGGER_CRIT, + "error binding socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } + + /* Mark the socket so it will listen for incoming connections */ + if (-1 == listen(this->handle, backlog)) { + loggerLog(this->log, LOGGER_CRIT, + "error binding socket: %s - service terminated", + strerror(errno)); + exit(EXIT_FAILURE); + } +} +\end{DoxyCode} + + +Here is the call graph for this function: + + diff --git a/docs/latex/socket_8h__dep__incl.dot b/docs/latex/socket_8h__dep__incl.dot new file mode 100644 index 0000000..7e2751d --- /dev/null +++ b/docs/latex/socket_8h__dep__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/socket.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [dir=back,color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="include/server.h",height=0.2,width=0.4,color="black",URL="$server_8h.html"]; +} diff --git a/docs/latex/socket_8h__dep__incl.md5 b/docs/latex/socket_8h__dep__incl.md5 new file mode 100644 index 0000000..6c6ad52 --- /dev/null +++ b/docs/latex/socket_8h__dep__incl.md5 @@ -0,0 +1 @@ +be4aa435c0fde097ba5af12b3f569453 \ No newline at end of file diff --git a/docs/latex/socket_8h__incl.dot b/docs/latex/socket_8h__incl.dot new file mode 100644 index 0000000..829138b --- /dev/null +++ b/docs/latex/socket_8h__incl.dot @@ -0,0 +1,25 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/socket.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="arpa/inet.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="class.h",height=0.2,width=0.4,color="black",URL="$class_8h.html"]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="stdarg.h",height=0.2,width=0.4,color="grey75"]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="assert.h",height=0.2,width=0.4,color="grey75"]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="interface.h",height=0.2,width=0.4,color="black",URL="$interface_8h.html"]; + Node8 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="logger.h",height=0.2,width=0.4,color="black",URL="$logger_8h.html"]; + Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; +} diff --git a/docs/latex/socket_8h__incl.md5 b/docs/latex/socket_8h__incl.md5 new file mode 100644 index 0000000..df388c5 --- /dev/null +++ b/docs/latex/socket_8h__incl.md5 @@ -0,0 +1 @@ +21e47294b560e93a3251b7d99924fbcf \ No newline at end of file diff --git a/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot b/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot new file mode 100644 index 0000000..8db5343 --- /dev/null +++ b/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketAccept",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 b/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 new file mode 100644 index 0000000..30c94d1 --- /dev/null +++ b/docs/latex/socket_8h_a46aa6b495ccf752e844f93bf46c9edd6_cgraph.md5 @@ -0,0 +1 @@ +a87e97e5a05cbb8f89e4bc27d3257053 \ No newline at end of file diff --git a/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.dot b/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.dot new file mode 100644 index 0000000..457e774 --- /dev/null +++ b/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketListen",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 b/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 new file mode 100644 index 0000000..8d1cc7c --- /dev/null +++ b/docs/latex/socket_8h_a757c220e9371523ef55b1137a1efed57_cgraph.md5 @@ -0,0 +1 @@ +9119991752c8de97a1c44af5d17e244c \ No newline at end of file diff --git a/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot b/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot new file mode 100644 index 0000000..de308ae --- /dev/null +++ b/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.dot @@ -0,0 +1,10 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="socketConnect",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; +} diff --git a/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 b/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 new file mode 100644 index 0000000..39afb5b --- /dev/null +++ b/docs/latex/socket_8h_adbfc4792c437102f20e2c86c4ee8581b_cgraph.md5 @@ -0,0 +1 @@ +d4b61c03fa9446761ec7f4284d17967f \ No newline at end of file diff --git a/docs/latex/stderr_8c.tex b/docs/latex/stderr_8c.tex new file mode 100644 index 0000000..71062a2 --- /dev/null +++ b/docs/latex/stderr_8c.tex @@ -0,0 +1,39 @@ +\hypertarget{stderr_8c}{ +\section{src/logger/stderr.c File Reference} +\label{stderr_8c}\index{src/logger/stderr.c@{src/logger/stderr.c}} +} +{\ttfamily \#include $<$stdio.h$>$}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for stderr.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{stderr_8c_a677bd96e9a85b74f5624a07221b79fbc}{INIT\_\-IFACE} (\hyperlink{structLogger}{Logger}, logStderr) +\item +\hyperlink{stderr_8c_a2536b6205a32b98ee5ee97ace564a412}{CREATE\_\-CLASS} (\hyperlink{structLoggerStderr}{LoggerStderr}, \hyperlink{structLogger}{Logger}, IFACE(\hyperlink{structLogger}{Logger})) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{stderr_8c_a2536b6205a32b98ee5ee97ace564a412}{ +\index{stderr.c@{stderr.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!stderr.c@{stderr.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf LoggerStderr}}]{, } +\item[{{\bf Logger}}]{, } +\item[{IFACE({\bf Logger})}]{} +\end{DoxyParamCaption} +)}} +\label{stderr_8c_a2536b6205a32b98ee5ee97ace564a412} +\hypertarget{stderr_8c_a677bd96e9a85b74f5624a07221b79fbc}{ +\index{stderr.c@{stderr.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!stderr.c@{stderr.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{{\bf Logger}}]{, } +\item[{logStderr}]{} +\end{DoxyParamCaption} +)}} +\label{stderr_8c_a677bd96e9a85b74f5624a07221b79fbc} diff --git a/docs/latex/stderr_8c__incl.dot b/docs/latex/stderr_8c__incl.dot new file mode 100644 index 0000000..c805829 --- /dev/null +++ b/docs/latex/stderr_8c__incl.dot @@ -0,0 +1,13 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/logger/stderr.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdio.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/stderr_8c__incl.md5 b/docs/latex/stderr_8c__incl.md5 new file mode 100644 index 0000000..78e33b8 --- /dev/null +++ b/docs/latex/stderr_8c__incl.md5 @@ -0,0 +1 @@ +07a8f3d871f6067bb59348f10c3a93a6 \ No newline at end of file diff --git a/docs/latex/stream__reader_8c.tex b/docs/latex/stream__reader_8c.tex new file mode 100644 index 0000000..cbd3089 --- /dev/null +++ b/docs/latex/stream__reader_8c.tex @@ -0,0 +1,39 @@ +\hypertarget{stream__reader_8c}{ +\section{src/interface/stream\_\-reader.c File Reference} +\label{stream__reader_8c}\index{src/interface/stream\_\-reader.c@{src/interface/stream\_\-reader.c}} +} +{\ttfamily \#include \char`\"{}class.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/stream\_\-reader.h\char`\"{}}\par +Include dependency graph for stream\_\-reader.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +size\_\-t \hyperlink{stream__reader_8c_aae6ed042c16a2d5f008c550fe116ad40}{streamReaderRead} (void $\ast$object, int fd) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{stream__reader_8c_aae6ed042c16a2d5f008c550fe116ad40}{ +\index{stream\_\-reader.c@{stream\_\-reader.c}!streamReaderRead@{streamReaderRead}} +\index{streamReaderRead@{streamReaderRead}!stream_reader.c@{stream\_\-reader.c}} +\subsubsection[{streamReaderRead}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t streamReaderRead ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{object, } +\item[{int}]{fd} +\end{DoxyParamCaption} +)}} +\label{stream__reader_8c_aae6ed042c16a2d5f008c550fe116ad40} + + +Definition at line 10 of file stream\_\-reader.c. + + +\begin{DoxyCode} +{ + size_t ret; + + RETCALL(object, StreamReader, read, ret, fd); + + return ret; +} +\end{DoxyCode} diff --git a/docs/latex/stream__reader_8c__incl.dot b/docs/latex/stream__reader_8c__incl.dot new file mode 100644 index 0000000..1d1ef1c --- /dev/null +++ b/docs/latex/stream__reader_8c__incl.dot @@ -0,0 +1,11 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/interface/stream_reader.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="class.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="interface/stream_reader.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/stream__reader_8c__incl.md5 b/docs/latex/stream__reader_8c__incl.md5 new file mode 100644 index 0000000..0445dd3 --- /dev/null +++ b/docs/latex/stream__reader_8c__incl.md5 @@ -0,0 +1 @@ +dae215e28e2dc15c79918e685a8a47af \ No newline at end of file diff --git a/docs/latex/stream__reader_8h.tex b/docs/latex/stream__reader_8h.tex new file mode 100644 index 0000000..e873885 --- /dev/null +++ b/docs/latex/stream__reader_8h.tex @@ -0,0 +1,60 @@ +\hypertarget{stream__reader_8h}{ +\section{include/interface/stream\_\-reader.h File Reference} +\label{stream__reader_8h}\index{include/interface/stream\_\-reader.h@{include/interface/stream\_\-reader.h}} +} +{\ttfamily \#include $<$sys/types.h$>$}\par +Include dependency graph for stream\_\-reader.h: +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structi__StreamReader}{i\_\-StreamReader} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef size\_\-t($\ast$ \hyperlink{stream__reader_8h_a658a56ce1aa463cc7de51f42080ca24f}{fptr\_\-streamReaderRead} )(void $\ast$, int fd) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +size\_\-t \hyperlink{stream__reader_8h_a8a8ae2e5ad974a747042b5dd70e31ca8}{streamReaderRead} (void $\ast$, int fd) +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\hypertarget{stream__reader_8h_a658a56ce1aa463cc7de51f42080ca24f}{ +\index{stream\_\-reader.h@{stream\_\-reader.h}!fptr\_\-streamReaderRead@{fptr\_\-streamReaderRead}} +\index{fptr\_\-streamReaderRead@{fptr\_\-streamReaderRead}!stream_reader.h@{stream\_\-reader.h}} +\subsubsection[{fptr\_\-streamReaderRead}]{\setlength{\rightskip}{0pt plus 5cm}typedef size\_\-t($\ast$ {\bf fptr\_\-streamReaderRead})(void $\ast$, int fd)}} +\label{stream__reader_8h_a658a56ce1aa463cc7de51f42080ca24f} + + +Definition at line 6 of file stream\_\-reader.h. + + + +\subsection{Function Documentation} +\hypertarget{stream__reader_8h_a8a8ae2e5ad974a747042b5dd70e31ca8}{ +\index{stream\_\-reader.h@{stream\_\-reader.h}!streamReaderRead@{streamReaderRead}} +\index{streamReaderRead@{streamReaderRead}!stream_reader.h@{stream\_\-reader.h}} +\subsubsection[{streamReaderRead}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t streamReaderRead ( +\begin{DoxyParamCaption} +\item[{void $\ast$}]{, } +\item[{int}]{fd} +\end{DoxyParamCaption} +)}} +\label{stream__reader_8h_a8a8ae2e5ad974a747042b5dd70e31ca8} + + +Definition at line 10 of file stream\_\-reader.c. + + +\begin{DoxyCode} +{ + size_t ret; + + RETCALL(object, StreamReader, read, ret, fd); + + return ret; +} +\end{DoxyCode} diff --git a/docs/latex/stream__reader_8h__incl.dot b/docs/latex/stream__reader_8h__incl.dot new file mode 100644 index 0000000..e65c698 --- /dev/null +++ b/docs/latex/stream__reader_8h__incl.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="include/interface/stream_reader.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="sys/types.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/stream__reader_8h__incl.md5 b/docs/latex/stream__reader_8h__incl.md5 new file mode 100644 index 0000000..451a3db --- /dev/null +++ b/docs/latex/stream__reader_8h__incl.md5 @@ -0,0 +1 @@ +cd75f61cfe073ac9988b9bb4a3d47b0a \ No newline at end of file diff --git a/docs/latex/structHttpRequest.tex b/docs/latex/structHttpRequest.tex new file mode 100644 index 0000000..6f7d059 --- /dev/null +++ b/docs/latex/structHttpRequest.tex @@ -0,0 +1,112 @@ +\hypertarget{structHttpRequest}{ +\section{HttpRequest Struct Reference} +\label{structHttpRequest}\index{HttpRequest@{HttpRequest}} +} + + +{\ttfamily \#include $<$request.h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +char $\ast$ \hyperlink{structHttpRequest_ab9bfe4f569e5cbcbf49d4b8377d254a2}{http\_\-version} +\item +char $\ast$ \hyperlink{structHttpRequest_a3f880540d72ba70d88f8a312b256b7c9}{uri} +\item +char $\ast$ \hyperlink{structHttpRequest_a266c616e67dea85335c9fcfca6e5c0cb}{method} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +struct \{\\ +\>char $\ast$ \hyperlink{structHttpRequest_a6b66dcc28e31a61cc2f9f0b462f6ea18}{name}\\ +\>char $\ast$ \hyperlink{structHttpRequest_a333e4fbf77305e59196c2ebd59cf6b65}{value}\\ +\} \hyperlink{structHttpRequest_ab0abc660d76e3b9a169bddd4a92ffd52}{header} \mbox{[}128\mbox{]}\\ + +\end{tabbing}\item +char $\ast$ \hyperlink{structHttpRequest_a4064a72196787ee73d246b117de2a7ef}{body} +\item +char \hyperlink{structHttpRequest_a3cda82352767cf9f1c2a665ec2638a70}{done} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 6 of file request.h. + + + +\subsection{Field Documentation} +\hypertarget{structHttpRequest_a4064a72196787ee73d246b117de2a7ef}{ +\index{HttpRequest@{HttpRequest}!body@{body}} +\index{body@{body}!HttpRequest@{HttpRequest}} +\subsubsection[{body}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::body}}} +\label{structHttpRequest_a4064a72196787ee73d246b117de2a7ef} + + +Definition at line 34 of file request.h. + +\hypertarget{structHttpRequest_a3cda82352767cf9f1c2a665ec2638a70}{ +\index{HttpRequest@{HttpRequest}!done@{done}} +\index{done@{done}!HttpRequest@{HttpRequest}} +\subsubsection[{done}]{\setlength{\rightskip}{0pt plus 5cm}char {\bf HttpRequest::done}}} +\label{structHttpRequest_a3cda82352767cf9f1c2a665ec2638a70} + + +Definition at line 35 of file request.h. + +\hypertarget{structHttpRequest_ab0abc660d76e3b9a169bddd4a92ffd52}{ +\index{HttpRequest@{HttpRequest}!header@{header}} +\index{header@{header}!HttpRequest@{HttpRequest}} +\subsubsection[{header}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} {\bf HttpRequest::header}\mbox{[}128\mbox{]}}} +\label{structHttpRequest_ab0abc660d76e3b9a169bddd4a92ffd52} +\hypertarget{structHttpRequest_ab9bfe4f569e5cbcbf49d4b8377d254a2}{ +\index{HttpRequest@{HttpRequest}!http\_\-version@{http\_\-version}} +\index{http\_\-version@{http\_\-version}!HttpRequest@{HttpRequest}} +\subsubsection[{http\_\-version}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::http\_\-version}}} +\label{structHttpRequest_ab9bfe4f569e5cbcbf49d4b8377d254a2} + + +Definition at line 25 of file request.h. + +\hypertarget{structHttpRequest_a266c616e67dea85335c9fcfca6e5c0cb}{ +\index{HttpRequest@{HttpRequest}!method@{method}} +\index{method@{method}!HttpRequest@{HttpRequest}} +\subsubsection[{method}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::method}}} +\label{structHttpRequest_a266c616e67dea85335c9fcfca6e5c0cb} + + +Definition at line 27 of file request.h. + +\hypertarget{structHttpRequest_a6b66dcc28e31a61cc2f9f0b462f6ea18}{ +\index{HttpRequest@{HttpRequest}!name@{name}} +\index{name@{name}!HttpRequest@{HttpRequest}} +\subsubsection[{name}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::name}}} +\label{structHttpRequest_a6b66dcc28e31a61cc2f9f0b462f6ea18} + + +Definition at line 30 of file request.h. + +\hypertarget{structHttpRequest_a3f880540d72ba70d88f8a312b256b7c9}{ +\index{HttpRequest@{HttpRequest}!uri@{uri}} +\index{uri@{uri}!HttpRequest@{HttpRequest}} +\subsubsection[{uri}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::uri}}} +\label{structHttpRequest_a3f880540d72ba70d88f8a312b256b7c9} + + +Definition at line 26 of file request.h. + +\hypertarget{structHttpRequest_a333e4fbf77305e59196c2ebd59cf6b65}{ +\index{HttpRequest@{HttpRequest}!value@{value}} +\index{value@{value}!HttpRequest@{HttpRequest}} +\subsubsection[{value}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequest::value}}} +\label{structHttpRequest_a333e4fbf77305e59196c2ebd59cf6b65} + + +Definition at line 31 of file request.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/http/\hyperlink{request_8h}{request.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structHttpRequestParser.tex b/docs/latex/structHttpRequestParser.tex new file mode 100644 index 0000000..5fa5cec --- /dev/null +++ b/docs/latex/structHttpRequestParser.tex @@ -0,0 +1,84 @@ +\hypertarget{structHttpRequestParser}{ +\section{HttpRequestParser Struct Reference} +\label{structHttpRequestParser}\index{HttpRequestParser@{HttpRequestParser}} +} + + +{\ttfamily \#include $<$request\_\-parser.h$>$} + + + +Collaboration diagram for HttpRequestParser: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +char $\ast$ \hyperlink{structHttpRequestParser_a6c93a89e984f6ee2c7f52bfa281c2f94}{buffer} +\item +size\_\-t \hyperlink{structHttpRequestParser_a8c978afebc23adea883f35699d0b1421}{buffer\_\-used} +\item +size\_\-t \hyperlink{structHttpRequestParser_aa969bc054c7215c626abecdc2b0e4b31}{buffer\_\-size} +\item +\hyperlink{structHttpRequestQueue}{HttpRequestQueue} \hyperlink{structHttpRequestParser_a5106282e74d88ab2238d5a1e11e1877a}{request\_\-queue} +\item +\hyperlink{request__parser_8h_acaccfe3e34d50afe26e415749f7f4827}{HttpRequestState} \hyperlink{structHttpRequestParser_a8b0173db304820355cc8764e57cc5b63}{state} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 18 of file request\_\-parser.h. + + + +\subsection{Field Documentation} +\hypertarget{structHttpRequestParser_a6c93a89e984f6ee2c7f52bfa281c2f94}{ +\index{HttpRequestParser@{HttpRequestParser}!buffer@{buffer}} +\index{buffer@{buffer}!HttpRequestParser@{HttpRequestParser}} +\subsubsection[{buffer}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf HttpRequestParser::buffer}}} +\label{structHttpRequestParser_a6c93a89e984f6ee2c7f52bfa281c2f94} + + +Definition at line 32 of file request\_\-parser.h. + +\hypertarget{structHttpRequestParser_aa969bc054c7215c626abecdc2b0e4b31}{ +\index{HttpRequestParser@{HttpRequestParser}!buffer\_\-size@{buffer\_\-size}} +\index{buffer\_\-size@{buffer\_\-size}!HttpRequestParser@{HttpRequestParser}} +\subsubsection[{buffer\_\-size}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t {\bf HttpRequestParser::buffer\_\-size}}} +\label{structHttpRequestParser_aa969bc054c7215c626abecdc2b0e4b31} + + +Definition at line 34 of file request\_\-parser.h. + +\hypertarget{structHttpRequestParser_a8c978afebc23adea883f35699d0b1421}{ +\index{HttpRequestParser@{HttpRequestParser}!buffer\_\-used@{buffer\_\-used}} +\index{buffer\_\-used@{buffer\_\-used}!HttpRequestParser@{HttpRequestParser}} +\subsubsection[{buffer\_\-used}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t {\bf HttpRequestParser::buffer\_\-used}}} +\label{structHttpRequestParser_a8c978afebc23adea883f35699d0b1421} + + +Definition at line 33 of file request\_\-parser.h. + +\hypertarget{structHttpRequestParser_a5106282e74d88ab2238d5a1e11e1877a}{ +\index{HttpRequestParser@{HttpRequestParser}!request\_\-queue@{request\_\-queue}} +\index{request\_\-queue@{request\_\-queue}!HttpRequestParser@{HttpRequestParser}} +\subsubsection[{request\_\-queue}]{\setlength{\rightskip}{0pt plus 5cm}{\bf HttpRequestQueue} {\bf HttpRequestParser::request\_\-queue}}} +\label{structHttpRequestParser_a5106282e74d88ab2238d5a1e11e1877a} + + +Definition at line 36 of file request\_\-parser.h. + +\hypertarget{structHttpRequestParser_a8b0173db304820355cc8764e57cc5b63}{ +\index{HttpRequestParser@{HttpRequestParser}!state@{state}} +\index{state@{state}!HttpRequestParser@{HttpRequestParser}} +\subsubsection[{state}]{\setlength{\rightskip}{0pt plus 5cm}{\bf HttpRequestState} {\bf HttpRequestParser::state}}} +\label{structHttpRequestParser_a8b0173db304820355cc8764e57cc5b63} + + +Definition at line 37 of file request\_\-parser.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/http/\hyperlink{request__parser_8h}{request\_\-parser.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structHttpRequestParser__coll__graph.dot b/docs/latex/structHttpRequestParser__coll__graph.dot new file mode 100644 index 0000000..b65aa33 --- /dev/null +++ b/docs/latex/structHttpRequestParser__coll__graph.dot @@ -0,0 +1,11 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{HttpRequestParser\n|+ buffer\l+ buffer_used\l+ buffer_size\l+ request_queue\l+ state\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="request_queue",arrowtail="open"]; + Node2 [label="{HttpRequestQueue\n|+ requests\l+ nrequests\l|}",height=0.2,width=0.4,color="black",URL="$structHttpRequestQueue.html"]; + Node3 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="requests",arrowtail="open"]; + Node3 [label="{HttpRequest\n|+ http_version\l+ uri\l+ method\l+ name\l+ value\l+ header\l+ body\l+ done\l|}",height=0.2,width=0.4,color="black",URL="$structHttpRequest.html"]; +} diff --git a/docs/latex/structHttpRequestParser__coll__graph.md5 b/docs/latex/structHttpRequestParser__coll__graph.md5 new file mode 100644 index 0000000..4c9c4e4 --- /dev/null +++ b/docs/latex/structHttpRequestParser__coll__graph.md5 @@ -0,0 +1 @@ +9be2998aa64fdf5147b62d3c20e3cd37 \ No newline at end of file diff --git a/docs/latex/structHttpRequestQueue.tex b/docs/latex/structHttpRequestQueue.tex new file mode 100644 index 0000000..210156b --- /dev/null +++ b/docs/latex/structHttpRequestQueue.tex @@ -0,0 +1,51 @@ +\hypertarget{structHttpRequestQueue}{ +\section{HttpRequestQueue Struct Reference} +\label{structHttpRequestQueue}\index{HttpRequestQueue@{HttpRequestQueue}} +} + + +{\ttfamily \#include $<$request\_\-queue.h$>$} + + + +Collaboration diagram for HttpRequestQueue: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{structHttpRequest}{HttpRequest} \hyperlink{structHttpRequestQueue_a9413ed3fe003274c47618adde5335164}{requests} \mbox{[}HTTP\_\-REQUEST\_\-QUEUE\_\-MAX\mbox{]} +\item +size\_\-t \hyperlink{structHttpRequestQueue_a2bd08c36442f90e82b29b09f54a08682}{nrequests} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 10 of file request\_\-queue.h. + + + +\subsection{Field Documentation} +\hypertarget{structHttpRequestQueue_a2bd08c36442f90e82b29b09f54a08682}{ +\index{HttpRequestQueue@{HttpRequestQueue}!nrequests@{nrequests}} +\index{nrequests@{nrequests}!HttpRequestQueue@{HttpRequestQueue}} +\subsubsection[{nrequests}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t {\bf HttpRequestQueue::nrequests}}} +\label{structHttpRequestQueue_a2bd08c36442f90e82b29b09f54a08682} + + +Definition at line 21 of file request\_\-queue.h. + +\hypertarget{structHttpRequestQueue_a9413ed3fe003274c47618adde5335164}{ +\index{HttpRequestQueue@{HttpRequestQueue}!requests@{requests}} +\index{requests@{requests}!HttpRequestQueue@{HttpRequestQueue}} +\subsubsection[{requests}]{\setlength{\rightskip}{0pt plus 5cm}{\bf HttpRequest} {\bf HttpRequestQueue::requests}\mbox{[}HTTP\_\-REQUEST\_\-QUEUE\_\-MAX\mbox{]}}} +\label{structHttpRequestQueue_a9413ed3fe003274c47618adde5335164} + + +Definition at line 20 of file request\_\-queue.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/http/\hyperlink{request__queue_8h}{request\_\-queue.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structHttpRequestQueue__coll__graph.dot b/docs/latex/structHttpRequestQueue__coll__graph.dot new file mode 100644 index 0000000..d66a539 --- /dev/null +++ b/docs/latex/structHttpRequestQueue__coll__graph.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{HttpRequestQueue\n|+ requests\l+ nrequests\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="requests",arrowtail="open"]; + Node2 [label="{HttpRequest\n|+ http_version\l+ uri\l+ method\l+ name\l+ value\l+ header\l+ body\l+ done\l|}",height=0.2,width=0.4,color="black",URL="$structHttpRequest.html"]; +} diff --git a/docs/latex/structHttpRequestQueue__coll__graph.md5 b/docs/latex/structHttpRequestQueue__coll__graph.md5 new file mode 100644 index 0000000..9c5a44b --- /dev/null +++ b/docs/latex/structHttpRequestQueue__coll__graph.md5 @@ -0,0 +1 @@ +44a33f7d4e5f3c68fc04a9e23d4c9741 \ No newline at end of file diff --git a/docs/latex/structLogger.tex b/docs/latex/structLogger.tex new file mode 100644 index 0000000..e8a576f --- /dev/null +++ b/docs/latex/structLogger.tex @@ -0,0 +1,37 @@ +\hypertarget{structLogger}{ +\section{Logger Struct Reference} +\label{structLogger}\index{Logger@{Logger}} +} + + +{\ttfamily \#include $<$logger.h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{logger_8h_a63296c69f4b9bf51d6756a5d2c482d1e}{logger\_\-level} \hyperlink{structLogger_ae0e2ee030c14c5ef01dc0d1568c6fd3f}{min\_\-level} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 19 of file logger.h. + + + +\subsection{Field Documentation} +\hypertarget{structLogger_ae0e2ee030c14c5ef01dc0d1568c6fd3f}{ +\index{Logger@{Logger}!min\_\-level@{min\_\-level}} +\index{min\_\-level@{min\_\-level}!Logger@{Logger}} +\subsubsection[{min\_\-level}]{\setlength{\rightskip}{0pt plus 5cm}{\bf logger\_\-level} {\bf Logger::min\_\-level}}} +\label{structLogger_ae0e2ee030c14c5ef01dc0d1568c6fd3f} + + +Definition at line 36 of file logger.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{logger_8h}{logger.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structLoggerStderr.tex b/docs/latex/structLoggerStderr.tex new file mode 100644 index 0000000..4ee6da3 --- /dev/null +++ b/docs/latex/structLoggerStderr.tex @@ -0,0 +1,37 @@ +\hypertarget{structLoggerStderr}{ +\section{LoggerStderr Struct Reference} +\label{structLoggerStderr}\index{LoggerStderr@{LoggerStderr}} +} + + +{\ttfamily \#include $<$logger.h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{structLoggerStderr_a533c72d4344f76a26516ac903651297a}{EXTENDS} (\hyperlink{structLogger}{Logger}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 39 of file logger.h. + + + +\subsection{Member Function Documentation} +\hypertarget{structLoggerStderr_a533c72d4344f76a26516ac903651297a}{ +\index{LoggerStderr@{LoggerStderr}!EXTENDS@{EXTENDS}} +\index{EXTENDS@{EXTENDS}!LoggerStderr@{LoggerStderr}} +\subsubsection[{EXTENDS}]{\setlength{\rightskip}{0pt plus 5cm}LoggerStderr::EXTENDS ( +\begin{DoxyParamCaption} +\item[{{\bf Logger}}]{} +\end{DoxyParamCaption} +)}} +\label{structLoggerStderr_a533c72d4344f76a26516ac903651297a} + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{logger_8h}{logger.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structLoggerSyslog.tex b/docs/latex/structLoggerSyslog.tex new file mode 100644 index 0000000..b125827 --- /dev/null +++ b/docs/latex/structLoggerSyslog.tex @@ -0,0 +1,37 @@ +\hypertarget{structLoggerSyslog}{ +\section{LoggerSyslog Struct Reference} +\label{structLoggerSyslog}\index{LoggerSyslog@{LoggerSyslog}} +} + + +{\ttfamily \#include $<$logger.h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{structLoggerSyslog_a116fa3bce3c65fc1fdd0a2b1f6a15011}{EXTENDS} (\hyperlink{structLogger}{Logger}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 55 of file logger.h. + + + +\subsection{Member Function Documentation} +\hypertarget{structLoggerSyslog_a116fa3bce3c65fc1fdd0a2b1f6a15011}{ +\index{LoggerSyslog@{LoggerSyslog}!EXTENDS@{EXTENDS}} +\index{EXTENDS@{EXTENDS}!LoggerSyslog@{LoggerSyslog}} +\subsubsection[{EXTENDS}]{\setlength{\rightskip}{0pt plus 5cm}LoggerSyslog::EXTENDS ( +\begin{DoxyParamCaption} +\item[{{\bf Logger}}]{} +\end{DoxyParamCaption} +)}} +\label{structLoggerSyslog_a116fa3bce3c65fc1fdd0a2b1f6a15011} + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{logger_8h}{logger.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structServer.tex b/docs/latex/structServer.tex new file mode 100644 index 0000000..c281b5c --- /dev/null +++ b/docs/latex/structServer.tex @@ -0,0 +1,137 @@ +\hypertarget{structServer}{ +\section{Server Struct Reference} +\label{structServer}\index{Server@{Server}} +} + + +{\ttfamily \#include $<$server.h$>$} + + + +Collaboration diagram for Server: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{structLogger}{Logger} \hyperlink{structServer_ab50b5b20130564ba7e9a12032070882f}{logger} +\item +\hyperlink{structSock}{Sock} \hyperlink{structServer_a4cdc9c048a3a1846683fdedc2269c0f8}{sock} +\item +void $\ast$ \hyperlink{structServer_a241c1cbc117f318453934fa10c2c4a23}{reader} +\item +nfds\_\-t \hyperlink{structServer_a156e386a6d4c73e6233531706a091fb3}{nfds} +\item +nfds\_\-t \hyperlink{structServer_a88eb6b108b1d22967076fc1d9e21c4d4}{ndel} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +struct \{\\ +\>\hyperlink{structSock}{Sock} \hyperlink{structServer_a4cdc9c048a3a1846683fdedc2269c0f8}{sock}\\ +\>void $\ast$ \hyperlink{structServer_a241c1cbc117f318453934fa10c2c4a23}{reader}\\ +\>char \hyperlink{structServer_a8914561393eb8d570a2cfb5348b6aeb7}{wbuf} \mbox{[}2048\mbox{]}\\ +\>char $\ast$ \hyperlink{structServer_a898e067058a6db3a8d5cf3968fc79c8a}{rbuf}\\ +\>unsigned int \hyperlink{structServer_af39a8d40450b5c6a947be2c1a95c0943}{rpos}\\ +\>unsigned int \hyperlink{structServer_a95e4cdf2ef584a6709f794d58d9190b3}{wpos}\\ +\} \hyperlink{structServer_a269c01ae6736206cdd9a5e1d5ad2398b}{conns} \mbox{[}POLL\_FD\_NSIZE\mbox{]}\\ + +\end{tabbing}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 24 of file server.h. + + + +\subsection{Field Documentation} +\hypertarget{structServer_a269c01ae6736206cdd9a5e1d5ad2398b}{ +\index{Server@{Server}!conns@{conns}} +\index{conns@{conns}!Server@{Server}} +\subsubsection[{conns}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} {\bf Server::conns}\mbox{[}POLL\_\-FD\_\-NSIZE\mbox{]}}} +\label{structServer_a269c01ae6736206cdd9a5e1d5ad2398b} +\hypertarget{structServer_ab50b5b20130564ba7e9a12032070882f}{ +\index{Server@{Server}!logger@{logger}} +\index{logger@{logger}!Server@{Server}} +\subsubsection[{logger}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Logger} {\bf Server::logger}}} +\label{structServer_ab50b5b20130564ba7e9a12032070882f} + + +Definition at line 60 of file server.h. + +\hypertarget{structServer_a88eb6b108b1d22967076fc1d9e21c4d4}{ +\index{Server@{Server}!ndel@{ndel}} +\index{ndel@{ndel}!Server@{Server}} +\subsubsection[{ndel}]{\setlength{\rightskip}{0pt plus 5cm}nfds\_\-t {\bf Server::ndel}}} +\label{structServer_a88eb6b108b1d22967076fc1d9e21c4d4} + + +Definition at line 73 of file server.h. + +\hypertarget{structServer_a156e386a6d4c73e6233531706a091fb3}{ +\index{Server@{Server}!nfds@{nfds}} +\index{nfds@{nfds}!Server@{Server}} +\subsubsection[{nfds}]{\setlength{\rightskip}{0pt plus 5cm}nfds\_\-t {\bf Server::nfds}}} +\label{structServer_a156e386a6d4c73e6233531706a091fb3} +loeschen: fds\mbox{[}i\mbox{]}.event auf 0 dann nfds um die anzahl der geloeschten elemente verkleinern. die in close pending stehenden socket schliessen. vor jedem poll qsort auf fds ueber event. nach dem poll qsort auf fds ueber revent und reuckgebewert von poll beruecksichtigen. + +Definition at line 72 of file server.h. + +\hypertarget{structServer_a898e067058a6db3a8d5cf3968fc79c8a}{ +\index{Server@{Server}!rbuf@{rbuf}} +\index{rbuf@{rbuf}!Server@{Server}} +\subsubsection[{rbuf}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf Server::rbuf}}} +\label{structServer_a898e067058a6db3a8d5cf3968fc79c8a} + + +Definition at line 81 of file server.h. + +\hypertarget{structServer_a241c1cbc117f318453934fa10c2c4a23}{ +\index{Server@{Server}!reader@{reader}} +\index{reader@{reader}!Server@{Server}} +\subsubsection[{reader}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf Server::reader}}} +\label{structServer_a241c1cbc117f318453934fa10c2c4a23} + + +Definition at line 62 of file server.h. + +\hypertarget{structServer_af39a8d40450b5c6a947be2c1a95c0943}{ +\index{Server@{Server}!rpos@{rpos}} +\index{rpos@{rpos}!Server@{Server}} +\subsubsection[{rpos}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int {\bf Server::rpos}}} +\label{structServer_af39a8d40450b5c6a947be2c1a95c0943} + + +Definition at line 82 of file server.h. + +\hypertarget{structServer_a4cdc9c048a3a1846683fdedc2269c0f8}{ +\index{Server@{Server}!sock@{sock}} +\index{sock@{sock}!Server@{Server}} +\subsubsection[{sock}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Sock} {\bf Server::sock}}} +\label{structServer_a4cdc9c048a3a1846683fdedc2269c0f8} + + +Definition at line 61 of file server.h. + +\hypertarget{structServer_a8914561393eb8d570a2cfb5348b6aeb7}{ +\index{Server@{Server}!wbuf@{wbuf}} +\index{wbuf@{wbuf}!Server@{Server}} +\subsubsection[{wbuf}]{\setlength{\rightskip}{0pt plus 5cm}char {\bf Server::wbuf}\mbox{[}2048\mbox{]}}} +\label{structServer_a8914561393eb8d570a2cfb5348b6aeb7} + + +Definition at line 80 of file server.h. + +\hypertarget{structServer_a95e4cdf2ef584a6709f794d58d9190b3}{ +\index{Server@{Server}!wpos@{wpos}} +\index{wpos@{wpos}!Server@{Server}} +\subsubsection[{wpos}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int {\bf Server::wpos}}} +\label{structServer_a95e4cdf2ef584a6709f794d58d9190b3} + + +Definition at line 83 of file server.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{server_8h}{server.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structServer__coll__graph.dot b/docs/latex/structServer__coll__graph.dot new file mode 100644 index 0000000..c9c6eba --- /dev/null +++ b/docs/latex/structServer__coll__graph.dot @@ -0,0 +1,12 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{Server\n|+ logger\l+ sock\l+ reader\l+ nfds\l+ ndel\l+ wbuf\l+ rbuf\l+ rpos\l+ wpos\l+ conns\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="sock",arrowtail="open"]; + Node2 [label="{Sock\n|+ log\l+ port\l+ handle\l|}",height=0.2,width=0.4,color="black",URL="$structSock.html"]; + Node3 -> Node2 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="log",arrowtail="open"]; + Node3 [label="{Logger\n|+ min_level\l|}",height=0.2,width=0.4,color="black",URL="$structLogger.html"]; + Node3 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="logger",arrowtail="open"]; +} diff --git a/docs/latex/structServer__coll__graph.md5 b/docs/latex/structServer__coll__graph.md5 new file mode 100644 index 0000000..6380bff --- /dev/null +++ b/docs/latex/structServer__coll__graph.md5 @@ -0,0 +1 @@ +d8808721040ff98e07313b8031cf9656 \ No newline at end of file diff --git a/docs/latex/structSock.tex b/docs/latex/structSock.tex new file mode 100644 index 0000000..7af73e8 --- /dev/null +++ b/docs/latex/structSock.tex @@ -0,0 +1,62 @@ +\hypertarget{structSock}{ +\section{Sock Struct Reference} +\label{structSock}\index{Sock@{Sock}} +} + + +{\ttfamily \#include $<$socket.h$>$} + + + +Collaboration diagram for Sock: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{structLogger}{Logger} \hyperlink{structSock_a7441b6368f3e778b5da7554a4f5a7eb6}{log} +\item +in\_\-port\_\-t \hyperlink{structSock_a29ba0820a4596f40009a514d7cb82f39}{port} +\item +int \hyperlink{structSock_a1b5945aef923a906501d7abac82449c3}{handle} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 9 of file socket.h. + + + +\subsection{Field Documentation} +\hypertarget{structSock_a1b5945aef923a906501d7abac82449c3}{ +\index{Sock@{Sock}!handle@{handle}} +\index{handle@{handle}!Sock@{Sock}} +\subsubsection[{handle}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf Sock::handle}}} +\label{structSock_a1b5945aef923a906501d7abac82449c3} + + +Definition at line 29 of file socket.h. + +\hypertarget{structSock_a7441b6368f3e778b5da7554a4f5a7eb6}{ +\index{Sock@{Sock}!log@{log}} +\index{log@{log}!Sock@{Sock}} +\subsubsection[{log}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Logger} {\bf Sock::log}}} +\label{structSock_a7441b6368f3e778b5da7554a4f5a7eb6} + + +Definition at line 26 of file socket.h. + +\hypertarget{structSock_a29ba0820a4596f40009a514d7cb82f39}{ +\index{Sock@{Sock}!port@{port}} +\index{port@{port}!Sock@{Sock}} +\subsubsection[{port}]{\setlength{\rightskip}{0pt plus 5cm}in\_\-port\_\-t {\bf Sock::port}}} +\label{structSock_a29ba0820a4596f40009a514d7cb82f39} + + +Definition at line 27 of file socket.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{socket_8h}{socket.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structSock__coll__graph.dot b/docs/latex/structSock__coll__graph.dot new file mode 100644 index 0000000..3ed333c --- /dev/null +++ b/docs/latex/structSock__coll__graph.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{Sock\n|+ log\l+ port\l+ handle\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="log",arrowtail="open"]; + Node2 [label="{Logger\n|+ min_level\l|}",height=0.2,width=0.4,color="black",URL="$structLogger.html"]; +} diff --git a/docs/latex/structSock__coll__graph.md5 b/docs/latex/structSock__coll__graph.md5 new file mode 100644 index 0000000..db37269 --- /dev/null +++ b/docs/latex/structSock__coll__graph.md5 @@ -0,0 +1 @@ +f6141196087b85a4744564eb4d4bf5a0 \ No newline at end of file diff --git a/docs/latex/structclass.tex b/docs/latex/structclass.tex new file mode 100644 index 0000000..26dbc5e --- /dev/null +++ b/docs/latex/structclass.tex @@ -0,0 +1,73 @@ +\hypertarget{structclass}{ +\section{class Struct Reference} +\label{structclass}\index{class@{class}} +} + + +{\ttfamily \#include $<$class.h$>$} + + + +Collaboration diagram for class: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +const int \hyperlink{structclass_a395a6874758c92188945df7c070f5ff1}{magic} +\item +\hyperlink{structclass}{class\_\-ptr} \hyperlink{structclass_a97f697cb86be7a39d4477e971074ae6e}{parent} +\item +size\_\-t \hyperlink{structclass_a31f0b35f94229885e948d55bac214c0d}{object\_\-size} +\item +\hyperlink{class_8h_aa0ba47bce818b20155a8ef17a1fdc35c}{fptr\_\-classInit} \hyperlink{structclass_a744967ad02b74a9464c1224c7fa05b23}{init} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 77 of file class.h. + + + +\subsection{Field Documentation} +\hypertarget{structclass_a744967ad02b74a9464c1224c7fa05b23}{ +\index{class@{class}!init@{init}} +\index{init@{init}!class@{class}} +\subsubsection[{init}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-classInit} {\bf class::init}}} +\label{structclass_a744967ad02b74a9464c1224c7fa05b23} + + +Definition at line 81 of file class.h. + +\hypertarget{structclass_a395a6874758c92188945df7c070f5ff1}{ +\index{class@{class}!magic@{magic}} +\index{magic@{magic}!class@{class}} +\subsubsection[{magic}]{\setlength{\rightskip}{0pt plus 5cm}const int {\bf class::magic}}} +\label{structclass_a395a6874758c92188945df7c070f5ff1} + + +Definition at line 78 of file class.h. + +\hypertarget{structclass_a31f0b35f94229885e948d55bac214c0d}{ +\index{class@{class}!object\_\-size@{object\_\-size}} +\index{object\_\-size@{object\_\-size}!class@{class}} +\subsubsection[{object\_\-size}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t {\bf class::object\_\-size}}} +\label{structclass_a31f0b35f94229885e948d55bac214c0d} + + +Definition at line 80 of file class.h. + +\hypertarget{structclass_a97f697cb86be7a39d4477e971074ae6e}{ +\index{class@{class}!parent@{parent}} +\index{parent@{parent}!class@{class}} +\subsubsection[{parent}]{\setlength{\rightskip}{0pt plus 5cm}{\bf class\_\-ptr} {\bf class::parent}}} +\label{structclass_a97f697cb86be7a39d4477e971074ae6e} + + +Definition at line 79 of file class.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{class_8h}{class.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structclass__coll__graph.dot b/docs/latex/structclass__coll__graph.dot new file mode 100644 index 0000000..d516a51 --- /dev/null +++ b/docs/latex/structclass__coll__graph.dot @@ -0,0 +1,8 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{class\n|+ magic\l+ parent\l+ object_size\l+ init\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="parent",arrowtail="open"]; +} diff --git a/docs/latex/structclass__coll__graph.md5 b/docs/latex/structclass__coll__graph.md5 new file mode 100644 index 0000000..4d218d2 --- /dev/null +++ b/docs/latex/structclass__coll__graph.md5 @@ -0,0 +1 @@ +e7435c01bd06a73b4e9a129f0611c38a \ No newline at end of file diff --git a/docs/latex/structi__Class.tex b/docs/latex/structi__Class.tex new file mode 100644 index 0000000..af0a02b --- /dev/null +++ b/docs/latex/structi__Class.tex @@ -0,0 +1,73 @@ +\hypertarget{structi__Class}{ +\section{i\_\-Class Struct Reference} +\label{structi__Class}\index{i\_\-Class@{i\_\-Class}} +} + + +{\ttfamily \#include $<$class.h$>$} + + + +Collaboration diagram for i\_\-Class: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} $\ast$const \hyperlink{structi__Class_a988da6337fdaa9c14010c864c628555c}{\_\-} +\item +\hyperlink{interface_2class_8h_a207fe2c25aae0b91e9df60b0ece4217e}{fptr\_\-ctor} \hyperlink{structi__Class_ace20a21c57a14d2846cfd061002970f4}{ctor} +\item +\hyperlink{interface_2class_8h_a59366634eecbace7ae9c8c5e65199c91}{fptr\_\-dtor} \hyperlink{structi__Class_aced52ce163499af9cc7de1ae979e0ee2}{dtor} +\item +\hyperlink{interface_2class_8h_a6d852b3640eeb6ef8a3d776b87736392}{fptr\_\-clone} \hyperlink{structi__Class_ad3af0db4f258c8af23f62e14283bff43}{clone} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15 of file class.h. + + + +\subsection{Field Documentation} +\hypertarget{structi__Class_a988da6337fdaa9c14010c864c628555c}{ +\index{i\_\-Class@{i\_\-Class}!\_\-@{\_\-}} +\index{\_\-@{\_\-}!i_Class@{i\_\-Class}} +\subsubsection[{\_\-}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ const {\bf i\_\-Class::\_\-}}} +\label{structi__Class_a988da6337fdaa9c14010c864c628555c} + + +Definition at line 16 of file class.h. + +\hypertarget{structi__Class_ad3af0db4f258c8af23f62e14283bff43}{ +\index{i\_\-Class@{i\_\-Class}!clone@{clone}} +\index{clone@{clone}!i_Class@{i\_\-Class}} +\subsubsection[{clone}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-clone} {\bf i\_\-Class::clone}}} +\label{structi__Class_ad3af0db4f258c8af23f62e14283bff43} + + +Definition at line 19 of file class.h. + +\hypertarget{structi__Class_ace20a21c57a14d2846cfd061002970f4}{ +\index{i\_\-Class@{i\_\-Class}!ctor@{ctor}} +\index{ctor@{ctor}!i_Class@{i\_\-Class}} +\subsubsection[{ctor}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-ctor} {\bf i\_\-Class::ctor}}} +\label{structi__Class_ace20a21c57a14d2846cfd061002970f4} + + +Definition at line 17 of file class.h. + +\hypertarget{structi__Class_aced52ce163499af9cc7de1ae979e0ee2}{ +\index{i\_\-Class@{i\_\-Class}!dtor@{dtor}} +\index{dtor@{dtor}!i_Class@{i\_\-Class}} +\subsubsection[{dtor}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-dtor} {\bf i\_\-Class::dtor}}} +\label{structi__Class_aced52ce163499af9cc7de1ae979e0ee2} + + +Definition at line 18 of file class.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/interface/\hyperlink{interface_2class_8h}{class.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structi__Class__coll__graph.dot b/docs/latex/structi__Class__coll__graph.dot new file mode 100644 index 0000000..b2142b0 --- /dev/null +++ b/docs/latex/structi__Class__coll__graph.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{i_Class\n|+ _\l+ ctor\l+ dtor\l+ clone\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="_",arrowtail="open"]; + Node2 [label="{interface\n|+ name\l+ nmethods\l|}",height=0.2,width=0.4,color="black",URL="$structinterface.html"]; +} diff --git a/docs/latex/structi__Class__coll__graph.md5 b/docs/latex/structi__Class__coll__graph.md5 new file mode 100644 index 0000000..ed2ea33 --- /dev/null +++ b/docs/latex/structi__Class__coll__graph.md5 @@ -0,0 +1 @@ +98b7fa135f0f0ccf6da06ec25f249444 \ No newline at end of file diff --git a/docs/latex/structi__Logger.tex b/docs/latex/structi__Logger.tex new file mode 100644 index 0000000..a7a3cef --- /dev/null +++ b/docs/latex/structi__Logger.tex @@ -0,0 +1,51 @@ +\hypertarget{structi__Logger}{ +\section{i\_\-Logger Struct Reference} +\label{structi__Logger}\index{i\_\-Logger@{i\_\-Logger}} +} + + +{\ttfamily \#include $<$logger.h$>$} + + + +Collaboration diagram for i\_\-Logger: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} $\ast$const \hyperlink{structi__Logger_a4e6025014bd73827bbb1c3e3dd571160}{\_\-} +\item +\hyperlink{interface_2logger_8h_a4dcd041363da34329e1c9442c98a273e}{fptr\_\-log} \hyperlink{structi__Logger_ac8380d02d5fb624d46df64e0c8a4e236}{log} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 13 of file logger.h. + + + +\subsection{Field Documentation} +\hypertarget{structi__Logger_a4e6025014bd73827bbb1c3e3dd571160}{ +\index{i\_\-Logger@{i\_\-Logger}!\_\-@{\_\-}} +\index{\_\-@{\_\-}!i_Logger@{i\_\-Logger}} +\subsubsection[{\_\-}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ const {\bf i\_\-Logger::\_\-}}} +\label{structi__Logger_a4e6025014bd73827bbb1c3e3dd571160} + + +Definition at line 14 of file logger.h. + +\hypertarget{structi__Logger_ac8380d02d5fb624d46df64e0c8a4e236}{ +\index{i\_\-Logger@{i\_\-Logger}!log@{log}} +\index{log@{log}!i_Logger@{i\_\-Logger}} +\subsubsection[{log}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-log} {\bf i\_\-Logger::log}}} +\label{structi__Logger_ac8380d02d5fb624d46df64e0c8a4e236} + + +Definition at line 15 of file logger.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/interface/\hyperlink{interface_2logger_8h}{logger.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structi__Logger__coll__graph.dot b/docs/latex/structi__Logger__coll__graph.dot new file mode 100644 index 0000000..9bcb9a5 --- /dev/null +++ b/docs/latex/structi__Logger__coll__graph.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{i_Logger\n|+ _\l+ log\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="_",arrowtail="open"]; + Node2 [label="{interface\n|+ name\l+ nmethods\l|}",height=0.2,width=0.4,color="black",URL="$structinterface.html"]; +} diff --git a/docs/latex/structi__Logger__coll__graph.md5 b/docs/latex/structi__Logger__coll__graph.md5 new file mode 100644 index 0000000..ae99750 --- /dev/null +++ b/docs/latex/structi__Logger__coll__graph.md5 @@ -0,0 +1 @@ +91f14fb435f59097c771a24ee15146b3 \ No newline at end of file diff --git a/docs/latex/structi__StreamReader.tex b/docs/latex/structi__StreamReader.tex new file mode 100644 index 0000000..13906db --- /dev/null +++ b/docs/latex/structi__StreamReader.tex @@ -0,0 +1,51 @@ +\hypertarget{structi__StreamReader}{ +\section{i\_\-StreamReader Struct Reference} +\label{structi__StreamReader}\index{i\_\-StreamReader@{i\_\-StreamReader}} +} + + +{\ttfamily \#include $<$stream\_\-reader.h$>$} + + + +Collaboration diagram for i\_\-StreamReader: +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{structinterface}{interface} $\ast$const \hyperlink{structi__StreamReader_ac1a75d5e8f7932c13f1575805f097a4a}{\_\-} +\item +\hyperlink{stream__reader_8h_a658a56ce1aa463cc7de51f42080ca24f}{fptr\_\-streamReaderRead} \hyperlink{structi__StreamReader_ae27c6977fb19bd1199316d8724b1c693}{read} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 10 of file stream\_\-reader.h. + + + +\subsection{Field Documentation} +\hypertarget{structi__StreamReader_ac1a75d5e8f7932c13f1575805f097a4a}{ +\index{i\_\-StreamReader@{i\_\-StreamReader}!\_\-@{\_\-}} +\index{\_\-@{\_\-}!i_StreamReader@{i\_\-StreamReader}} +\subsubsection[{\_\-}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf interface}$\ast$ const {\bf i\_\-StreamReader::\_\-}}} +\label{structi__StreamReader_ac1a75d5e8f7932c13f1575805f097a4a} + + +Definition at line 11 of file stream\_\-reader.h. + +\hypertarget{structi__StreamReader_ae27c6977fb19bd1199316d8724b1c693}{ +\index{i\_\-StreamReader@{i\_\-StreamReader}!read@{read}} +\index{read@{read}!i_StreamReader@{i\_\-StreamReader}} +\subsubsection[{read}]{\setlength{\rightskip}{0pt plus 5cm}{\bf fptr\_\-streamReaderRead} {\bf i\_\-StreamReader::read}}} +\label{structi__StreamReader_ae27c6977fb19bd1199316d8724b1c693} + + +Definition at line 12 of file stream\_\-reader.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/interface/\hyperlink{stream__reader_8h}{stream\_\-reader.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structi__StreamReader__coll__graph.dot b/docs/latex/structi__StreamReader__coll__graph.dot new file mode 100644 index 0000000..380df07 --- /dev/null +++ b/docs/latex/structi__StreamReader__coll__graph.dot @@ -0,0 +1,9 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="{i_StreamReader\n|+ _\l+ read\l|}",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node2 -> Node1 [dir=back,color="darkorchid3",fontsize="10",style="dashed",label="_",arrowtail="open"]; + Node2 [label="{interface\n|+ name\l+ nmethods\l|}",height=0.2,width=0.4,color="black",URL="$structinterface.html"]; +} diff --git a/docs/latex/structi__StreamReader__coll__graph.md5 b/docs/latex/structi__StreamReader__coll__graph.md5 new file mode 100644 index 0000000..0143499 --- /dev/null +++ b/docs/latex/structi__StreamReader__coll__graph.md5 @@ -0,0 +1 @@ +be25c3522d6d846a82a92b9f20df079c \ No newline at end of file diff --git a/docs/latex/structiface__impl.tex b/docs/latex/structiface__impl.tex new file mode 100644 index 0000000..88d2662 --- /dev/null +++ b/docs/latex/structiface__impl.tex @@ -0,0 +1,59 @@ +\hypertarget{structiface__impl}{ +\section{iface\_\-impl Struct Reference} +\label{structiface__impl}\index{iface\_\-impl@{iface\_\-impl}} +} + + +{\ttfamily \#include $<$interface.h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +const size\_\-t \hyperlink{structiface__impl_af2eaa008e863bdef373ed0c6fa26722b}{nimpl} +\item +char \hyperlink{structiface__impl_a9ee4589aed892fb213117b692e63e302}{simpl} +\item +const void $\ast$ \hyperlink{structiface__impl_a4f3e0d7f7bbd7e3f98472a140c37c1ea}{impl} \mbox{[}MAX\_\-IFACE\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 28 of file interface.h. + + + +\subsection{Field Documentation} +\hypertarget{structiface__impl_a4f3e0d7f7bbd7e3f98472a140c37c1ea}{ +\index{iface\_\-impl@{iface\_\-impl}!impl@{impl}} +\index{impl@{impl}!iface_impl@{iface\_\-impl}} +\subsubsection[{impl}]{\setlength{\rightskip}{0pt plus 5cm}const void$\ast$ {\bf iface\_\-impl::impl}\mbox{[}MAX\_\-IFACE\mbox{]}}} +\label{structiface__impl_a4f3e0d7f7bbd7e3f98472a140c37c1ea} + + +Definition at line 31 of file interface.h. + +\hypertarget{structiface__impl_af2eaa008e863bdef373ed0c6fa26722b}{ +\index{iface\_\-impl@{iface\_\-impl}!nimpl@{nimpl}} +\index{nimpl@{nimpl}!iface_impl@{iface\_\-impl}} +\subsubsection[{nimpl}]{\setlength{\rightskip}{0pt plus 5cm}const size\_\-t {\bf iface\_\-impl::nimpl}}} +\label{structiface__impl_af2eaa008e863bdef373ed0c6fa26722b} + + +Definition at line 29 of file interface.h. + +\hypertarget{structiface__impl_a9ee4589aed892fb213117b692e63e302}{ +\index{iface\_\-impl@{iface\_\-impl}!simpl@{simpl}} +\index{simpl@{simpl}!iface_impl@{iface\_\-impl}} +\subsubsection[{simpl}]{\setlength{\rightskip}{0pt plus 5cm}char {\bf iface\_\-impl::simpl}}} +\label{structiface__impl_a9ee4589aed892fb213117b692e63e302} + + +Definition at line 30 of file interface.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{interface_8h}{interface.h}\end{DoxyCompactItemize} diff --git a/docs/latex/structinterface.tex b/docs/latex/structinterface.tex new file mode 100644 index 0000000..461aa84 --- /dev/null +++ b/docs/latex/structinterface.tex @@ -0,0 +1,48 @@ +\hypertarget{structinterface}{ +\section{interface Struct Reference} +\label{structinterface}\index{interface@{interface}} +} + + +{\ttfamily \#include $<$interface.h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +const char $\ast$ \hyperlink{structinterface_aee0f8e8ed8b404d358a6da91196da0d9}{name} +\item +const size\_\-t \hyperlink{structinterface_a7efc08a40bdff0c29b10594c7148168f}{nmethods} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 22 of file interface.h. + + + +\subsection{Field Documentation} +\hypertarget{structinterface_aee0f8e8ed8b404d358a6da91196da0d9}{ +\index{interface@{interface}!name@{name}} +\index{name@{name}!interface@{interface}} +\subsubsection[{name}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ {\bf interface::name}}} +\label{structinterface_aee0f8e8ed8b404d358a6da91196da0d9} + + +Definition at line 23 of file interface.h. + +\hypertarget{structinterface_a7efc08a40bdff0c29b10594c7148168f}{ +\index{interface@{interface}!nmethods@{nmethods}} +\index{nmethods@{nmethods}!interface@{interface}} +\subsubsection[{nmethods}]{\setlength{\rightskip}{0pt plus 5cm}const size\_\-t {\bf interface::nmethods}}} +\label{structinterface_a7efc08a40bdff0c29b10594c7148168f} + + +Definition at line 24 of file interface.h. + + + +The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize} +\item +include/\hyperlink{interface_8h}{interface.h}\end{DoxyCompactItemize} diff --git a/docs/latex/syslog_8c.tex b/docs/latex/syslog_8c.tex new file mode 100644 index 0000000..914a6f6 --- /dev/null +++ b/docs/latex/syslog_8c.tex @@ -0,0 +1,39 @@ +\hypertarget{syslog_8c}{ +\section{src/logger/syslog.c File Reference} +\label{syslog_8c}\index{src/logger/syslog.c@{src/logger/syslog.c}} +} +{\ttfamily \#include $<$syslog.h$>$}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/logger.h\char`\"{}}\par +Include dependency graph for syslog.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{syslog_8c_aaf569dba91297bc3e203e7ad7f9c90f8}{INIT\_\-IFACE} (\hyperlink{structLogger}{Logger}, logSyslog) +\item +\hyperlink{syslog_8c_a86d902d1f3ac6c51e9e184744b37f7e3}{CREATE\_\-CLASS} (\hyperlink{structLoggerSyslog}{LoggerSyslog}, \hyperlink{structLogger}{Logger}, IFACE(\hyperlink{structLogger}{Logger})) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{syslog_8c_a86d902d1f3ac6c51e9e184744b37f7e3}{ +\index{syslog.c@{syslog.c}!CREATE\_\-CLASS@{CREATE\_\-CLASS}} +\index{CREATE\_\-CLASS@{CREATE\_\-CLASS}!syslog.c@{syslog.c}} +\subsubsection[{CREATE\_\-CLASS}]{\setlength{\rightskip}{0pt plus 5cm}CREATE\_\-CLASS ( +\begin{DoxyParamCaption} +\item[{{\bf LoggerSyslog}}]{, } +\item[{{\bf Logger}}]{, } +\item[{IFACE({\bf Logger})}]{} +\end{DoxyParamCaption} +)}} +\label{syslog_8c_a86d902d1f3ac6c51e9e184744b37f7e3} +\hypertarget{syslog_8c_aaf569dba91297bc3e203e7ad7f9c90f8}{ +\index{syslog.c@{syslog.c}!INIT\_\-IFACE@{INIT\_\-IFACE}} +\index{INIT\_\-IFACE@{INIT\_\-IFACE}!syslog.c@{syslog.c}} +\subsubsection[{INIT\_\-IFACE}]{\setlength{\rightskip}{0pt plus 5cm}INIT\_\-IFACE ( +\begin{DoxyParamCaption} +\item[{{\bf Logger}}]{, } +\item[{logSyslog}]{} +\end{DoxyParamCaption} +)}} +\label{syslog_8c_aaf569dba91297bc3e203e7ad7f9c90f8} diff --git a/docs/latex/syslog_8c__incl.dot b/docs/latex/syslog_8c__incl.dot new file mode 100644 index 0000000..b9d5156 --- /dev/null +++ b/docs/latex/syslog_8c__incl.dot @@ -0,0 +1,13 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/logger/syslog.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="syslog.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="interface/logger.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/syslog_8c__incl.md5 b/docs/latex/syslog_8c__incl.md5 new file mode 100644 index 0000000..45c15e2 --- /dev/null +++ b/docs/latex/syslog_8c__incl.md5 @@ -0,0 +1 @@ +1957c89e2cab59f16261638ee9e985b5 \ No newline at end of file diff --git a/docs/latex/testserver_8c.tex b/docs/latex/testserver_8c.tex new file mode 100644 index 0000000..6f3e873 --- /dev/null +++ b/docs/latex/testserver_8c.tex @@ -0,0 +1,58 @@ +\hypertarget{testserver_8c}{ +\section{src/testserver.c File Reference} +\label{testserver_8c}\index{src/testserver.c@{src/testserver.c}} +} +{\ttfamily \#include $<$stdio.h$>$}\par +{\ttfamily \#include $<$socket.h$>$}\par +{\ttfamily \#include $<$string.h$>$}\par +{\ttfamily \#include \char`\"{}server.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}logger.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}http/request\_\-parser.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}signalHandling.h\char`\"{}}\par +{\ttfamily \#include \char`\"{}interface/class.h\char`\"{}}\par +Include dependency graph for testserver.c: +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4}{main} () +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\hypertarget{testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4}{ +\index{testserver.c@{testserver.c}!main@{main}} +\index{main@{main}!testserver.c@{testserver.c}} +\subsubsection[{main}]{\setlength{\rightskip}{0pt plus 5cm}int main ( +\begin{DoxyParamCaption} +{} +\end{DoxyParamCaption} +)}} +\label{testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4} + + +Definition at line 14 of file testserver.c. + + +\begin{DoxyCode} +{ + Logger logger = new(LoggerStderr, LOGGER_INFO); + HttpRequestParser parser = new(HttpRequestParser); + Server server = new(Server, logger, parser, 11212, SOMAXCONN); + + //Server server = new(Server, logger, parser, 11212, 20); + + init_signals(); + serverRun(server); + + delete(&server); + delete(&logger); + delete(&parser); + + return 0; +} +\end{DoxyCode} + + +Here is the call graph for this function: + + diff --git a/docs/latex/testserver_8c__incl.dot b/docs/latex/testserver_8c__incl.dot new file mode 100644 index 0000000..a485b22 --- /dev/null +++ b/docs/latex/testserver_8c__incl.dot @@ -0,0 +1,23 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="src/testserver.c",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="stdio.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="socket.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="string.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="server.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="logger.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid"]; + Node7 [label="http/request_parser.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid"]; + Node8 [label="signalHandling.h",height=0.2,width=0.4,color="grey75"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid"]; + Node9 [label="interface/class.h",height=0.2,width=0.4,color="grey75"]; +} diff --git a/docs/latex/testserver_8c__incl.md5 b/docs/latex/testserver_8c__incl.md5 new file mode 100644 index 0000000..a251679 --- /dev/null +++ b/docs/latex/testserver_8c__incl.md5 @@ -0,0 +1 @@ +18fca92f2360ddadc5f6815e99240563 \ No newline at end of file diff --git a/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot b/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot new file mode 100644 index 0000000..fe12cc1 --- /dev/null +++ b/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.dot @@ -0,0 +1,18 @@ +digraph G +{ + bgcolor="transparent"; + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir=LR; + Node1 [label="main",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid"]; + Node2 [label="init_signals",height=0.2,width=0.4,color="black",URL="$signalHandling_8h.html#a1de31bdef82f181f8045b94ae0933916"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid"]; + Node3 [label="terminate",height=0.2,width=0.4,color="black",URL="$signalHandling_8h.html#a64612b9588ed0fb05d70680db02b3630"]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid"]; + Node4 [label="serverRun",height=0.2,width=0.4,color="black",URL="$server_8h.html#a67a4d9073b80d8ae1459fb11ddd23675"]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid"]; + Node5 [label="loggerLog",height=0.2,width=0.4,color="black",URL="$interface_2logger_8h.html#ae9f8662ec8b300dcfb5064906937553e"]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid"]; + Node6 [label="serverCloseConn",height=0.2,width=0.4,color="black",URL="$server_8h.html#a81f787254ea87cbc851d292e5a7d195d"]; +} diff --git a/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 b/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 new file mode 100644 index 0000000..8bd453c --- /dev/null +++ b/docs/latex/testserver_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 @@ -0,0 +1 @@ +b8fcefbc2234eef5ab76d80a87b473d0 \ No newline at end of file