From 7367cd8fad770cea19a80b85755938772483ca5f Mon Sep 17 00:00:00 2001 From: Alex Macocian Date: Mon, 16 Sep 2019 08:51:01 +0300 Subject: [PATCH] Included generated doxy documents --- MTSC/MTSC.csproj | 6 +- docs/MTSC_Logo_small.png | Bin 0 -> 10814 bytes docs/annotated.html | 165 ++ docs/annotated_dup.js | 4 + docs/bc_s.png | Bin 0 -> 657 bytes docs/bdwn.png | Bin 0 -> 145 bytes docs/classes.html | 137 ++ docs/closed.png | Bin 0 -> 135 bytes ...ceptions_1_1_invalid_header_exception.html | 143 ++ ...exceptions_1_1_invalid_header_exception.js | 7 + ...xceptions_1_1_invalid_header_exception.png | Bin 0 -> 697 bytes ..._c_1_1_server_1_1_client_data-members.html | 114 ++ ...odules_1_1_chat_module__inherit__graph.dot | 9 + ...odules_1_1_chat_module__inherit__graph.md5 | 1 + ...ent_modules_1_1_i_http_module-members.html | 110 + ...ging_1_1_debug_console_logger-members.html | 111 ++ ...d_first_byte_exception__inherit__graph.dot | 9 + ...d_first_byte_exception__inherit__graph.md5 | 1 + .../d0/da0/_websocket_message_8cs_source.html | 122 ++ ...ver_modules_1_1_i_http_module-members.html | 111 ++ ..._1_1_exception_console_logger-members.html | 110 + ...handlers_1_1_http_handler__coll__graph.dot | 9 + ...handlers_1_1_http_handler__coll__graph.md5 | 1 + ...ndlers_2_websocket_handler_8cs_source.html | 130 ++ ...websocket_format_exception_8cs_source.html | 109 + ...1_1_encryption_handler__inherit__graph.dot | 9 + ...1_1_encryption_handler__inherit__graph.md5 | 1 + .../d56/namespace_m_t_s_c_1_1_exceptions.html | 147 ++ .../d56/namespace_m_t_s_c_1_1_exceptions.js | 15 + ...dlers_1_1_http_handler__inherit__graph.dot | 9 + ...dlers_1_1_http_handler__inherit__graph.md5 | 1 + .../_invalid_header_exception_8cs_source.html | 109 + ...es_1_1_hello_world_module__coll__graph.dot | 9 + ...es_1_1_hello_world_module__coll__graph.md5 | 1 + ...odules_1_1_hello_world_module-members.html | 108 + ...d_request_u_r_i_exception__coll__graph.dot | 9 + ...d_request_u_r_i_exception__coll__graph.md5 | 1 + ...1_1_i_websocket_module__inherit__graph.dot | 12 + ...1_1_i_websocket_module__inherit__graph.md5 | 1 + ..._1_1_websocket_handler__inherit__graph.dot | 9 + ..._1_1_websocket_handler__inherit__graph.md5 | 1 + ...3-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html | 107 + docs/d2/d29/_echo_module_8cs_source.html | 123 ++ ..._invalid_header_exception__coll__graph.dot | 9 + ..._invalid_header_exception__coll__graph.md5 | 1 + ...on_1_1_web_sockets_1_1_server_modules.html | 119 ++ ...mmon_1_1_web_sockets_1_1_server_modules.js | 6 + ...e60-4077-877b-f7221da3dda1_8cs_source.html | 107 + ...rs_1_1_encryption_handler__coll__graph.dot | 9 + ...rs_1_1_encryption_handler__coll__graph.md5 | 1 + ...nvalid_http_version_exception-members.html | 113 ++ ...m_t_s_c_1_1_client_1_1_client-members.html | 125 ++ ...namespace_m_t_s_c_1_1_common_1_1_http.html | 116 ++ .../namespace_m_t_s_c_1_1_common_1_1_http.js | 6 + .../dfb/_debug_console_logger_8cs_source.html | 112 ++ ...r_1_1_handlers_1_1_encryption_handler.html | 167 ++ ...ver_1_1_handlers_1_1_encryption_handler.js | 4 + ...er_1_1_handlers_1_1_encryption_handler.png | Bin 0 -> 859 bytes ...nt_1_1_handlers_1_1_i_handler-members.html | 115 ++ ...er_1_1_handlers_1_1_i_handler-members.html | 115 ++ .../d3f/_hello_world_module_8cs_source.html | 120 ++ docs/d3/d41/_http404_module_8cs_source.html | 120 ++ ...dlers_2_encryption_handler_8cs_source.html | 120 ++ ..._2_m_t_s_c_8_assembly_info_8cs_source.html | 107 + ...ns_1_1_invalid_http_version_exception.html | 143 ++ ...ions_1_1_invalid_http_version_exception.js | 7 + ...ons_1_1_invalid_http_version_exception.png | Bin 0 -> 823 bytes .../class_m_t_s_c_1_1_server_1_1_server.html | 696 +++++++ .../class_m_t_s_c_1_1_server_1_1_server.js | 22 + ...ent_2_handlers_2_i_handler_8cs_source.html | 117 ++ docs/d3/d97/namespace_m_t_s_c_1_1_server.html | 120 ++ docs/d3/d97/namespace_m_t_s_c_1_1_server.js | 6 + ...tions_1_1_i_exception_handler-members.html | 110 + ..._2_m_t_s_c_8_assembly_info_8cs_source.html | 107 + ...ules_1_1_i_http_module__inherit__graph.dot | 14 + ...ules_1_1_i_http_module__inherit__graph.md5 | 1 + docs/d3/dc6/namespace_m_t_s_c_1_1_client.html | 117 ++ docs/d3/dc6/namespace_m_t_s_c_1_1_client.js | 5 + docs/d3/de1/_i_logger_8cs_source.html | 111 ++ .../df4/_i_exception_handler_8cs_source.html | 110 + ...id_websocket_format_exception-members.html | 113 ++ ...ons_1_1_no_data_exception__coll__graph.dot | 9 + ...ons_1_1_no_data_exception__coll__graph.md5 | 1 + ...ts_1_1_server_modules_1_1_echo_module.html | 132 ++ ...kets_1_1_server_modules_1_1_echo_module.js | 4 + ...ets_1_1_server_modules_1_1_echo_module.png | Bin 0 -> 1230 bytes docs/d4/d2e/_console_logger_8cs_source.html | 112 ++ ..._1_1_method_invalid_exception-members.html | 113 ++ ...ing_1_1_console_logger__inherit__graph.dot | 9 + ...ing_1_1_console_logger__inherit__graph.md5 | 1 + ...3-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html | 107 + ...ules_1_1_broadcast_module__coll__graph.dot | 9 + ...ules_1_1_broadcast_module__coll__graph.md5 | 1 + ...space_m_t_s_c_1_1_server_1_1_handlers.html | 127 ++ ...mespace_m_t_s_c_1_1_server_1_1_handlers.js | 8 + ...id_http_version_exception__coll__graph.dot | 9 + ...id_http_version_exception__coll__graph.md5 | 1 + ...ss_m_t_s_c_1_1_server_1_1_client_data.html | 143 ++ ...lass_m_t_s_c_1_1_server_1_1_client_data.js | 8 + ...1_server_modules_1_1_broadcast_module.html | 128 ++ ..._1_server_modules_1_1_broadcast_module.png | Bin 0 -> 1247 bytes ...1_1_encryption_handler__inherit__graph.dot | 9 + ...1_1_encryption_handler__inherit__graph.md5 | 1 + ...dules_2_i_websocket_module_8cs_source.html | 120 ++ ...handlers_1_1_i_handler__inherit__graph.dot | 16 + ...handlers_1_1_i_handler__inherit__graph.md5 | 1 + ..._1_1_websocket_handler__inherit__graph.dot | 9 + ..._1_1_websocket_handler__inherit__graph.md5 | 1 + ..._client_1_1_handlers_1_1_http_handler.html | 207 ++ ..._1_client_1_1_handlers_1_1_http_handler.js | 6 + ...1_client_1_1_handlers_1_1_http_handler.png | Bin 0 -> 761 bytes ..._1_1_client_modules_1_1_i_http_module.html | 162 ++ ...tp_1_1_client_modules_1_1_i_http_module.js | 4 + docs/d5/d6c/_helper_functions_8cs_source.html | 108 + ...andlers_1_1_websocket_handler-members.html | 113 ++ docs/d5/d98/_http_message_8cs_source.html | 130 ++ ...eptions_1_1_no_data_exception-members.html | 113 ++ ...r_modules_1_1_echo_module__coll__graph.dot | 9 + ...r_modules_1_1_echo_module__coll__graph.md5 | 1 + ...nvalid_post_form_exception_8cs_source.html | 109 + ...valid_request_u_r_i_exception-members.html | 113 ++ ..._server_1_1_handlers_1_1_http_handler.html | 207 ++ ..._1_server_1_1_handlers_1_1_http_handler.js | 6 + ...1_server_1_1_handlers_1_1_http_handler.png | Bin 0 -> 796 bytes ...andlers_1_1_broadcast_handler-members.html | 111 ++ ..._1_1_broadcast_handler__inherit__graph.dot | 9 + ..._1_1_broadcast_handler__inherit__graph.md5 | 1 + ..._1_logging_1_1_console_logger-members.html | 111 ++ ..._1_1_debug_console_logger__coll__graph.dot | 9 + ..._1_1_debug_console_logger__coll__graph.md5 | 1 + ...lid_status_code_exception__coll__graph.dot | 9 + ...lid_status_code_exception__coll__graph.md5 | 1 + ..._1_invalid_websocket_format_exception.html | 139 ++ ..._1_1_invalid_websocket_format_exception.js | 7 + ...1_1_invalid_websocket_format_exception.png | Bin 0 -> 884 bytes ...server_modules_1_1_hello_world_module.html | 128 ++ ..._server_modules_1_1_hello_world_module.png | Bin 0 -> 1109 bytes ...s_1_1_invalid_request_u_r_i_exception.html | 143 ++ ...ons_1_1_invalid_request_u_r_i_exception.js | 7 + ...ns_1_1_invalid_request_u_r_i_exception.png | Bin 0 -> 797 bytes ...face_m_t_s_c_1_1_logging_1_1_i_logger.html | 199 ++ ...erface_m_t_s_c_1_1_logging_1_1_i_logger.js | 5 + ...rface_m_t_s_c_1_1_logging_1_1_i_logger.png | Bin 0 -> 1077 bytes .../d6/dda/_no_data_exception_8cs_source.html | 109 + ...dlers_2_encryption_handler_8cs_source.html | 122 ++ ...ions_1_1_invalid_first_byte_exception.html | 143 ++ ...ptions_1_1_invalid_first_byte_exception.js | 7 + ...tions_1_1_invalid_first_byte_exception.png | Bin 0 -> 714 bytes ...id_post_form_exception__inherit__graph.dot | 9 + ...id_post_form_exception__inherit__graph.md5 | 1 + ...b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html | 107 + ...dules_2_i_websocket_module_8cs_source.html | 117 ++ ...erver_modules_1_1_echo_module-members.html | 110 + ...3-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html | 107 + docs/d7/dcd/namespace_m_t_s_c.html | 120 ++ docs/d7/dcd/namespace_m_t_s_c.js | 9 + ...e60-4077-877b-f7221da3dda1_8cs_source.html | 107 + ...ndlers_2_websocket_handler_8cs_source.html | 137 ++ ...1_logging_1_1_i_logger__inherit__graph.dot | 11 + ...1_logging_1_1_i_logger__inherit__graph.md5 | 1 + ...id_request_u_r_i_exception_8cs_source.html | 109 + ...ndlers_2_broadcast_handler_8cs_source.html | 118 ++ ...server_modules_1_1_file_server_module.html | 132 ++ ...1_server_modules_1_1_file_server_module.js | 4 + ..._server_modules_1_1_file_server_module.png | Bin 0 -> 1072 bytes ..._1_exceptions_1_1_i_exception_handler.html | 167 ++ ..._1_1_exceptions_1_1_i_exception_handler.js | 4 + ...1_1_exceptions_1_1_i_exception_handler.png | Bin 0 -> 1201 bytes ...e60-4077-877b-f7221da3dda1_8cs_source.html | 107 + ...b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html | 107 + ..._2_m_t_s_c_8_assembly_info_8cs_source.html | 107 + ...er_modules_1_1_http404_module-members.html | 108 + ...1_1_web_sockets_1_1_websocket_message.html | 400 ++++ ...n_1_1_web_sockets_1_1_websocket_message.js | 19 + ..._1_1_server_modules_1_1_i_http_module.html | 235 +++ ...tp_1_1_server_modules_1_1_i_http_module.js | 5 + ...p_1_1_server_modules_1_1_i_http_module.png | Bin 0 -> 1865 bytes ...ers_1_1_websocket_handler__coll__graph.dot | 9 + ...ers_1_1_websocket_handler__coll__graph.md5 | 1 + docs/d8/dba/_server_8cs_source.html | 143 ++ ...ocket_format_exception__inherit__graph.dot | 9 + ...ocket_format_exception__inherit__graph.md5 | 1 + ..._2_handlers_2_http_handler_8cs_source.html | 125 ++ ...ndlers_1_1_encryption_handler-members.html | 110 + ...m_t_s_c_1_1_server_1_1_server-members.html | 128 ++ ...ers_1_1_broadcast_handler__coll__graph.dot | 9 + ...ers_1_1_broadcast_handler__coll__graph.md5 | 1 + ..._1_1_broadcast_handler__inherit__graph.dot | 9 + ..._1_1_broadcast_handler__inherit__graph.md5 | 1 + ..._status_code_exception__inherit__graph.dot | 9 + ..._status_code_exception__inherit__graph.md5 | 1 + ...b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html | 107 + ...b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html | 107 + ...server_modules_1_1_i_websocket_module.html | 279 +++ ...1_server_modules_1_1_i_websocket_module.js | 6 + ..._server_modules_1_1_i_websocket_module.png | Bin 0 -> 1688 bytes ...tions_1_1_invalid_post_form_exception.html | 143 ++ ...eptions_1_1_invalid_post_form_exception.js | 7 + ...ptions_1_1_invalid_post_form_exception.png | Bin 0 -> 719 bytes ...e60-4077-877b-f7221da3dda1_8cs_source.html | 107 + ...handlers_1_1_http_handler__coll__graph.dot | 9 + ...handlers_1_1_http_handler__coll__graph.md5 | 1 + ...t_modules_1_1_chat_module__coll__graph.dot | 9 + ...t_modules_1_1_chat_module__coll__graph.md5 | 1 + ...3-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html | 107 + ...ons_1_1_exception_thrower__coll__graph.dot | 9 + ...ons_1_1_exception_thrower__coll__graph.md5 | 1 + ...s_1_1_broadcast_module__inherit__graph.dot | 9 + ...s_1_1_broadcast_module__inherit__graph.md5 | 1 + ...1_1_hello_world_module__inherit__graph.dot | 9 + ...1_1_hello_world_module__inherit__graph.md5 | 1 + ...odules_1_1_i_websocket_module-members.html | 112 ++ ..._1_1_exceptions_1_1_no_data_exception.html | 139 ++ ..._c_1_1_exceptions_1_1_no_data_exception.js | 7 + ...c_1_1_exceptions_1_1_no_data_exception.png | Bin 0 -> 659 bytes ...1_1_server_1_1_handlers_1_1_i_handler.html | 390 ++++ ...c_1_1_server_1_1_handlers_1_1_i_handler.js | 9 + ..._1_1_server_1_1_handlers_1_1_i_handler.png | Bin 0 -> 1762 bytes ...space_m_t_s_c_1_1_client_1_1_handlers.html | 126 ++ ...mespace_m_t_s_c_1_1_client_1_1_handlers.js | 8 + ...odules_1_1_file_server_module-members.html | 110 + ...ndlers_1_1_encryption_handler-members.html | 110 + ..._1_common_1_1_http_1_1_client_modules.html | 115 ++ ..._1_1_common_1_1_http_1_1_client_modules.js | 4 + ...1_1_handlers_1_1_http_handler-members.html | 112 ++ ...er_1_1_handlers_1_1_websocket_handler.html | 293 +++ ...rver_1_1_handlers_1_1_websocket_handler.js | 14 + ...ver_1_1_handlers_1_1_websocket_handler.png | Bin 0 -> 837 bytes ..._1_1_logging_1_1_debug_console_logger.html | 198 ++ ..._c_1_1_logging_1_1_debug_console_logger.js | 5 + ...c_1_1_logging_1_1_debug_console_logger.png | Bin 0 -> 790 bytes ...er_modules_2_i_http_module_8cs_source.html | 120 ++ docs/db/d0f/_message_8cs_source.html | 109 + ...dlers_1_1_http_handler__inherit__graph.dot | 9 + ...dlers_1_1_http_handler__inherit__graph.md5 | 1 + .../_exception_console_logger_8cs_source.html | 111 ++ ...ers_1_1_websocket_handler__coll__graph.dot | 9 + ...ers_1_1_websocket_handler__coll__graph.md5 | 1 + docs/db/d43/_client_8cs_source.html | 137 ++ docs/db/d68/_broadcast_module_8cs_source.html | 123 ++ ...mon_1_1_http_1_1_http_message-members.html | 139 ++ ...ndlers_2_broadcast_handler_8cs_source.html | 122 ++ ...3-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html | 107 + ...invalid_status_code_exception-members.html | 113 ++ docs/db/dbd/_chat_module_8cs_source.html | 125 ++ ...ers_1_1_broadcast_handler__coll__graph.dot | 9 + ...ers_1_1_broadcast_handler__coll__graph.md5 | 1 + .../db/dbe/namespace_m_t_s_c_1_1_logging.html | 121 ++ docs/db/dbe/namespace_m_t_s_c_1_1_logging.js | 6 + docs/db/dca/namespace_m_t_s_c_1_1_common.html | 109 + docs/db/dca/namespace_m_t_s_c_1_1_common.js | 5 + ..._1_1_invalid_header_exception-members.html | 113 ++ .../struct_m_t_s_c_1_1_message-members.html | 112 ++ ..._1_1_no_data_exception__inherit__graph.dot | 9 + ..._1_1_no_data_exception__inherit__graph.md5 | 1 + ...ception_console_logger__inherit__graph.dot | 9 + ...ception_console_logger__inherit__graph.md5 | 1 + ...er_1_1_handlers_1_1_broadcast_handler.html | 132 ++ ...rver_1_1_handlers_1_1_broadcast_handler.js | 4 + ...ver_1_1_handlers_1_1_broadcast_handler.png | Bin 0 -> 842 bytes ..._modules_1_1_broadcast_module-members.html | 108 + ...nt_1_1_handlers_1_1_broadcast_handler.html | 197 ++ ...ient_1_1_handlers_1_1_broadcast_handler.js | 5 + ...ent_1_1_handlers_1_1_broadcast_handler.png | Bin 0 -> 799 bytes .../class_m_t_s_c_1_1_client_1_1_client.html | 498 +++++ .../class_m_t_s_c_1_1_client_1_1_client.js | 19 + ..._1_1_exceptions_1_1_exception_thrower.html | 168 ++ ..._c_1_1_exceptions_1_1_exception_thrower.js | 4 + ...c_1_1_exceptions_1_1_exception_thrower.png | Bin 0 -> 805 bytes ...odules_1_1_i_websocket_module-members.html | 112 ++ ...ver_2_handlers_2_i_handler_8cs_source.html | 118 ++ ...1_1_handlers_1_1_http_handler-members.html | 112 ++ ...1_debug_console_logger__inherit__graph.dot | 9 + ...1_debug_console_logger__inherit__graph.md5 | 1 + ...lient_modules_1_1_chat_module-members.html | 113 ++ ...alid_status_code_exception_8cs_source.html | 109 + ...1_1_server_modules_1_1_http404_module.html | 132 ++ ..._1_1_server_modules_1_1_http404_module.png | Bin 0 -> 1076 bytes docs/dc/dd4/struct_m_t_s_c_1_1_message.html | 133 ++ docs/dc/dd4/struct_m_t_s_c_1_1_message.js | 6 + ...client_modules_1_1_i_websocket_module.html | 262 +++ ...1_client_modules_1_1_i_websocket_module.js | 6 + ..._client_modules_1_1_i_websocket_module.png | Bin 0 -> 1213 bytes ...les_1_1_http404_module__inherit__graph.dot | 9 + ...les_1_1_http404_module__inherit__graph.md5 | 1 + ...valid_header_exception__inherit__graph.dot | 9 + ...valid_header_exception__inherit__graph.md5 | 1 + .../_communication_primitives_8cs_source.html | 108 + ...b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html | 107 + ..._invalid_first_byte_exception-members.html | 113 ++ ...1_invalid_post_form_exception-members.html | 113 ++ ..._2_m_t_s_c_8_assembly_info_8cs_source.html | 107 + ...handlers_1_1_i_handler__inherit__graph.dot | 16 + ...handlers_1_1_i_handler__inherit__graph.md5 | 1 + ...nt_modules_2_i_http_module_8cs_source.html | 117 ++ ...t_1_1_handlers_1_1_encryption_handler.html | 160 ++ ...ent_1_1_handlers_1_1_encryption_handler.js | 4 + ...nt_1_1_handlers_1_1_encryption_handler.png | Bin 0 -> 824 bytes ...odules_1_1_http404_module__coll__graph.dot | 9 + ...odules_1_1_http404_module__coll__graph.md5 | 1 + ...1_1_file_server_module__inherit__graph.dot | 9 + ...1_1_file_server_module__inherit__graph.md5 | 1 + ...es_1_1_file_server_module__coll__graph.dot | 9 + ...es_1_1_file_server_module__coll__graph.md5 | 1 + ..._1_1_exception_thrower__inherit__graph.dot | 9 + ..._1_1_exception_thrower__inherit__graph.md5 | 1 + ...ons_1_1_invalid_status_code_exception.html | 143 ++ ...tions_1_1_invalid_status_code_exception.js | 7 + ...ions_1_1_invalid_status_code_exception.png | Bin 0 -> 811 bytes ...ogging_1_1_console_logger__coll__graph.dot | 9 + ...ogging_1_1_console_logger__coll__graph.md5 | 1 + ...andlers_1_1_websocket_handler-members.html | 115 ++ ...thod_invalid_exception__inherit__graph.dot | 9 + ...thod_invalid_exception__inherit__graph.md5 | 1 + ..._2_m_t_s_c_8_assembly_info_8cs_source.html | 107 + .../de1/_file_server_module_8cs_source.html | 120 ++ ...valid_first_byte_exception_8cs_source.html | 109 + ..._method_invalid_exception__coll__graph.dot | 9 + ..._method_invalid_exception__coll__graph.md5 | 1 + .../de/d19/_exception_thrower_8cs_source.html | 111 ++ ...ebsocket_format_exception__coll__graph.dot | 9 + ...ebsocket_format_exception__coll__graph.md5 | 1 + ...lid_http_version_exception_8cs_source.html | 109 + ...valid_post_form_exception__coll__graph.dot | 9 + ...valid_post_form_exception__coll__graph.md5 | 1 + ...equest_u_r_i_exception__inherit__graph.dot | 9 + ...equest_u_r_i_exception__inherit__graph.md5 | 1 + ...odules_1_1_echo_module__inherit__graph.dot | 9 + ...odules_1_1_echo_module__inherit__graph.md5 | 1 + .../_method_invalid_exception_8cs_source.html | 109 + ..._1_i_exception_handler__inherit__graph.dot | 11 + ..._1_i_exception_handler__inherit__graph.md5 | 1 + ...ce_m_t_s_c_1_1_common_1_1_web_sockets.html | 117 ++ ...pace_m_t_s_c_1_1_common_1_1_web_sockets.js | 6 + ...ceptions_1_1_method_invalid_exception.html | 143 ++ ...exceptions_1_1_method_invalid_exception.js | 7 + ...xceptions_1_1_method_invalid_exception.png | Bin 0 -> 695 bytes ...sockets_1_1_websocket_message-members.html | 119 ++ ..._t_s_c_1_1_logging_1_1_console_logger.html | 201 ++ ..._m_t_s_c_1_1_logging_1_1_console_logger.js | 5 + ...m_t_s_c_1_1_logging_1_1_console_logger.png | Bin 0 -> 721 bytes ..._exception_console_logger__coll__graph.dot | 9 + ..._exception_console_logger__coll__graph.md5 | 1 + ...on_1_1_web_sockets_1_1_client_modules.html | 118 ++ ...mmon_1_1_web_sockets_1_1_client_modules.js | 5 + ...http_version_exception__inherit__graph.dot | 9 + ...http_version_exception__inherit__graph.md5 | 1 + ...nt_1_1_handlers_1_1_websocket_handler.html | 204 ++ ...ient_1_1_handlers_1_1_websocket_handler.js | 7 + ...ent_1_1_handlers_1_1_websocket_handler.png | Bin 0 -> 796 bytes ..._s_c_1_1_logging_1_1_i_logger-members.html | 111 ++ ...1_1_client_1_1_handlers_1_1_i_handler.html | 349 ++++ ...c_1_1_client_1_1_handlers_1_1_i_handler.js | 9 + ..._1_1_client_1_1_handlers_1_1_i_handler.png | Bin 0 -> 1654 bytes ...eptions_1_1_exception_thrower-members.html | 110 + ...e60-4077-877b-f7221da3dda1_8cs_source.html | 107 + ...1_1_i_websocket_module__inherit__graph.dot | 9 + ...1_1_i_websocket_module__inherit__graph.md5 | 1 + ...ceptions_1_1_exception_console_logger.html | 168 ++ ...exceptions_1_1_exception_console_logger.js | 4 + ...xceptions_1_1_exception_console_logger.png | Bin 0 -> 838 bytes ...rs_1_1_encryption_handler__coll__graph.dot | 9 + ...rs_1_1_encryption_handler__coll__graph.md5 | 1 + ...andlers_1_1_broadcast_handler-members.html | 110 + ..._2_handlers_2_http_handler_8cs_source.html | 126 ++ ...alid_first_byte_exception__coll__graph.dot | 9 + ...alid_first_byte_exception__coll__graph.md5 | 1 + ..._1_common_1_1_http_1_1_server_modules.html | 123 ++ ..._1_1_common_1_1_http_1_1_server_modules.js | 7 + ...ts_1_1_client_modules_1_1_chat_module.html | 142 ++ ...kets_1_1_client_modules_1_1_chat_module.js | 4 + ...ets_1_1_client_modules_1_1_chat_module.png | Bin 0 -> 1206 bytes ..._1_1_common_1_1_http_1_1_http_message.html | 906 +++++++++ ..._c_1_1_common_1_1_http_1_1_http_message.js | 135 ++ .../dir_060ae041221bd5ec93acd9997d59bc4a.html | 107 + docs/dir_060ae041221bd5ec93acd9997d59bc4a.js | 8 + .../dir_191ea0d58bc4aa76598804cf9a9a4081.html | 111 ++ docs/dir_191ea0d58bc4aa76598804cf9a9a4081.js | 6 + .../dir_1c549a8c0368fbf2d31a8f8dc0a70690.html | 107 + docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.js | 7 + .../dir_2b786a618fa1a35d0fa6c1f0a951f035.html | 111 ++ docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.js | 5 + .../dir_2bed625b8678336fd3428040269a7e1f.html | 107 + docs/dir_2bed625b8678336fd3428040269a7e1f.js | 5 + .../dir_358eb219223b877d278b694a4705d823.html | 111 ++ docs/dir_358eb219223b877d278b694a4705d823.js | 5 + .../dir_3c5620eb11971a15737f9176b123ece0.html | 107 + docs/dir_3c5620eb11971a15737f9176b123ece0.js | 4 + .../dir_3e6c9ca704d5ac39bea56d7971e0d054.html | 107 + docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.js | 6 + .../dir_3f72314963399eb45a5e5610bf0cc145.html | 111 ++ docs/dir_3f72314963399eb45a5e5610bf0cc145.js | 5 + .../dir_463cd4dabdde5d8586315ca59a2d23c1.html | 107 + docs/dir_463cd4dabdde5d8586315ca59a2d23c1.js | 7 + .../dir_57b0082ffa0af670f404eda33c530396.html | 107 + docs/dir_57b0082ffa0af670f404eda33c530396.js | 5 + .../dir_62d48bea4fe746cedac2516f67715e2f.html | 111 ++ docs/dir_62d48bea4fe746cedac2516f67715e2f.js | 4 + .../dir_70c99956df21f970f9dba0c1e1740f5c.html | 107 + docs/dir_70c99956df21f970f9dba0c1e1740f5c.js | 8 + .../dir_71304019a3d358fe52b6a8280ce6c97c.html | 107 + docs/dir_71304019a3d358fe52b6a8280ce6c97c.js | 7 + .../dir_7299b3d9bb46b9d6bcfef12b634e889c.html | 111 ++ docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.js | 5 + .../dir_9a2c1c90aeb7330df3888fc4e386572a.html | 107 + docs/dir_9a2c1c90aeb7330df3888fc4e386572a.js | 7 + .../dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html | 107 + docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.js | 6 + .../dir_aacd352a84a4f5db43a6bb63759aa0e5.html | 107 + docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.js | 15 + .../dir_d18f251565efce6e2c7efbad3e34f789.html | 111 ++ docs/dir_d18f251565efce6e2c7efbad3e34f789.js | 6 + .../dir_d2dabb60356392c82b7650f84b0a3306.html | 111 ++ docs/dir_d2dabb60356392c82b7650f84b0a3306.js | 6 + .../dir_d55ee0fc9b1e69611b98eb45cbf91143.html | 107 + docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.js | 7 + .../dir_dd7589cd703d467b08715c004924abac.html | 115 ++ docs/dir_dd7589cd703d467b08715c004924abac.js | 12 + .../dir_e1cb8f9b823681a26481b9089f7b7776.html | 107 + docs/dir_e1cb8f9b823681a26481b9089f7b7776.js | 7 + docs/doc.png | Bin 0 -> 876 bytes docs/doxygen.css | 1764 +++++++++++++++++ docs/doxygen.png | Bin 0 -> 3789 bytes docs/dynsections.js | 127 ++ docs/files.html | 195 ++ docs/files_dup.js | 4 + docs/folderclosed.png | Bin 0 -> 634 bytes docs/folderopen.png | Bin 0 -> 704 bytes docs/functions.html | 403 ++++ docs/functions_func.html | 337 ++++ docs/functions_prop.html | 158 ++ docs/graph_legend.dot | 23 + docs/graph_legend.html | 133 ++ docs/graph_legend.md5 | 1 + docs/hierarchy.html | 152 ++ docs/hierarchy.js | 53 + docs/index.html | 106 + docs/inherit_graph_0.dot | 8 + docs/inherit_graph_0.md5 | 1 + docs/inherit_graph_1.dot | 16 + docs/inherit_graph_1.md5 | 1 + docs/inherit_graph_10.dot | 12 + docs/inherit_graph_10.md5 | 1 + docs/inherit_graph_11.dot | 8 + docs/inherit_graph_11.md5 | 1 + docs/inherit_graph_12.dot | 8 + docs/inherit_graph_12.md5 | 1 + docs/inherit_graph_13.dot | 16 + docs/inherit_graph_13.md5 | 1 + docs/inherit_graph_14.dot | 8 + docs/inherit_graph_14.md5 | 1 + docs/inherit_graph_2.dot | 8 + docs/inherit_graph_2.md5 | 1 + docs/inherit_graph_3.dot | 8 + docs/inherit_graph_3.md5 | 1 + docs/inherit_graph_4.dot | 14 + docs/inherit_graph_4.md5 | 1 + docs/inherit_graph_5.dot | 10 + docs/inherit_graph_5.md5 | 1 + docs/inherit_graph_6.dot | 12 + docs/inherit_graph_6.md5 | 1 + docs/inherit_graph_7.dot | 8 + docs/inherit_graph_7.md5 | 1 + docs/inherit_graph_8.dot | 12 + docs/inherit_graph_8.md5 | 1 + docs/inherit_graph_9.dot | 26 + docs/inherit_graph_9.md5 | 1 + docs/inherits.html | 140 ++ docs/jquery.js | 87 + docs/menu.js | 50 + docs/menudata.js | 70 + docs/namespaces.html | 124 ++ docs/namespaces_dup.js | 4 + docs/nav_f.png | Bin 0 -> 173 bytes docs/nav_g.png | Bin 0 -> 95 bytes docs/nav_h.png | Bin 0 -> 100 bytes docs/navtree.css | 146 ++ docs/navtree.js | 540 +++++ docs/navtreedata.js | 53 + docs/navtreeindex0.js | 253 +++ docs/navtreeindex1.js | 195 ++ docs/open.png | Bin 0 -> 119 bytes docs/resize.js | 136 ++ docs/search/all_0.html | 30 + docs/search/all_0.js | 13 + docs/search/all_1.html | 30 + docs/search/all_1.js | 6 + docs/search/all_10.html | 30 + docs/search/all_10.js | 9 + docs/search/all_11.html | 30 + docs/search/all_11.js | 10 + docs/search/all_12.html | 30 + docs/search/all_12.js | 5 + docs/search/all_2.html | 30 + docs/search/all_2.js | 16 + docs/search/all_3.html | 30 + docs/search/all_3.js | 7 + docs/search/all_4.html | 30 + docs/search/all_4.js | 7 + docs/search/all_5.html | 30 + docs/search/all_5.js | 6 + docs/search/all_6.html | 30 + docs/search/all_6.js | 7 + docs/search/all_7.html | 30 + docs/search/all_7.js | 13 + docs/search/all_8.html | 30 + docs/search/all_8.js | 16 + docs/search/all_9.html | 30 + docs/search/all_9.js | 5 + docs/search/all_a.html | 30 + docs/search/all_a.js | 19 + docs/search/all_b.html | 30 + docs/search/all_b.js | 4 + docs/search/all_c.html | 30 + docs/search/all_c.js | 4 + docs/search/all_d.html | 30 + docs/search/all_d.js | 7 + docs/search/all_e.html | 30 + docs/search/all_e.js | 5 + docs/search/all_f.html | 30 + docs/search/all_f.js | 6 + docs/search/classes_0.html | 30 + docs/search/classes_0.js | 5 + docs/search/classes_1.html | 30 + docs/search/classes_1.js | 7 + docs/search/classes_2.html | 30 + docs/search/classes_2.js | 4 + docs/search/classes_3.html | 30 + docs/search/classes_3.js | 7 + docs/search/classes_4.html | 30 + docs/search/classes_4.js | 4 + docs/search/classes_5.html | 30 + docs/search/classes_5.js | 7 + docs/search/classes_6.html | 30 + docs/search/classes_6.js | 15 + docs/search/classes_7.html | 30 + docs/search/classes_7.js | 5 + docs/search/classes_8.html | 30 + docs/search/classes_8.js | 4 + docs/search/classes_9.html | 30 + docs/search/classes_9.js | 4 + docs/search/classes_a.html | 30 + docs/search/classes_a.js | 5 + docs/search/close.png | Bin 0 -> 273 bytes docs/search/functions_0.html | 30 + docs/search/functions_0.js | 13 + docs/search/functions_1.html | 30 + docs/search/functions_1.js | 5 + docs/search/functions_2.html | 30 + docs/search/functions_2.js | 10 + docs/search/functions_3.html | 30 + docs/search/functions_3.js | 5 + docs/search/functions_4.html | 30 + docs/search/functions_4.js | 4 + docs/search/functions_5.html | 30 + docs/search/functions_5.js | 7 + docs/search/functions_6.html | 30 + docs/search/functions_6.js | 9 + docs/search/functions_7.html | 30 + docs/search/functions_7.js | 4 + docs/search/functions_8.html | 30 + docs/search/functions_8.js | 5 + docs/search/functions_9.html | 30 + docs/search/functions_9.js | 6 + docs/search/functions_a.html | 30 + docs/search/functions_a.js | 5 + docs/search/functions_b.html | 30 + docs/search/functions_b.js | 5 + docs/search/functions_c.html | 30 + docs/search/functions_c.js | 8 + docs/search/functions_d.html | 30 + docs/search/functions_d.js | 4 + docs/search/functions_e.html | 30 + docs/search/functions_e.js | 4 + docs/search/mag_sel.png | Bin 0 -> 465 bytes docs/search/namespaces_0.html | 30 + docs/search/namespaces_0.js | 14 + docs/search/nomatches.html | 12 + docs/search/properties_0.html | 30 + docs/search/properties_0.js | 5 + docs/search/properties_1.html | 30 + docs/search/properties_1.js | 4 + docs/search/properties_2.html | 30 + docs/search/properties_2.js | 5 + docs/search/properties_3.html | 30 + docs/search/properties_3.js | 6 + docs/search/properties_4.html | 30 + docs/search/properties_4.js | 4 + docs/search/properties_5.html | 30 + docs/search/properties_5.js | 4 + docs/search/properties_6.html | 30 + docs/search/properties_6.js | 4 + docs/search/properties_7.html | 30 + docs/search/properties_7.js | 4 + docs/search/properties_8.html | 30 + docs/search/properties_8.js | 9 + docs/search/search.css | 271 +++ docs/search/search.js | 814 ++++++++ docs/search/search_l.png | Bin 0 -> 567 bytes docs/search/search_m.png | Bin 0 -> 158 bytes docs/search/search_r.png | Bin 0 -> 553 bytes docs/search/searchdata.js | 27 + docs/splitbar.png | Bin 0 -> 312 bytes docs/sync_off.png | Bin 0 -> 862 bytes docs/sync_on.png | Bin 0 -> 831 bytes docs/tab_a.png | Bin 0 -> 124 bytes docs/tab_b.png | Bin 0 -> 188 bytes docs/tab_h.png | Bin 0 -> 181 bytes docs/tab_s.png | Bin 0 -> 184 bytes docs/tabs.css | 1 + 610 files changed, 35314 insertions(+), 3 deletions(-) create mode 100644 docs/MTSC_Logo_small.png create mode 100644 docs/annotated.html create mode 100644 docs/annotated_dup.js create mode 100644 docs/bc_s.png create mode 100644 docs/bdwn.png create mode 100644 docs/classes.html create mode 100644 docs/closed.png create mode 100644 docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html create mode 100644 docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.js create mode 100644 docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.png create mode 100644 docs/d0/d25/class_m_t_s_c_1_1_server_1_1_client_data-members.html create mode 100644 docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.dot create mode 100644 docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.md5 create mode 100644 docs/d0/d61/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module-members.html create mode 100644 docs/d0/d6e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger-members.html create mode 100644 docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.dot create mode 100644 docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.md5 create mode 100644 docs/d0/da0/_websocket_message_8cs_source.html create mode 100644 docs/d0/de5/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module-members.html create mode 100644 docs/d0/deb/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger-members.html create mode 100644 docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.dot create mode 100644 docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.md5 create mode 100644 docs/d1/d35/_client_2_handlers_2_websocket_handler_8cs_source.html create mode 100644 docs/d1/d39/_invalid_websocket_format_exception_8cs_source.html create mode 100644 docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.dot create mode 100644 docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 create mode 100644 docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.html create mode 100644 docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.js create mode 100644 docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.dot create mode 100644 docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.md5 create mode 100644 docs/d1/d6d/_invalid_header_exception_8cs_source.html create mode 100644 docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.dot create mode 100644 docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.md5 create mode 100644 docs/d1/db2/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module-members.html create mode 100644 docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.dot create mode 100644 docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.md5 create mode 100644 docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.dot create mode 100644 docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.md5 create mode 100644 docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.dot create mode 100644 docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 create mode 100644 docs/d2/d00/_release_2net45_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html create mode 100644 docs/d2/d29/_echo_module_8cs_source.html create mode 100644 docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.dot create mode 100644 docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.md5 create mode 100644 docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html create mode 100644 docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.js create mode 100644 docs/d2/d34/_debug_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html create mode 100644 docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.dot create mode 100644 docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.md5 create mode 100644 docs/d2/d6f/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception-members.html create mode 100644 docs/d2/d93/class_m_t_s_c_1_1_client_1_1_client-members.html create mode 100644 docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html create mode 100644 docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.js create mode 100644 docs/d2/dfb/_debug_console_logger_8cs_source.html create mode 100644 docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html create mode 100644 docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.js create mode 100644 docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.png create mode 100644 docs/d3/d13/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler-members.html create mode 100644 docs/d3/d1b/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler-members.html create mode 100644 docs/d3/d3f/_hello_world_module_8cs_source.html create mode 100644 docs/d3/d41/_http404_module_8cs_source.html create mode 100644 docs/d3/d42/_client_2_handlers_2_encryption_handler_8cs_source.html create mode 100644 docs/d3/d4e/_release_2net45_2_m_t_s_c_8_assembly_info_8cs_source.html create mode 100644 docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html create mode 100644 docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.js create mode 100644 docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.png create mode 100644 docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html create mode 100644 docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.js create mode 100644 docs/d3/d96/_client_2_handlers_2_i_handler_8cs_source.html create mode 100644 docs/d3/d97/namespace_m_t_s_c_1_1_server.html create mode 100644 docs/d3/d97/namespace_m_t_s_c_1_1_server.js create mode 100644 docs/d3/dac/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler-members.html create mode 100644 docs/d3/db9/_release_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html create mode 100644 docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.dot create mode 100644 docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.md5 create mode 100644 docs/d3/dc6/namespace_m_t_s_c_1_1_client.html create mode 100644 docs/d3/dc6/namespace_m_t_s_c_1_1_client.js create mode 100644 docs/d3/de1/_i_logger_8cs_source.html create mode 100644 docs/d3/df4/_i_exception_handler_8cs_source.html create mode 100644 docs/d3/dfb/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception-members.html create mode 100644 docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.dot create mode 100644 docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.md5 create mode 100644 docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html create mode 100644 docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.js create mode 100644 docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.png create mode 100644 docs/d4/d2e/_console_logger_8cs_source.html create mode 100644 docs/d4/d39/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception-members.html create mode 100644 docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.dot create mode 100644 docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.md5 create mode 100644 docs/d4/d6d/_debug_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html create mode 100644 docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.dot create mode 100644 docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.md5 create mode 100644 docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html create mode 100644 docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.js create mode 100644 docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.dot create mode 100644 docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.md5 create mode 100644 docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html create mode 100644 docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.js create mode 100644 docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html create mode 100644 docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.png create mode 100644 docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.dot create mode 100644 docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 create mode 100644 docs/d5/d1b/_server_modules_2_i_websocket_module_8cs_source.html create mode 100644 docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.dot create mode 100644 docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.md5 create mode 100644 docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.dot create mode 100644 docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 create mode 100644 docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html create mode 100644 docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.js create mode 100644 docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.png create mode 100644 docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html create mode 100644 docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.js create mode 100644 docs/d5/d6c/_helper_functions_8cs_source.html create mode 100644 docs/d5/d7a/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler-members.html create mode 100644 docs/d5/d98/_http_message_8cs_source.html create mode 100644 docs/d5/da4/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception-members.html create mode 100644 docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.dot create mode 100644 docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.md5 create mode 100644 docs/d5/dc6/_invalid_post_form_exception_8cs_source.html create mode 100644 docs/d5/dd0/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception-members.html create mode 100644 docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html create mode 100644 docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.js create mode 100644 docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.png create mode 100644 docs/d5/df2/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler-members.html create mode 100644 docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot create mode 100644 docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 create mode 100644 docs/d6/d05/class_m_t_s_c_1_1_logging_1_1_console_logger-members.html create mode 100644 docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.dot create mode 100644 docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.md5 create mode 100644 docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.dot create mode 100644 docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.md5 create mode 100644 docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html create mode 100644 docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.js create mode 100644 docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.png create mode 100644 docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html create mode 100644 docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.png create mode 100644 docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html create mode 100644 docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.js create mode 100644 docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.png create mode 100644 docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html create mode 100644 docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.js create mode 100644 docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.png create mode 100644 docs/d6/dda/_no_data_exception_8cs_source.html create mode 100644 docs/d7/d00/_server_2_handlers_2_encryption_handler_8cs_source.html create mode 100644 docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html create mode 100644 docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.js create mode 100644 docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.png create mode 100644 docs/d7/d36/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__inherit__graph.dot create mode 100644 docs/d7/d36/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__inherit__graph.md5 create mode 100644 docs/d7/d42/_debug_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html create mode 100644 docs/d7/d60/_client_modules_2_i_websocket_module_8cs_source.html create mode 100644 docs/d7/da6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module-members.html create mode 100644 docs/d7/db9/_release_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html create mode 100644 docs/d7/dcd/namespace_m_t_s_c.html create mode 100644 docs/d7/dcd/namespace_m_t_s_c.js create mode 100644 docs/d8/d00/_release_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html create mode 100644 docs/d8/d00/_server_2_handlers_2_websocket_handler_8cs_source.html create mode 100644 docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.dot create mode 100644 docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.md5 create mode 100644 docs/d8/d17/_invalid_request_u_r_i_exception_8cs_source.html create mode 100644 docs/d8/d3e/_client_2_handlers_2_broadcast_handler_8cs_source.html create mode 100644 docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html create mode 100644 docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.js create mode 100644 docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.png create mode 100644 docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html create mode 100644 docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.js create mode 100644 docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.png create mode 100644 docs/d8/d77/_release_2net45_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html create mode 100644 docs/d8/d8a/_release_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html create mode 100644 docs/d8/d92/_debug_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html create mode 100644 docs/d8/d92/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module-members.html create mode 100644 docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html create mode 100644 docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.js create mode 100644 docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html create mode 100644 docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.js create mode 100644 docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.png create mode 100644 docs/d8/dab/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__coll__graph.dot create mode 100644 docs/d8/dab/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__coll__graph.md5 create mode 100644 docs/d8/dba/_server_8cs_source.html create mode 100644 docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.dot create mode 100644 docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.md5 create mode 100644 docs/d9/d13/_client_2_handlers_2_http_handler_8cs_source.html create mode 100644 docs/d9/d29/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler-members.html create mode 100644 docs/d9/d37/class_m_t_s_c_1_1_server_1_1_server-members.html create mode 100644 docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.dot create mode 100644 docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 create mode 100644 docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot create mode 100644 docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 create mode 100644 docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.dot create mode 100644 docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.md5 create mode 100644 docs/d9/d83/_release_2net45_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html create mode 100644 docs/d9/daf/_debug_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html create mode 100644 docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html create mode 100644 docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.js create mode 100644 docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.png create mode 100644 docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html create mode 100644 docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.js create mode 100644 docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.png create mode 100644 docs/d9/deb/_release_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html create mode 100644 docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.dot create mode 100644 docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.md5 create mode 100644 docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.dot create mode 100644 docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.md5 create mode 100644 docs/da/d0a/_debug_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html create mode 100644 docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.dot create mode 100644 docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.md5 create mode 100644 docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.dot create mode 100644 docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.md5 create mode 100644 docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.dot create mode 100644 docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.md5 create mode 100644 docs/da/d3e/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module-members.html create mode 100644 docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html create mode 100644 docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.js create mode 100644 docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.png create mode 100644 docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html create mode 100644 docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.js create mode 100644 docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.png create mode 100644 docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html create mode 100644 docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.js create mode 100644 docs/da/da6/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module-members.html create mode 100644 docs/da/dae/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler-members.html create mode 100644 docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html create mode 100644 docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.js create mode 100644 docs/da/dc2/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler-members.html create mode 100644 docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html create mode 100644 docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.js create mode 100644 docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.png create mode 100644 docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html create mode 100644 docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.js create mode 100644 docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.png create mode 100644 docs/da/ded/_server_modules_2_i_http_module_8cs_source.html create mode 100644 docs/db/d0f/_message_8cs_source.html create mode 100644 docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.dot create mode 100644 docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.md5 create mode 100644 docs/db/d27/_exception_console_logger_8cs_source.html create mode 100644 docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.dot create mode 100644 docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.md5 create mode 100644 docs/db/d43/_client_8cs_source.html create mode 100644 docs/db/d68/_broadcast_module_8cs_source.html create mode 100644 docs/db/d91/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message-members.html create mode 100644 docs/db/d9a/_server_2_handlers_2_broadcast_handler_8cs_source.html create mode 100644 docs/db/db3/_release_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html create mode 100644 docs/db/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception-members.html create mode 100644 docs/db/dbd/_chat_module_8cs_source.html create mode 100644 docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.dot create mode 100644 docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 create mode 100644 docs/db/dbe/namespace_m_t_s_c_1_1_logging.html create mode 100644 docs/db/dbe/namespace_m_t_s_c_1_1_logging.js create mode 100644 docs/db/dca/namespace_m_t_s_c_1_1_common.html create mode 100644 docs/db/dca/namespace_m_t_s_c_1_1_common.js create mode 100644 docs/db/dd9/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception-members.html create mode 100644 docs/db/ddd/struct_m_t_s_c_1_1_message-members.html create mode 100644 docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.dot create mode 100644 docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.md5 create mode 100644 docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.dot create mode 100644 docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.md5 create mode 100644 docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html create mode 100644 docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.js create mode 100644 docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.png create mode 100644 docs/dc/d46/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module-members.html create mode 100644 docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html create mode 100644 docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.js create mode 100644 docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.png create mode 100644 docs/dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html create mode 100644 docs/dc/d7c/class_m_t_s_c_1_1_client_1_1_client.js create mode 100644 docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html create mode 100644 docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.js create mode 100644 docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.png create mode 100644 docs/dc/da0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module-members.html create mode 100644 docs/dc/da7/_server_2_handlers_2_i_handler_8cs_source.html create mode 100644 docs/dc/da8/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler-members.html create mode 100644 docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.dot create mode 100644 docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.md5 create mode 100644 docs/dc/dbf/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module-members.html create mode 100644 docs/dc/dc2/_invalid_status_code_exception_8cs_source.html create mode 100644 docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html create mode 100644 docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.png create mode 100644 docs/dc/dd4/struct_m_t_s_c_1_1_message.html create mode 100644 docs/dc/dd4/struct_m_t_s_c_1_1_message.js create mode 100644 docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html create mode 100644 docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.js create mode 100644 docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.png create mode 100644 docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.dot create mode 100644 docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.md5 create mode 100644 docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.dot create mode 100644 docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.md5 create mode 100644 docs/dd/d2f/_communication_primitives_8cs_source.html create mode 100644 docs/dd/d31/_release_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html create mode 100644 docs/dd/d37/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception-members.html create mode 100644 docs/dd/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception-members.html create mode 100644 docs/dd/d39/_release_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html create mode 100644 docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.dot create mode 100644 docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.md5 create mode 100644 docs/dd/d58/_client_modules_2_i_http_module_8cs_source.html create mode 100644 docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html create mode 100644 docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.js create mode 100644 docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.png create mode 100644 docs/dd/d5d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__coll__graph.dot create mode 100644 docs/dd/d5d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__coll__graph.md5 create mode 100644 docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.dot create mode 100644 docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.md5 create mode 100644 docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.dot create mode 100644 docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.md5 create mode 100644 docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.dot create mode 100644 docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.md5 create mode 100644 docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html create mode 100644 docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.js create mode 100644 docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.png create mode 100644 docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.dot create mode 100644 docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.md5 create mode 100644 docs/dd/d9c/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler-members.html create mode 100644 docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.dot create mode 100644 docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.md5 create mode 100644 docs/dd/dc4/_debug_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html create mode 100644 docs/dd/de1/_file_server_module_8cs_source.html create mode 100644 docs/dd/df1/_invalid_first_byte_exception_8cs_source.html create mode 100644 docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.dot create mode 100644 docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.md5 create mode 100644 docs/de/d19/_exception_thrower_8cs_source.html create mode 100644 docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.dot create mode 100644 docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.md5 create mode 100644 docs/de/d28/_invalid_http_version_exception_8cs_source.html create mode 100644 docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.dot create mode 100644 docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.md5 create mode 100644 docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.dot create mode 100644 docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.md5 create mode 100644 docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.dot create mode 100644 docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.md5 create mode 100644 docs/de/d73/_method_invalid_exception_8cs_source.html create mode 100644 docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.dot create mode 100644 docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.md5 create mode 100644 docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html create mode 100644 docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.js create mode 100644 docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html create mode 100644 docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.js create mode 100644 docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.png create mode 100644 docs/de/db6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message-members.html create mode 100644 docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html create mode 100644 docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.js create mode 100644 docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.png create mode 100644 docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.dot create mode 100644 docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.md5 create mode 100644 docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html create mode 100644 docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.js create mode 100644 docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.dot create mode 100644 docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.md5 create mode 100644 docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html create mode 100644 docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.js create mode 100644 docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.png create mode 100644 docs/df/d3c/interface_m_t_s_c_1_1_logging_1_1_i_logger-members.html create mode 100644 docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html create mode 100644 docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.js create mode 100644 docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.png create mode 100644 docs/df/d5f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower-members.html create mode 100644 docs/df/d65/_debug_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html create mode 100644 docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.dot create mode 100644 docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.md5 create mode 100644 docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html create mode 100644 docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.js create mode 100644 docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.png create mode 100644 docs/df/d93/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__coll__graph.dot create mode 100644 docs/df/d93/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__coll__graph.md5 create mode 100644 docs/df/d94/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler-members.html create mode 100644 docs/df/db4/_server_2_handlers_2_http_handler_8cs_source.html create mode 100644 docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.dot create mode 100644 docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.md5 create mode 100644 docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html create mode 100644 docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.js create mode 100644 docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html create mode 100644 docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.js create mode 100644 docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.png create mode 100644 docs/df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html create mode 100644 docs/df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.js create mode 100644 docs/dir_060ae041221bd5ec93acd9997d59bc4a.html create mode 100644 docs/dir_060ae041221bd5ec93acd9997d59bc4a.js create mode 100644 docs/dir_191ea0d58bc4aa76598804cf9a9a4081.html create mode 100644 docs/dir_191ea0d58bc4aa76598804cf9a9a4081.js create mode 100644 docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.html create mode 100644 docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.js create mode 100644 docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.html create mode 100644 docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.js create mode 100644 docs/dir_2bed625b8678336fd3428040269a7e1f.html create mode 100644 docs/dir_2bed625b8678336fd3428040269a7e1f.js create mode 100644 docs/dir_358eb219223b877d278b694a4705d823.html create mode 100644 docs/dir_358eb219223b877d278b694a4705d823.js create mode 100644 docs/dir_3c5620eb11971a15737f9176b123ece0.html create mode 100644 docs/dir_3c5620eb11971a15737f9176b123ece0.js create mode 100644 docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.html create mode 100644 docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.js create mode 100644 docs/dir_3f72314963399eb45a5e5610bf0cc145.html create mode 100644 docs/dir_3f72314963399eb45a5e5610bf0cc145.js create mode 100644 docs/dir_463cd4dabdde5d8586315ca59a2d23c1.html create mode 100644 docs/dir_463cd4dabdde5d8586315ca59a2d23c1.js create mode 100644 docs/dir_57b0082ffa0af670f404eda33c530396.html create mode 100644 docs/dir_57b0082ffa0af670f404eda33c530396.js create mode 100644 docs/dir_62d48bea4fe746cedac2516f67715e2f.html create mode 100644 docs/dir_62d48bea4fe746cedac2516f67715e2f.js create mode 100644 docs/dir_70c99956df21f970f9dba0c1e1740f5c.html create mode 100644 docs/dir_70c99956df21f970f9dba0c1e1740f5c.js create mode 100644 docs/dir_71304019a3d358fe52b6a8280ce6c97c.html create mode 100644 docs/dir_71304019a3d358fe52b6a8280ce6c97c.js create mode 100644 docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.html create mode 100644 docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.js create mode 100644 docs/dir_9a2c1c90aeb7330df3888fc4e386572a.html create mode 100644 docs/dir_9a2c1c90aeb7330df3888fc4e386572a.js create mode 100644 docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html create mode 100644 docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.js create mode 100644 docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.html create mode 100644 docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.js create mode 100644 docs/dir_d18f251565efce6e2c7efbad3e34f789.html create mode 100644 docs/dir_d18f251565efce6e2c7efbad3e34f789.js create mode 100644 docs/dir_d2dabb60356392c82b7650f84b0a3306.html create mode 100644 docs/dir_d2dabb60356392c82b7650f84b0a3306.js create mode 100644 docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.html create mode 100644 docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.js create mode 100644 docs/dir_dd7589cd703d467b08715c004924abac.html create mode 100644 docs/dir_dd7589cd703d467b08715c004924abac.js create mode 100644 docs/dir_e1cb8f9b823681a26481b9089f7b7776.html create mode 100644 docs/dir_e1cb8f9b823681a26481b9089f7b7776.js create mode 100644 docs/doc.png create mode 100644 docs/doxygen.css create mode 100644 docs/doxygen.png create mode 100644 docs/dynsections.js create mode 100644 docs/files.html create mode 100644 docs/files_dup.js create mode 100644 docs/folderclosed.png create mode 100644 docs/folderopen.png create mode 100644 docs/functions.html create mode 100644 docs/functions_func.html create mode 100644 docs/functions_prop.html create mode 100644 docs/graph_legend.dot create mode 100644 docs/graph_legend.html create mode 100644 docs/graph_legend.md5 create mode 100644 docs/hierarchy.html create mode 100644 docs/hierarchy.js create mode 100644 docs/index.html create mode 100644 docs/inherit_graph_0.dot create mode 100644 docs/inherit_graph_0.md5 create mode 100644 docs/inherit_graph_1.dot create mode 100644 docs/inherit_graph_1.md5 create mode 100644 docs/inherit_graph_10.dot create mode 100644 docs/inherit_graph_10.md5 create mode 100644 docs/inherit_graph_11.dot create mode 100644 docs/inherit_graph_11.md5 create mode 100644 docs/inherit_graph_12.dot create mode 100644 docs/inherit_graph_12.md5 create mode 100644 docs/inherit_graph_13.dot create mode 100644 docs/inherit_graph_13.md5 create mode 100644 docs/inherit_graph_14.dot create mode 100644 docs/inherit_graph_14.md5 create mode 100644 docs/inherit_graph_2.dot create mode 100644 docs/inherit_graph_2.md5 create mode 100644 docs/inherit_graph_3.dot create mode 100644 docs/inherit_graph_3.md5 create mode 100644 docs/inherit_graph_4.dot create mode 100644 docs/inherit_graph_4.md5 create mode 100644 docs/inherit_graph_5.dot create mode 100644 docs/inherit_graph_5.md5 create mode 100644 docs/inherit_graph_6.dot create mode 100644 docs/inherit_graph_6.md5 create mode 100644 docs/inherit_graph_7.dot create mode 100644 docs/inherit_graph_7.md5 create mode 100644 docs/inherit_graph_8.dot create mode 100644 docs/inherit_graph_8.md5 create mode 100644 docs/inherit_graph_9.dot create mode 100644 docs/inherit_graph_9.md5 create mode 100644 docs/inherits.html create mode 100644 docs/jquery.js create mode 100644 docs/menu.js create mode 100644 docs/menudata.js create mode 100644 docs/namespaces.html create mode 100644 docs/namespaces_dup.js create mode 100644 docs/nav_f.png create mode 100644 docs/nav_g.png create mode 100644 docs/nav_h.png create mode 100644 docs/navtree.css create mode 100644 docs/navtree.js create mode 100644 docs/navtreedata.js create mode 100644 docs/navtreeindex0.js create mode 100644 docs/navtreeindex1.js create mode 100644 docs/open.png create mode 100644 docs/resize.js create mode 100644 docs/search/all_0.html create mode 100644 docs/search/all_0.js create mode 100644 docs/search/all_1.html create mode 100644 docs/search/all_1.js create mode 100644 docs/search/all_10.html create mode 100644 docs/search/all_10.js create mode 100644 docs/search/all_11.html create mode 100644 docs/search/all_11.js create mode 100644 docs/search/all_12.html create mode 100644 docs/search/all_12.js create mode 100644 docs/search/all_2.html create mode 100644 docs/search/all_2.js create mode 100644 docs/search/all_3.html create mode 100644 docs/search/all_3.js create mode 100644 docs/search/all_4.html create mode 100644 docs/search/all_4.js create mode 100644 docs/search/all_5.html create mode 100644 docs/search/all_5.js create mode 100644 docs/search/all_6.html create mode 100644 docs/search/all_6.js create mode 100644 docs/search/all_7.html create mode 100644 docs/search/all_7.js create mode 100644 docs/search/all_8.html create mode 100644 docs/search/all_8.js create mode 100644 docs/search/all_9.html create mode 100644 docs/search/all_9.js create mode 100644 docs/search/all_a.html create mode 100644 docs/search/all_a.js create mode 100644 docs/search/all_b.html create mode 100644 docs/search/all_b.js create mode 100644 docs/search/all_c.html create mode 100644 docs/search/all_c.js create mode 100644 docs/search/all_d.html create mode 100644 docs/search/all_d.js create mode 100644 docs/search/all_e.html create mode 100644 docs/search/all_e.js create mode 100644 docs/search/all_f.html create mode 100644 docs/search/all_f.js create mode 100644 docs/search/classes_0.html create mode 100644 docs/search/classes_0.js create mode 100644 docs/search/classes_1.html create mode 100644 docs/search/classes_1.js create mode 100644 docs/search/classes_2.html create mode 100644 docs/search/classes_2.js create mode 100644 docs/search/classes_3.html create mode 100644 docs/search/classes_3.js create mode 100644 docs/search/classes_4.html create mode 100644 docs/search/classes_4.js create mode 100644 docs/search/classes_5.html create mode 100644 docs/search/classes_5.js create mode 100644 docs/search/classes_6.html create mode 100644 docs/search/classes_6.js create mode 100644 docs/search/classes_7.html create mode 100644 docs/search/classes_7.js create mode 100644 docs/search/classes_8.html create mode 100644 docs/search/classes_8.js create mode 100644 docs/search/classes_9.html create mode 100644 docs/search/classes_9.js create mode 100644 docs/search/classes_a.html create mode 100644 docs/search/classes_a.js create mode 100644 docs/search/close.png create mode 100644 docs/search/functions_0.html create mode 100644 docs/search/functions_0.js create mode 100644 docs/search/functions_1.html create mode 100644 docs/search/functions_1.js create mode 100644 docs/search/functions_2.html create mode 100644 docs/search/functions_2.js create mode 100644 docs/search/functions_3.html create mode 100644 docs/search/functions_3.js create mode 100644 docs/search/functions_4.html create mode 100644 docs/search/functions_4.js create mode 100644 docs/search/functions_5.html create mode 100644 docs/search/functions_5.js create mode 100644 docs/search/functions_6.html create mode 100644 docs/search/functions_6.js create mode 100644 docs/search/functions_7.html create mode 100644 docs/search/functions_7.js create mode 100644 docs/search/functions_8.html create mode 100644 docs/search/functions_8.js create mode 100644 docs/search/functions_9.html create mode 100644 docs/search/functions_9.js create mode 100644 docs/search/functions_a.html create mode 100644 docs/search/functions_a.js create mode 100644 docs/search/functions_b.html create mode 100644 docs/search/functions_b.js create mode 100644 docs/search/functions_c.html create mode 100644 docs/search/functions_c.js create mode 100644 docs/search/functions_d.html create mode 100644 docs/search/functions_d.js create mode 100644 docs/search/functions_e.html create mode 100644 docs/search/functions_e.js create mode 100644 docs/search/mag_sel.png create mode 100644 docs/search/namespaces_0.html create mode 100644 docs/search/namespaces_0.js create mode 100644 docs/search/nomatches.html create mode 100644 docs/search/properties_0.html create mode 100644 docs/search/properties_0.js create mode 100644 docs/search/properties_1.html create mode 100644 docs/search/properties_1.js create mode 100644 docs/search/properties_2.html create mode 100644 docs/search/properties_2.js create mode 100644 docs/search/properties_3.html create mode 100644 docs/search/properties_3.js create mode 100644 docs/search/properties_4.html create mode 100644 docs/search/properties_4.js create mode 100644 docs/search/properties_5.html create mode 100644 docs/search/properties_5.js create mode 100644 docs/search/properties_6.html create mode 100644 docs/search/properties_6.js create mode 100644 docs/search/properties_7.html create mode 100644 docs/search/properties_7.js create mode 100644 docs/search/properties_8.html create mode 100644 docs/search/properties_8.js create mode 100644 docs/search/search.css create mode 100644 docs/search/search.js create mode 100644 docs/search/search_l.png create mode 100644 docs/search/search_m.png create mode 100644 docs/search/search_r.png create mode 100644 docs/search/searchdata.js create mode 100644 docs/splitbar.png create mode 100644 docs/sync_off.png create mode 100644 docs/sync_on.png create mode 100644 docs/tab_a.png create mode 100644 docs/tab_b.png create mode 100644 docs/tab_h.png create mode 100644 docs/tab_s.png create mode 100644 docs/tabs.css diff --git a/MTSC/MTSC.csproj b/MTSC/MTSC.csproj index e659e4a..ae004e4 100644 --- a/MTSC/MTSC.csproj +++ b/MTSC/MTSC.csproj @@ -5,12 +5,12 @@ netcoreapp2.1;net48 - 0.9.9 + 1.0.0 Alexandru-Victor Macocian MTSC Modular TCP Server and Client - 0.0.9.9 - 0.0.9.9 + 0.1.0.0 + 0.1.0.0 true AnyCPU;x64 https://github.com/AlexMacocian/MTSC diff --git a/docs/MTSC_Logo_small.png b/docs/MTSC_Logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..085ba60b2b2eb1c2870192927954a7a97bef0ab2 GIT binary patch literal 10814 zcmai)Ra+cgu!V6M90qrHf(O^&1b25$aCZiG3oy772=49#2?Td1xVzh#@0=fSE_%1jss9eDU7~+Eq$3mRUeSG0w_;5!diCI?F-y0?w}l^_&S? z&iW!z;$rK;g#S|e(jE!QpQ#3xW8YHgh}BK~aJfRnEsnZ1g9gIc7DQyi$x6t=9QilU z>hFI{oWj*x;3vyU1bOEjSa?kQ7@zRF`=M(i+wOMs@8a}SNV;6(-PYP#yHbUr-udk_ z21Y_3m-WOhdq-WZP*w@L%a6rE4nO1z)iVG06>i!FL6ossnF_5c zi7!;DoLD|}gBf-+-$>@`*O{0K&s_f09LYvc;!gu8Q%2)EKi*%c_Sx~$5JHAoPU2FT zwE+Q7d+A{UIn^;=_9vqv^^ldSbHrJ$prYo8NwN!_yO?*^mSGY6!<6mp>z{Mlh8 z;$@yvBcr2NljGwCvZ@rwfDa_#z3F(GFH)HN){Ui#2IjDMm@_gux=~Jgy0sZ^L+zZP zft9XfzSv8KB3+oyzpw?-=<=%gnGzf)K0kH>RPo^8UC8O{;DnHJu+`IZi63N{1QqJDpA`+eY79N9Q=$M>*}2 zQK!xA)fFQHBjZs8)7PyV_qOMJ-hkl~$W^xN+gVgLXDuehWH4HJokvVDx4045_RNhu5VARYrDMb6r8y72d+ z0h=eSl=uD4sZONTu|bmdWWP zSB9clc_(9IfCF`T!3i4pbG9%qChD_VeL}p(H1RPM*`%MH!P4rgbsPal;az_i${3g_ zOqd zmb`s84PT=%bifne-)B#`7&;`WB!s81Q!+&7_V#?&&tX24%|(FvH$;CNTIK+KJS|f) zQ`uXHqrnQ-056TLszJ`wN?Yv>k#K>MOlgd0Z5U`DcMNv*b_VJzSv z#}m~3{%pTM&8>F4WH%_KP+jI;R{{rzp6+-Dj=&{L`{ktCL<(G!R{e2*x4|%c9chvW zL_z6ig8BcJYYireuwc*+Me0`%MZ^jZJCk*CJz2$y8_ZIfiJ>^+wiJ40t2h&zASg z0gN6&KE6{m2HlnDb1TXyUqXUMU;lkoo)sm8=$0q2#uB7(Snx|_+ z<8V3S_g=tvNG5nO-hW zd9g|T=V2bTEL!N3Oiphs3e+3*Qn+6&-O6=?@| zXp^rkUiE!v^Im%KiDgq zZn1^BNhGLx@*!19X+v&;yYC22_^quwQGwsdrHPtFX6$2j7_fBJB+O8I9)PE$DyBhj zMhMKv$SBINOGDT#kCgk3t$Yjh*4tN}^S59_C>KaFEs4q0)qfRpSAhg4NQgL8ut&b3 zfQlY{EHAdTt?uQ?{>DVyi&=iQJrF^NKRlx%gd44*9@(!^@Zbcc~Wp;pq; zt29@^d@G}Udv{$!2aY3umJslj;!2INTrmLA*UJ5O%y}^0qXfY;2li56hL+)mR2|B%f+EGGjFJC3XbNfMy+&mx-&J9XKR0(vs z^EVTI?+-2~=Zn5?-kodmPh^~Gf%&X&U5jl_;@gxVvGnM?#0yCLEojoaCfkdmrjthL=})fjbw zZ~?#BJF8nrNJzqqT-?AS{?7_>a&j_MR8&iATO89S1z46dlFr+@Bdt$3WtyWV{qAZb z7@>*Af3J`U&^W!-tu8WM18u%+*a8I&7w=j7TfMw9hEE)bo!`{7L?JW|ZT!NK;a^Abdir)ywf5O;3gML%{B--B>` z&8;``6e1+f*G1?wIKPQnmE(>Z>+5P$v$Z=z*ssTG(JTZ;q#aAhf-G5|9q}eIc`CjK z1O&81M@JK|bU%`wejQ(Os?(|b=hEg}rQebpczZYv*M1HC`25VfXxDTB#K&(LcJn9>=M3-_l zedOlgMK0mz=f@UD!tXK`OUOkgKv1dQ;^3kY#OqZPo|c;G{@az|vLog)5UJLN7F!OB zZD(z5jd%M^1X5~vq@<)sxcTr{-5_UAkM04TA{Rr6xp9T2+KbZcXX{8?ippbS#1C&$ zEJk$~!Ar`^rB61V@(T%a9(Bvh%XwRGKX$@kjTvAI2C-WGD8aElQ{~saWs8X$`xTJD z<*2EtMS~?Puz)~dc2ZKEdeL;KlQ&Gf%08-4Fw&$sR7f-2t=_eQ0kA}cVL|9&&9$yf zhuL{kdp)(c4`z{b3Nwk&e}7gOm;{A8iS|*0(Yx&xDNBmsbd~`@}#G7Vw>@~5V0d_?56CSyv7!s zA3{t@ahN<8;MzbL%3iJc)5pZ$bh_6l%vJBHe>!vEi3l_AZR zeobLDZ08PUPJBWbjD=1wB^9Uf96IUobd2OICNYL@nQ$n)^fGg{X3t`=nJJDUWttuBk%`HQ)QT;Uhk`N`7z^VV^7-D* zg_-4cms$ZFe`--mJvglzeI-cl$Z4x4Zi_cB`xKA3)_XhuC-q z;rl~V8FC19Up%E3WYgoq(3ly?HuL;W`S2p-^Cs$wh#02#JYRcCUcO-?nBkH9bjj$` z*e5|IGsQZEj=JWTiW}bFHFYol42GGj;8xq23Y4d{-)5J(G7(tr?)8KTY>jfq7 z^-89|z1%N!Bx6&dNFG&;kfk#TUZale11y?So~q16lO|PCVpycJEua2NUQBEZJwSCp zj6wZBv<5?kE?Yo{!@_dV9B*MSA-}G4o0h}Daia?b!|@qBzxru_;t%0lMgMX$LyJd- zudKpTz**jz{wB9C>KP#{^@>V^crH#IPybU)^%1B&(^K&4Og+iElGllQ+4I0S@d0q^VG z`1+aTg6R#;zPuvP_D}7s-XQj2J9)80K-D>k(yJO&JDfsE_7>$V7ei&AChcGZ%i&k|#{8_wk%5|+eTmC9-|LJS^mxFq z)vhnXKFi8uGyEGiwFtJm7aB%#qsDnEE!`CpP^%Fx9g>URzlCov8Y;oG->WbgrJ@4{ zAXLQ{{&d^NTe-Jt9vR{3i!IsHat(!Kjf=?p<4*3QiFRht#p+Q`PA|UZM~*wy$j^m@ z(CdC~|FJYy<1dabKbGOj6fg3(s+=6INow|bpLEpUO7}`g!eTnCld~<1AyDlUR$4ZS z8@n52Nsn1@{y-_F*StJqY-nFjlUjTLBP0q>!80b5Ykxxz1uMuwoJ8qbdye@Adn2G2 zE5+W%(~EK_ac(U-r1s&76_%bA>ild8yocnD=!(ALw=ic6I3QTqSMfq(Xbi9J34kD!`lg*QiL^*I032120dINJXdjQ z6z)5R7e6feUa6OX8(C5AYH$#BrvYFZHU`X`om~iX&FTCF-(fZZ5A|8k>-B;0m@iQ zfER)@-`>Clxd)`r#);H}9(2d}>M)t=%K0D8TL} zA(iM9_W9v#6@Q~AFfbWsup6sX0;5 zV>q>9lSYsfB`0a7Q-T+Yf_lPUGB|HW&gUtIu^>q5`LFwfdGO9z(HDW=m@53MCvq>} zXeKtMEP9X?rfXygME5ByRvQwBMcpZ@s;Yh}^4sgpWG>S@yv56bpCXi#?AvzU8G@7< z?s4()oe7_fSqWsM)oMI(y(Dx9YG^^+oC_{Ujq*moxsxngN)hxpCD_^8N_^f~_FHnp zO1WlY_+qf4U{Ypq)^lG;9Yq1Wqwd!xzXsVNi-&R;wRc({Go!#kQo5WanBckYFF zdaZPc49zB@WMhqr7*~Ku5aj~qxce~7sl+mF)R+CPUuy$)p@KySQlMZNeltH2xz`+AG?5JG;-LP?i=0(KNpsN=%z0>gHd%!=3=_e_8 zquGQ*TNW!3QV~BsEZ3O6GK*gc@9k)`E562;N*QEmxKQtT*fF~mrI!MN(8ESFiZ=ju&IVGl*^@qoa}~-mJ3impHn~yhJSk&hM4zMO1Wm(0`3_I z`LycL{J8C6N=LTCkfjcB`Aib_UK(1n_ zyR_uC0T5$F*ycA(r~W;>V2gZ zzt*X94sJ_IG>96UlQ;42sCw7;SYBZ`Tf{$8;^b?AS+$J)`y0e#OcoLn0!YV`w26)E zIE8;<$iUG_)~=?{O+8-kXgR;OMD04?Su_q5P5{&sN!E?dvM1%vuA?~Y+Ha2y=K9jcd^vzkzW?Ht8ck&{HM4}-U!AXn5x z+PrV}CpvIq^xrcz6kE6n8RHRf_U6H&zvub5eTbHm%0PZ`SUK461IF01WW7WjNfMXN z)V|QKer< z*4DDmY!A?;WZ1zDJ!V3zpmID`J&j-(DXA}CSi%5B$lV=K`Sqmdx?&QRGwJLFw7s7v z%{wiJr7SPFARw8i%5ONO!`EsmOVg6%**XeO6G5A{xj+ALJF9FrE@jj^=#|tz@$Ol^ z=FnABbJ6=d2EV7r^+0Kzs|qP%X52-rFa^qS6(rja&)F7nsr~DjQe5$@cP+-~+RMsb zCVBsnbas1fVKkqy^u`7S&P>qBb_JQ{9_(foqz`sR=lpb58ey(e5^g9(P%~?+qW2QH z2qF{q`PS!T#avv}_xM`eM%c*vXxjZ~X}ywVA~JUa@$a}8qW_^xgSf(bh|c^ii&Z5e zw>7xcEmM~ptnqR2@P={)+<%dWn^LoDtb80-)XZRPWoU&8HSx1d6GPSCe7A^-l$M#s zIYp)=AS3+M=<}vOMLm^}9?L3U@6P8{A!|kJ^Hq?}jvD>Mr2Xxr%if64PA`0;$?h>A(sC}~~ z9%xq*U5B<{rEgW@;o6rRA`(TM?{|>&u~{R+#x?_>qc@MN=Gsan0?tQ=D=)qcr&k2d zOX#KPs*(%}#WWuV4nW*_J~lSCzfsxAX_O!%^K*atDz4ud_yyd8Nk%>7MdB!lyHoZ?UeG;TZb=a2emSkX>uqa)j zgGEH&_4W3KzrEP}I2ZOV#ig7%%Y9mPZG;gqD5$R$7*s!vsR&ZmPTj1!*rKjh9h3h$ zW!E%FEgRKk1=q~k7B(_60{6!ve`cp;`s5+S-JP6Nz%-kfK1o)d5r^p)Zi?IxSyC-@ z%pDy*!kUtGb1JDt(|>?Jv{>kZ14p9oX=0=p0leD?=@H-Bw~>@gj_Dq*35 zRbj$P_M@bBmr>Cxyl;*M_T9K+QSENhv55}9_r(g>nS(9-+nkhkS=jcQi;8kC-ajFm^zzu)0K+c;y*y7K& zW#%Zy75gmO3pR}2BC|wU1E!Tne%7R|I6X#NSuCg|i>KD62w{STXo`7_ zxSfOj3xeU>u?=TcVs7q)OacXsDVDa07TiibH9|jSUC3e#EFRy}q(q9ybOS33!>GrO&7ip~etwLmio@P zp{yyyLV~jt3x7@wb}-k2dSrqMbC~P&zS$V~u6=cL`hB%oss&Q|vQkoJ#bp_w_{5YE zYn6N$+a7#wk@U|_PnB}U86rfhm&sa}1(%?kyReXgm8hV--Ic7Y_Vaun&b#W(hvO?4 z85xJ2{Hrlhw8X&66ilCIoT{@?34-4dfMboNLG2fLN`0nkK{Y6v7 zma#y^D~5O3mY_dzdw#Zv{Rs0iB_##_^?K}6;N#8oEe>_Txu| zp`sDKporJ)?{7So5LAItJZ(1x9f)U2Fh{7w?A~4gT+65m{Yf(B(2WMmFybkp9Q99S5b1yjF3 zgp`?lk;&zIq^d0F+sM)bQK7)c%k7)^`1rc<(he^#uh%dX0JLP?Fo`-mVR@-<-%fR75Ac83#a*sU zGA35kld2^}eXfyV*#1Cx9Jrtc1tE!MG_doogpq}RJ)b#t^;U`Y?(FDz(Y;l(Ly@8o z^*+A1a7?Jv2?Bb*Wtck&SoZ{?2huy>JcjJq z^ERt=wS88soSm;aRw1H41kVkHkUoX5CnvW%!^1~dbq0XS%FANh{Yna~WGoXRc~G(1 z81_$u_B}5UmOW7zgh+05h+{RLwG0R0o_HyELcHZ4YU2SoCL07dUA5tur1SS}P{s+g zrr3M&WL9M1l33$bnMbof$;D1G(bBJ>>NB)jq1?EP-C%U)QpwEW{IjkPIlHQK<+9K1 zOaClFu?WjpRjI0#-zMlbSXI%@ABM$>LL@$kMyz|3x87mhvp}|D4QE6F0>M-yUJ(_k zEL#{Z{msZ_G`FZ|kEX@ydUg9mj^L^}6$e7kmL~z?L_e_%9VkH%!YjmOZvbQCO|D%o z!kzw$eZX3;Ogi@ph^aCkSFDGRP*IM_K!!PA!c$8Hy40SD{d81 z61~=iubxqum=)x)MnOQ&S4AOd!?t97Xu%YlVA(zu6KcAqM!^9cem)M4tB)xh*#Vz% zxP)3?iE;eVUfk3I_BRrlBBsmVDi(-Z>8YuBqCfvA1Q)L2i_`4pA)}$?#6&kDrJzhM zgmimvfvFd*3`e-XvV1OKN+tTrmhTiWGf9NvC(<%|xW>juRz1!^-59ouklg zl1frVI3N+_bI3T3_K ze)@}+1AX42d8GPmo%9_Vq5bVXTRWGns9s+Bbn6sR3`dQEghW3r(9DxFR5r;(z|M_C!@ZOtPJxo<6&3`v@;cO-W!L zTKvo5IyihBeJ%e3G_Fh0q8*Y1APoO%RZH4G_o~IKBGgUceY#ZlDPOxDyvS?$2Z-!b zZwbjXvgpY#@}i9ljz~X*n2Nk5(SSX-<$>AF8gs-S#&+9Zj-_Z804f!aal+bd_q@BKS%6gE&e-N zqfzcbfa}ZV7pR_?`L&ZI)jB$~+c8=CBz}4dQeBh|K}lo9Z#gAG0-8&1ZNQBeW{m6k z2ciDzMWK9*lvfdlZ;UX|l2f1AD|KVtccryB;`S9~X|QQ`M2ycM0?JTF2V4&MNMe-< z;jnuP-S>RFUErhQqDqFNUM)l3RcSvDRfh3mY${~<)0FXX#eb&fAa6;6 zp;O}`G55J6w?Po*nAwStg_1mSt~EK`a9)vi!^Uca$s8~vHI)Z-av8Cv23bT#e^G|L zFzK%tMgtDc`8)xP;qMFUfJ=-mNarwlx=02?s)if2Ms#RMm}0SV$Te@U)()4bAjC^~ zl-Y=7V)E+x`ZzMPDIME+x3DG)wnyC^n!c{}yn%)rO?s!#bS`d*>WM^Wm*x+oE^0r@WsOVo)JAwLyV@Z3)2^u3J_Rav&>43WYQ(1io){ z@{gOahZf8aTMtk+ENjS@a3ZrBxm;{?k!Qjc*dIV%*>>b`)C~qj@m-n=(#pi;b6p~;`Sp|X&q_EALetV@p*UiJ(pUOTK7R6up{+XP9kha&=bt);5TwyC( zeG^v_&n+q=!wu?l;wE=fXIn?}L_iobIoYyf^}tKyt98NlG~YIj?w#@4D!fnBeIzmJ zK)mnGBDI2LfDZNo{c3az^txVM`Vq7@3W~u?M}IG8s_F7NU0c*B=MmyIurPhncH)SC zj__kA`@%FAwP+vin$dQYJACzM)&`gq*oll1!hicNw2G&gLkm8 zIV3W$Q%sjHFf*Um##)o?VT9%OR}S(xBvio=3=#Kx1CR_$qLL`a$_0qYjw}w)f9P}v z2Z_0vKOLDN89Jk^)J){3@5PNa)CqB1#*^@?)k3r@qzNoXuWmpYF?e90%u#wP#BRt6 z|8~qhRWnuw3;+O__|~9wyFALAM-o-WWnw>eXa9(G_Ftj08jLK=_#;Uh^!z9a;r{^k zw)~8~IJS(62RY%J<_OM_@iYs}=@5}Oj;`05hA{B*dKeiQkr6Iwu%3J|ooj1rs~SRF zCVW74j6~-FosZd@EZOB&%l_C7U=l_ss1G}mJ5({Z^_$W?y4)Uc_q{*$-dtRK&_qOx zV1)_JPnY<-cT7`rg$V~rO~O$W*)q7Ue>VxQuT7VucJPAWOnuV!88feKMfl01R$ud$GZ z$3gS=)%&aACKxuPh$oPZ2U28@19V}6M9}7XlhP+bbJMzTO(_#o?*$Xw;4pa8|9>gx z?VZ45)~?sbtu1K;H*;*=vr zIgOP&LUy;S=dq1pMAqvllf+J`R`Slp#U>ekoXZd5yh-|=^s&l$^e&^1XNU|(aPAu% z&0Yx&FhngN*;{awBLbc%Vq#)C0VaEmst3zE*+x;DfSZgB~L9d)6MVT=M zg1w~ep9^jf#9dsjUm-JBO93quV>n|F-(}P9CXSv-{ByG2_;FdWE1do7+-95>W{%S0 zJEUMx?(3!fjI!3l;^gEciIXmB=t@-hp!vZHX{6d5%L>9kGlB38N3S)m6q!LGAt6yT zJp$Bsz55i`OoVGme#P%nV?YJ!{R}NQ#emsIzku8!F>$}<`9;u7c3V-{sSCAJ+ZuMT zSYp3MgOHTaY;>*ZK)4G&KK}FB6!pWd7&_qP4QT)Ma<7g`<%IFt7lu9@jo9jn$PF*; zC(JECM52H_gFA^=GrG(jR=BJmBU2Ur0#VI3!dE@#)xzzD(FatSpP%nBZpy-<4Dkir zY^d>Ka5COOcJQeb%VT2|`2RcRsGz7AThY?;VAf_3fOdnx>Vq7oNY`<`zu(LY8A4jV z-WywH$=F+_q@)yIYj;1PgXn|5bjrD>*;!d*OugzDy&tee>6U?$-`*u4GoMg$Qc7Q{ IB}_p71HbyWCjbBd literal 0 HcmV?d00001 diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..d709740 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,165 @@ + + + + + + + +MTSC: Class List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NMTSC
 NClient
 NHandlers
 CBroadcastHandler
 CEncryptionHandler
 CHttpHandlerHandler for handling client http communication
 CIHandlerHandler interface for client communication
 CWebsocketHandlerHandler implementing websocket protocol
 CClientBase class for TCP Client
 NCommon
 NHttp
 NClientModules
 CIHttpModule
 NServerModules
 CFileServerModule
 CHelloWorldModule
 CHttp404ModuleSimple module that returns status code 404
 CIHttpModuleInterface for Http modules used by the server http handler
 CHttpMessage
 NWebSockets
 NClientModules
 CChatModule
 CIWebsocketModuleInterface for websocket modules
 NServerModules
 CBroadcastModule
 CEchoModule
 CIWebsocketModule
 CWebsocketMessageClass containing the bytes of a websocket received message
 NExceptions
 CExceptionConsoleLoggerLogs the received exceptions to the console
 CExceptionThrowerThrows all handled exceptions
 CIExceptionHandlerHandler to be used for handling exception
 CInvalidFirstByteExceptionException in case of first invalid byte for websocket communication
 CInvalidHeaderExceptionException for invalid headers
 CInvalidHttpVersionExceptionException in case of Invalid HTTP Version
 CInvalidPostFormExceptionException for invalid post forms
 CInvalidRequestURIExceptionException cause by an invalid request URI
 CInvalidStatusCodeExceptionException for invalid response status code
 CInvalidWebsocketFormatException
 CMethodInvalidExceptionInvalid HTTP Method Exception
 CNoDataException
 NLogging
 CConsoleLoggerBasic logger that outputs the log messages to the console
 CDebugConsoleLogger
 CILoggerInterface for loggers
 NServer
 NHandlers
 CBroadcastHandlerBroadcast handler
 CEncryptionHandlerHandler that encrypts the communication
 CHttpHandlerHandler for handling server http requests
 CIHandlerInterface for communication handlers
 CWebsocketHandler
 CClientDataStructure containing client information
 CServerBasic server class to handle TCP connections
 CMessage
+
+
+
+ +
+ + diff --git a/docs/annotated_dup.js b/docs/annotated_dup.js new file mode 100644 index 0000000..dbfe444 --- /dev/null +++ b/docs/annotated_dup.js @@ -0,0 +1,4 @@ +var annotated_dup = +[ + [ "MTSC", "d7/dcd/namespace_m_t_s_c.html", "d7/dcd/namespace_m_t_s_c" ] +]; \ No newline at end of file diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..fc69559f436aacb2f32fe603d16f6211637dc61f GIT binary patch literal 657 zcmV;C0&e|@P)KGb9QXn)H$c4<L-5K7qQ0{{b7%A~d^`{D`+eWT`@#D@-#r;kUfk;qCqS39 zv^>89KnGUv$zh(iawZecZEu$s0O&xDk4(f(CiBaX6#Yf_N4~7Q|E&`w;^)=4Aa(WI zdERnwd1c{My?{H2Pj-H+&-i`PO`7WjWMt@^8jXaIvJx6(8HP(`bLnhNFdRFpBE3lfXyhYjyDvp6y(K;WCJ8`?35&Vuc89yO!n&LS05tM`o5K^} zIO97K?j8o9LyOw>fOxd(5z?&;0nlOE)@;9GZ*`Z}D)~vG$b$fMSn_rRn`rr~Bo5h0FC?$5Q>(m7@YU!00000NkvXXu0mjf&Qm|^ literal 0 HcmV?d00001 diff --git a/docs/bdwn.png b/docs/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..6d87132a778d0cda89309be174ca7368dfa7e280 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZ2u~NskP61PbMJCC81S^%mvVo+ zD993DTe5mv^v-3xj(f2H`w3BAor + + + + + + +MTSC: Class Index + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
b | c | d | e | f | h | i | m | n | s | w
+ + + + + + + + + + + + + + + + + +
  b  
+
  e  
+
Http404Module (MTSC.Common.Http.ServerModules)   InvalidHeaderException (MTSC.Exceptions)   
  s  
+
HttpHandler (MTSC.Client.Handlers)   InvalidHttpVersionException (MTSC.Exceptions)   
BroadcastHandler (MTSC.Client.Handlers)   EchoModule (MTSC.Common.WebSockets.ServerModules)   HttpHandler (MTSC.Server.Handlers)   InvalidPostFormException (MTSC.Exceptions)   Server (MTSC.Server)   
BroadcastHandler (MTSC.Server.Handlers)   EncryptionHandler (MTSC.Server.Handlers)   HttpMessage (MTSC.Common.Http)   InvalidRequestURIException (MTSC.Exceptions)   
  w  
+
BroadcastModule (MTSC.Common.WebSockets.ServerModules)   EncryptionHandler (MTSC.Client.Handlers)   
  i  
+
InvalidStatusCodeException (MTSC.Exceptions)   
  c  
+
ExceptionConsoleLogger (MTSC.Exceptions)   InvalidWebsocketFormatException (MTSC.Exceptions)   WebsocketHandler (MTSC.Client.Handlers)   
ExceptionThrower (MTSC.Exceptions)   IExceptionHandler (MTSC.Exceptions)   IWebsocketModule (MTSC.Common.WebSockets.ClientModules)   WebsocketHandler (MTSC.Server.Handlers)   
ChatModule (MTSC.Common.WebSockets.ClientModules)   
  f  
+
IHandler (MTSC.Client.Handlers)   IWebsocketModule (MTSC.Common.WebSockets.ServerModules)   WebsocketMessage (MTSC.Common.WebSockets)   
Client (MTSC.Client)   IHandler (MTSC.Server.Handlers)   
  m  
+
ClientData (MTSC.Server)   FileServerModule (MTSC.Common.Http.ServerModules)   IHttpModule (MTSC.Common.Http.ServerModules)   
ConsoleLogger (MTSC.Logging)   
  h  
+
IHttpModule (MTSC.Common.Http.ClientModules)   Message (MTSC)   
  d  
+
ILogger (MTSC.Logging)   MethodInvalidException (MTSC.Exceptions)   
HelloWorldModule (MTSC.Common.Http.ServerModules)   InvalidFirstByteException (MTSC.Exceptions)   
  n  
+
DebugConsoleLogger (MTSC.Logging)   
NoDataException (MTSC.Exceptions)   
+
b | c | d | e | f | h | i | m | n | s | w
+
+
+ + + + diff --git a/docs/closed.png b/docs/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..ed775a9ff119e3891739455f7e1fe456ae99a2d2 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vex5FlAr*{o?>^*gaNu!%=$|eW zb8up;V}bh97U$?wmQJ6v*Jr+D5!j=5yLEx&CSwc57u+(>|2;_!mXmOj{nL8ul;V~A irUzm1dl}bjJzz@@6=_p`A<7CgnZeW5&t;ucLK6UE*)1yo literal 0 HcmV?d00001 diff --git a/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html b/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html new file mode 100644 index 0000000..40f9223 --- /dev/null +++ b/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidHeaderException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidHeaderException Class Reference
+
+
+ +

Exception for invalid headers. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidHeaderException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidHeaderException (string message)
 
InvalidHeaderException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidHeaderException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception for invalid headers.

+ +

Definition at line 11 of file InvalidHeaderException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.js b/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.js new file mode 100644 index 0000000..2ae5a82 --- /dev/null +++ b/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception = +[ + [ "InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html#aeac4f7f3e9afdebf3a112860f4ce64fe", null ], + [ "InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html#a9279df5bb9ee71344b442b4e049c8be5", null ], + [ "InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html#afaf49d77217b572db59bf4ece4c194a9", null ], + [ "InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html#af01fd292f76b7cc08613cb4b672200d7", null ] +]; \ No newline at end of file diff --git a/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.png b/docs/d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd3b83c69a014972ed99134a29137867c35c368 GIT binary patch literal 697 zcmeAS@N?(olHy`uVBq!ia0vp^zkoP^gBeJ&Z=KN&q$C1-LR|m<{|{uIId#L>(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ0JUm?-Ln;{G&b@ePwE_>Dx%uCF|9k&$ zQ)p7!_BG_W$;`sl3#RF`RCLdr>2Kiq$zz50By*?ONqY+0s#YzZwB_XAcQ3sQx^}7b z?o|5f7g9e@?(}RUg}HC){H~u5yQ=OP|MX0#f8^XJr%o>Uwc?k`%h_{wUH?35+RqHN zBvb84Uwr-UzV5A>#i#yibA0~C`bgX9JH@~K;$OM^iCoB!)m1}ZQD`sC1Cmz z?}9aYp5lV9COzp5n68q4=jz!rF-!%r<_zr0{j;k}%h$+>${mnj$oHT( zfc=Bp3g!ysD~x*tUoqU{C}qfRv1%}Pl06`eDy?_m%o%lw26vduBD=E(_9|cB|J?N_ zhsk~B24A^+rY|>lneGo=x2s>zivNi5YX50Z|DQg8N6PE%$+xTYoohX16V80=NdEeC z^;e!HM@|&a7gme4j}DFh`CDgNe(JKYtSzt3GW^WT)Ghipx8hdI`SP@bnPyeNGaju@ z_B((5_^S0su2=7r+4}3(%$=dOKg(>YUq$W zDpC=pTV6?@j`&_D;UBGWtH^HEhoxuUyj$xR@j8*`+2gN!|5e&pzk2SpWWu3OU{ znmwGYu`2Odi*(2jmCGSN&Ocsxm67k$`+uAdEUZ7aSRF`|S%9Tt}T=l9K=>Hd%5 Ywa?7VE|+sXz;wpo>FVdQ&MBb@0O%)KJOBUy literal 0 HcmV?d00001 diff --git a/docs/d0/d25/class_m_t_s_c_1_1_server_1_1_client_data-members.html b/docs/d0/d25/class_m_t_s_c_1_1_server_1_1_client_data-members.html new file mode 100644 index 0000000..b231328 --- /dev/null +++ b/docs/d0/d25/class_m_t_s_c_1_1_server_1_1_client_data-members.html @@ -0,0 +1,114 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.ClientData Member List
+
+
+ +

This is the complete list of members for MTSC.Server.ClientData, including all inherited members.

+ + + + + + +
ClientData(TcpClient client) (defined in MTSC.Server.ClientData)MTSC.Server.ClientData
LastMessageTime (defined in MTSC.Server.ClientData)MTSC.Server.ClientData
SslStream (defined in MTSC.Server.ClientData)MTSC.Server.ClientData
TcpClient (defined in MTSC.Server.ClientData)MTSC.Server.ClientData
ToBeRemoved (defined in MTSC.Server.ClientData)MTSC.Server.ClientData
+
+ + + + diff --git a/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.dot b/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.dot new file mode 100644 index 0000000..76f0e9b --- /dev/null +++ b/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ClientModules.ChatModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.WebSockets.Client\lModules.ChatModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html",tooltip="Interface for websocket modules."]; +} diff --git a/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.md5 b/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.md5 new file mode 100644 index 0000000..96142a9 --- /dev/null +++ b/docs/d0/d51/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__inherit__graph.md5 @@ -0,0 +1 @@ +1f059db1db66b0726a0a969aeeaa752e \ No newline at end of file diff --git a/docs/d0/d61/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module-members.html b/docs/d0/d61/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module-members.html new file mode 100644 index 0000000..784da90 --- /dev/null +++ b/docs/d0/d61/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.ClientModules.IHttpModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.ClientModules.IHttpModule, including all inherited members.

+ + +
HandleResponse(IHandler handler, HttpMessage response)MTSC.Common.Http.ClientModules.IHttpModule
+
+ + + + diff --git a/docs/d0/d6e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger-members.html b/docs/d0/d6e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger-members.html new file mode 100644 index 0000000..da946c3 --- /dev/null +++ b/docs/d0/d6e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger-members.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Logging.DebugConsoleLogger Member List
+
+
+ +

This is the complete list of members for MTSC.Logging.DebugConsoleLogger, including all inherited members.

+ + + +
Log(string message)MTSC.Logging.DebugConsoleLogger
LogDebug(string message)MTSC.Logging.DebugConsoleLogger
+
+ + + + diff --git a/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.dot b/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.dot new file mode 100644 index 0000000..4da714c --- /dev/null +++ b/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidFirstByteException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidFirst\lByteException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception in case of first invalid byte for websocket communication."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.md5 b/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.md5 new file mode 100644 index 0000000..560d9f8 --- /dev/null +++ b/docs/d0/d74/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__inherit__graph.md5 @@ -0,0 +1 @@ +6c607ae406fcfd45f90d95c9b826ad89 \ No newline at end of file diff --git a/docs/d0/da0/_websocket_message_8cs_source.html b/docs/d0/da0/_websocket_message_8cs_source.html new file mode 100644 index 0000000..647ff85 --- /dev/null +++ b/docs/d0/da0/_websocket_message_8cs_source.html @@ -0,0 +1,122 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/WebsocketMessage.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
WebsocketMessage.cs
+
+
+
1 using MTSC.Exceptions;
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5 
7 {
11  public class WebsocketMessage
12  {
13  public enum Opcodes
14  {
15  Text = 1,
16  Binary = 2,
17  Close = 8,
18  Ping = 9,
19  Pong = 10
20  }
21 
22  byte controlByte = new byte();
23  byte[] lengthBytes;
24  byte[] data;
28  public bool FIN { get => (controlByte & 0x80) == 0x80; set => controlByte = (byte)(value? controlByte | 0x80 : controlByte & 0x7F);}
33  public Opcodes Opcode { get => (Opcodes)(controlByte & 0xF);
34  set => controlByte = (byte)((controlByte & 0xF0) | ((int)value & 0xF)); }
38  public bool Masked { get => (lengthBytes[0] & 0x80) == 0x80; set => lengthBytes[0] = (byte)(value ? lengthBytes[0] | 0x80 : lengthBytes[0] & 0x7F); }
42  public ulong MessageLength
43  {
44  get
45  {
46  if ((lengthBytes[0] & 0x7F) <= 125)
47  {
48  return (ulong)(lengthBytes[0] & 0x7F);
49  }
50  else if ((lengthBytes[0] & 0x7F) == 126)
51  {
52  return (ulong)((lengthBytes[2] << 8) + lengthBytes[1]);
53  }
54  else if ((lengthBytes[0] & 0x7F) == 127)
55  {
56  return (ulong)((lengthBytes[8] << 56) + (lengthBytes[7] << 48) + (lengthBytes[6] << 40) + (lengthBytes[5] << 32) +
57  (lengthBytes[4] << 24) + (lengthBytes[3] << 16) + (lengthBytes[2] << 8) + lengthBytes[1]);
58  }
59  else
60  {
61  return 0;
62  }
63  }
64  set
65  {
66  if(value <= 125)
67  {
68  if(lengthBytes.Length != 1)
69  {
70  byte[] newLengthBytes = new byte[1];
71  newLengthBytes[0] = lengthBytes[0];
72  lengthBytes = newLengthBytes;
73  }
74  lengthBytes[0] = (byte)((lengthBytes[0] & 0x80) | ((byte)value & 0x7F));
75  }
76  else if(value <= UInt16.MaxValue)
77  {
78  if (lengthBytes.Length != 3)
79  {
80  byte[] newLengthBytes = new byte[3];
81  newLengthBytes[0] = (byte)(lengthBytes[0] & 0x80);
82  newLengthBytes[0] += 126;
83  lengthBytes = newLengthBytes;
84  }
85  for(int i = 1; i < 3; i++)
86  {
87  lengthBytes[i] = (byte)(value & 0xFF);
88  value >>= 8;
89  }
90  }
91  else if(value <= UInt64.MaxValue)
92  {
93  if (lengthBytes.Length != 8)
94  {
95  byte[] newLengthBytes = new byte[9];
96  newLengthBytes[0] = (byte)(lengthBytes[0] & 0x80);
97  newLengthBytes[0] += 127;
98  lengthBytes = newLengthBytes;
99  }
100  for (int i = 1; i < 9; i++)
101  {
102  lengthBytes[i] = (byte)(value & 0xFF);
103  value >>= 8;
104  }
105  }
106  else
107  {
108 
109  }
110  }
111  }
115  public byte[] Mask { get; set; }
119  public byte[] Data
120  {
121  get => data;
122  set
123  {
124  MessageLength = (ulong)value.Length;
125  data = value;
126  }
127  }
128 
133  public WebsocketMessage(byte[] messageBytes)
134  {
135  controlByte = messageBytes[0];
136  Mask = new byte[4];
137  ulong dataLength = 0;
138  int dataIndex = 0;
139  if ((messageBytes[1] & 0x7F) <= 125)
140  {
141  lengthBytes = new byte[1];
142  lengthBytes[0] = messageBytes[1];
143  dataLength = (ulong)(messageBytes[1] & 0x7F);
144  dataIndex = 2;
145  }
146  else if ((messageBytes[1] & 0x7F) == 126)
147  {
148  dataLength = (ulong)((messageBytes[3] << 8) + messageBytes[2]);
149  lengthBytes = new byte[3];
150  Array.Copy(messageBytes, 1, lengthBytes, 0, 3);
151  dataIndex = 4;
152  }
153  else if ((messageBytes[1] & 0x7F) == 127)
154  {
155  dataLength = (ulong)((messageBytes[9] << 56) + (messageBytes[8] << 48) + (messageBytes[7] << 40) + (messageBytes[6] << 32) +
156  (messageBytes[5] << 24) + (messageBytes[4] << 16) + (messageBytes[3] << 8) + messageBytes[2]);
157  dataIndex = 10;
158  lengthBytes = new byte[9];
159  Array.Copy(messageBytes, 1, lengthBytes, 0, 9);
160  }
161  else
162  {
163  lengthBytes = new byte[0];
164  throw new InvalidWebsocketFormatException("Length formatting is wrong");
165  }
166  if ((messageBytes[1] & 0x80) > 0)
167  {
168  Array.Copy(messageBytes, dataIndex, Mask, 0, 4);
169  dataIndex += 4;
170  }
171  data = new byte[dataLength];
172  for(ulong i = 0; i < dataLength; i++)
173  {
174  data[i] = (byte)(messageBytes[(ulong)dataIndex + i] ^ Mask[i % 4]);
175  }
176  }
181  {
182  controlByte = new byte();
183  Mask = new byte[4];
184  data = new byte[0];
185  lengthBytes = new byte[1];
186  }
191  public byte[] GetMessageBytes()
192  {
193  if(data == null)
194  {
195  throw new NoDataException("There is no data in the message");
196  }
197  byte[] messageBytes = new byte[1 + lengthBytes.Length + (Masked ? 4 : 0) + data.Length];
198  messageBytes[0] = controlByte;
199  Array.Copy(lengthBytes, 0, messageBytes, 1, lengthBytes.Length);
200  if (Masked)
201  {
202  Array.Copy(Mask, 0, messageBytes, 1 + lengthBytes.Length, Mask.Length);
203  }
204  for(int i = 0; i < data.Length; i++)
205  {
206  messageBytes[1 + lengthBytes.Length + (Masked ? 4 : 0) + i] = (byte)(Masked ? data[i] ^ Mask[i % 4] : data[i]);
207  }
208  return messageBytes;
209  }
210  }
211 }
+ + + + +
Class containing the bytes of a websocket received message.
+
WebsocketMessage()
Creates a new instance of websocket message.
+ + +
byte [] GetMessageBytes()
Get the packed message bytes.
+ +
WebsocketMessage(byte[] messageBytes)
Creates a new instance of websocket message containing the given message.
+
Definition: Client.cs:14
+ + +
+
+ + + + diff --git a/docs/d0/de5/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module-members.html b/docs/d0/de5/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module-members.html new file mode 100644 index 0000000..6d0bd61 --- /dev/null +++ b/docs/d0/de5/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module-members.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.ServerModules.IHttpModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.ServerModules.IHttpModule, including all inherited members.

+ + + +
HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)MTSC.Common.Http.ServerModules.IHttpModule
Tick(Server.Server server, HttpHandler handler)MTSC.Common.Http.ServerModules.IHttpModule
+
+ + + + diff --git a/docs/d0/deb/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger-members.html b/docs/d0/deb/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger-members.html new file mode 100644 index 0000000..549c324 --- /dev/null +++ b/docs/d0/deb/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.ExceptionConsoleLogger Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.ExceptionConsoleLogger, including all inherited members.

+ + +
HandleException(Exception e)MTSC.Exceptions.ExceptionConsoleLogger
+
+ + + + diff --git a/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.dot b/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.dot new file mode 100644 index 0000000..3320677 --- /dev/null +++ b/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.HttpHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Server.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler for handling server http requests."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.md5 b/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.md5 new file mode 100644 index 0000000..10c60ad --- /dev/null +++ b/docs/d1/d12/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__coll__graph.md5 @@ -0,0 +1 @@ +4b80deabd9ce6532f482694fd97d0cef \ No newline at end of file diff --git a/docs/d1/d35/_client_2_handlers_2_websocket_handler_8cs_source.html b/docs/d1/d35/_client_2_handlers_2_websocket_handler_8cs_source.html new file mode 100644 index 0000000..cf2dbfd --- /dev/null +++ b/docs/d1/d35/_client_2_handlers_2_websocket_handler_8cs_source.html @@ -0,0 +1,130 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers/WebsocketHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
WebsocketHandler.cs
+
+
+
1 using MTSC.Common.Http;
4 using System;
5 using System.Collections.Generic;
6 using System.Security.Cryptography;
7 using System.Text;
8 
9 namespace MTSC.Client.Handlers
10 {
14  public class WebsocketHandler : IHandler
15  {
16  private static string WebsocketHeaderAcceptKey = "Sec-WebSocket-Accept";
17  private static string WebsocketHeaderKey = "Sec-WebSocket-Key";
18  private static string WebsocketProtocolKey = "Sec-WebSocket-Protocol";
19  private static string WebsocketProtocolVersionKey = "Sec-WebSocket-Version";
20  private static string GlobalUniqueIdentifier = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
21  private static SHA1 sha1Provider = SHA1.Create();
22  private enum SocketState
23  {
24  Initial,
25  Handshaking,
26  Established,
27  Closed
28  }
29 
30  #region Fields
31  SocketState state = SocketState.Initial;
32  Queue<WebsocketMessage> messageQueue = new Queue<WebsocketMessage>();
33  List<IWebsocketModule> websocketModules = new List<IWebsocketModule>();
34  string expectedguid = string.Empty;
35  #endregion
36  #region Properties
37  public string WebsocketURI { get; set; }
38  #endregion
39  #region Constructors
40  public WebsocketHandler()
41  {
42  WebsocketURI = "/";
43  }
44  #endregion
45  #region Public Methods
46  public WebsocketHandler AddModule(IWebsocketModule websocketModule)
52  {
53  websocketModules.Add(websocketModule);
54  return this;
55  }
60  public void QueueMessage(WebsocketMessage message)
61  {
62  messageQueue.Enqueue(message);
63  }
64  #endregion
65  #region Handler Implementation
66  void IHandler.Disconnected(Client client)
67  {
68 
69  }
70 
71  bool IHandler.HandleReceivedMessage(Client client, Message message)
72  {
73  if(state == SocketState.Handshaking)
74  {
75  HttpMessage response = new HttpMessage();
76  response.ParseResponse(message.MessageBytes);
77  if(response.StatusCode == HttpMessage.StatusCodes.SwitchingProtocols &&
78  response["Upgrade"] == "websocket" &&
79  response[HttpMessage.GeneralHeadersEnum.Connection].ToLower() == "upgrade" &&
80  response[WebsocketHeaderAcceptKey].Trim() == expectedguid)
81  {
82  state = SocketState.Established;
83  foreach (IWebsocketModule websocketModule in websocketModules)
84  {
85  websocketModule.ConnectionInitialized(client, this);
86  }
87  }
88  return true;
89  }
90  else if(state == SocketState.Established)
91  {
92  WebsocketMessage receivedMessage = new WebsocketMessage(message.MessageBytes);
93  if (receivedMessage.Opcode == WebsocketMessage.Opcodes.Close)
94  {
95  foreach (IWebsocketModule websocketModule in websocketModules)
96  {
97  websocketModule.ConnectionClosed(client, this);
98  }
99  }
100  else
101  {
102  foreach (IWebsocketModule websocketModule in websocketModules)
103  {
104  if (websocketModule.HandleReceivedMessage(client, this, receivedMessage))
105  {
106  break;
107  }
108  }
109  }
110  return true;
111  }
112  return false;
113  }
114 
115  bool IHandler.HandleSendMessage(Client client, ref Message message)
116  {
117  return false;
118  }
119 
120  bool IHandler.InitializeConnection(Client client)
121  {
122  state = SocketState.Handshaking;
123  string handshakeGuid = Guid.NewGuid().ToString();
124  string handshakeKey = handshakeGuid+ GlobalUniqueIdentifier;
125  expectedguid = Convert.ToBase64String(sha1Provider.ComputeHash(Encoding.UTF8.GetBytes(handshakeKey)));
126  HttpMessage beginRequest = new HttpMessage();
127  beginRequest.Method = HttpMessage.MethodEnum.Get;
128  beginRequest.RequestURI = WebsocketURI;
129  beginRequest[HttpMessage.RequestHeadersEnum.Host] = client.Address;
130  beginRequest[HttpMessage.GeneralHeadersEnum.Connection] = "Upgrade";
131  beginRequest[WebsocketHeaderKey] = handshakeGuid;
132  beginRequest["Origin"] = client.Address;
133  beginRequest[WebsocketProtocolKey] = "chat";
134  beginRequest[WebsocketProtocolVersionKey] = "13";
135  client.QueueMessage(beginRequest.GetRequest());
136  return true;
137  }
138 
139  bool IHandler.PreHandleReceivedMessage(Client client, ref Message message)
140  {
141  return false;
142  }
143 
144  void IHandler.Tick(Client client)
145  {
146  while(messageQueue.Count > 0)
147  {
148  WebsocketMessage message = messageQueue.Dequeue();
149  client.QueueMessage(message.GetMessageBytes());
150  if(message.Opcode == WebsocketMessage.Opcodes.Close)
151  {
152  foreach (IWebsocketModule websocketModule in websocketModules)
153  {
154  websocketModule.ConnectionClosed(client, this);
155  }
156  }
157  }
158  }
159  #endregion
160  }
161 }
bool HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)
Handle received message.
+
void QueueMessage(WebsocketMessage message)
Add a message to the queue to be sent.
+
void ConnectionClosed(Client.Client client, WebsocketHandler handler)
Called when an existing websocket connection is being closed.
+
void ConnectionInitialized(Client.Client client, WebsocketHandler handler)
Called when a new websocket connection has been initialized.
+
WebsocketHandler AddModule(IWebsocketModule websocketModule)
Add a module to the websocket handler.
+
byte [] GetRequest()
Build the request bytes based on the message contents.
Definition: HttpMessage.cs:225
+ + + + +
Class containing the bytes of a websocket received message.
+ +
void Disconnected(Client client)
Called when the client is disconnected.
+ +
byte [] GetMessageBytes()
Get the packed message bytes.
+ +
Handler implementing websocket protocol.
+
Handler interface for client communication.
Definition: IHandler.cs:11
+
Definition: Client.cs:14
+
void ParseResponse(byte[] responseBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:375
+
Base class for TCP Client.
Definition: Client.cs:19
+ + +
+
+ + + + diff --git a/docs/d1/d39/_invalid_websocket_format_exception_8cs_source.html b/docs/d1/d39/_invalid_websocket_format_exception_8cs_source.html new file mode 100644 index 0000000..f942d3f --- /dev/null +++ b/docs/d1/d39/_invalid_websocket_format_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidWebsocketFormatException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidWebsocketFormatException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
8  public class InvalidWebsocketFormatException : Exception
9  {
11  {
12  }
13 
14  public InvalidWebsocketFormatException(string message) : base(message)
15  {
16  }
17 
18  public InvalidWebsocketFormatException(string message, Exception innerException) : base(message, innerException)
19  {
20  }
21 
22  protected InvalidWebsocketFormatException(SerializationInfo info, StreamingContext context) : base(info, context)
23  {
24  }
25  }
26 }
+ +
+
+ + + + diff --git a/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.dot b/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.dot new file mode 100644 index 0000000..a7ded4b --- /dev/null +++ b/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.EncryptionHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Client.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 b/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 new file mode 100644 index 0000000..86cab1a --- /dev/null +++ b/docs/d1/d40/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 @@ -0,0 +1 @@ +02a56e52916453cdd5c6616be257b0e3 \ No newline at end of file diff --git a/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.html b/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.html new file mode 100644 index 0000000..829e302 --- /dev/null +++ b/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.html @@ -0,0 +1,147 @@ + + + + + + + +MTSC: MTSC.Exceptions Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  ExceptionConsoleLogger
 Logs the received exceptions to the console. More...
 
class  ExceptionThrower
 Throws all handled exceptions. More...
 
interface  IExceptionHandler
 Handler to be used for handling exception. More...
 
class  InvalidFirstByteException
 Exception in case of first invalid byte for websocket communication. More...
 
class  InvalidHeaderException
 Exception for invalid headers. More...
 
class  InvalidHttpVersionException
 Exception in case of Invalid HTTP Version. More...
 
class  InvalidPostFormException
 Exception for invalid post forms. More...
 
class  InvalidRequestURIException
 Exception cause by an invalid request URI. More...
 
class  InvalidStatusCodeException
 Exception for invalid response status code. More...
 
class  InvalidWebsocketFormatException
 
class  MethodInvalidException
 Invalid HTTP Method Exception. More...
 
class  NoDataException
 
+
+
+ + + + diff --git a/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.js b/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.js new file mode 100644 index 0000000..463faaa --- /dev/null +++ b/docs/d1/d56/namespace_m_t_s_c_1_1_exceptions.js @@ -0,0 +1,15 @@ +var namespace_m_t_s_c_1_1_exceptions = +[ + [ "ExceptionConsoleLogger", "df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html", "df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger" ], + [ "ExceptionThrower", "dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html", "dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower" ], + [ "IExceptionHandler", "d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html", "d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler" ], + [ "InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception" ], + [ "InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception" ], + [ "InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception" ], + [ "InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception" ], + [ "InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception" ], + [ "InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception" ], + [ "InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception" ], + [ "MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception" ], + [ "NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception" ] +]; \ No newline at end of file diff --git a/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.dot b/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.dot new file mode 100644 index 0000000..06f11d8 --- /dev/null +++ b/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.HttpHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Server.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler for handling server http requests."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.md5 b/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.md5 new file mode 100644 index 0000000..c2c128e --- /dev/null +++ b/docs/d1/d67/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler__inherit__graph.md5 @@ -0,0 +1 @@ +4d09f99b74aef30cfbcc8da7286a9de2 \ No newline at end of file diff --git a/docs/d1/d6d/_invalid_header_exception_8cs_source.html b/docs/d1/d6d/_invalid_header_exception_8cs_source.html new file mode 100644 index 0000000..f6207fe --- /dev/null +++ b/docs/d1/d6d/_invalid_header_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidHeaderException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidHeaderException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidHeaderException : Exception
12  {
13  public InvalidHeaderException()
14  {
15  }
16 
17  public InvalidHeaderException(string message) : base(message)
18  {
19  }
20 
21  public InvalidHeaderException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidHeaderException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+ +
+
+ + + + diff --git a/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.dot b/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.dot new file mode 100644 index 0000000..ff5c1ec --- /dev/null +++ b/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.Http.ServerModules.HelloWorldModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Common.Http.ServerModules.\lHelloWorldModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.md5 b/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.md5 new file mode 100644 index 0000000..1881322 --- /dev/null +++ b/docs/d1/d8d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__coll__graph.md5 @@ -0,0 +1 @@ +2c12463b91243a2aed9d7d113ee83485 \ No newline at end of file diff --git a/docs/d1/db2/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module-members.html b/docs/d1/db2/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module-members.html new file mode 100644 index 0000000..48a65f8 --- /dev/null +++ b/docs/d1/db2/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module-members.html @@ -0,0 +1,108 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.ServerModules.HelloWorldModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.ServerModules.HelloWorldModule, including all inherited members.

+
+
+ + + + diff --git a/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.dot b/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.dot new file mode 100644 index 0000000..123f967 --- /dev/null +++ b/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidRequestURIException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidRequest\lURIException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception cause by an invalid request URI."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.md5 b/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.md5 new file mode 100644 index 0000000..45cfcf3 --- /dev/null +++ b/docs/d1/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__coll__graph.md5 @@ -0,0 +1 @@ +92d4f383ef5aff94b14af0cde4ced132 \ No newline at end of file diff --git a/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.dot b/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.dot new file mode 100644 index 0000000..68fd25d --- /dev/null +++ b/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.dot @@ -0,0 +1,12 @@ +digraph "MTSC.Common.WebSockets.ServerModules.IWebsocketModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.WebSockets.Server\lModules.IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.WebSockets.Server\lModules.BroadcastModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Common.WebSockets.Server\lModules.EchoModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html",tooltip=" "]; +} diff --git a/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.md5 b/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.md5 new file mode 100644 index 0000000..b1ee5fb --- /dev/null +++ b/docs/d1/dbf/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module__inherit__graph.md5 @@ -0,0 +1 @@ +434ea95bd2393cdc4f1af17c65b57d14 \ No newline at end of file diff --git a/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.dot b/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.dot new file mode 100644 index 0000000..ac1e41a --- /dev/null +++ b/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.WebsocketHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Client.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler implementing websocket protocol."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 b/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 new file mode 100644 index 0000000..8b49cf0 --- /dev/null +++ b/docs/d1/df8/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 @@ -0,0 +1 @@ +adeb815549e071f55aae5a4b64ccf4e8 \ No newline at end of file diff --git a/docs/d2/d00/_release_2net45_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html b/docs/d2/d00/_release_2net45_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html new file mode 100644 index 0000000..4f92739 --- /dev/null +++ b/docs/d2/d00/_release_2net45_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net45/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
+
+
+
+
+ + + + diff --git a/docs/d2/d29/_echo_module_8cs_source.html b/docs/d2/d29/_echo_module_8cs_source.html new file mode 100644 index 0000000..bb75f21 --- /dev/null +++ b/docs/d2/d29/_echo_module_8cs_source.html @@ -0,0 +1,123 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ServerModules/EchoModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EchoModule.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using MTSC.Server;
6 using MTSC.Server.Handlers;
7 
9 {
11  {
12  #region Public Methods
13  public void SendMessage(WebsocketHandler handler, ClientData client, WebsocketMessage message)
14  {
15  byte[] encodedMessage = message.GetMessageBytes();
16  handler.QueueMessage(client, encodedMessage);
17  }
18  #endregion
19  #region Interface Implementation
21  {
22  SendMessage(handler, client, receivedMessage);
23  return false;
24  }
25 
27  {
28 
29  }
30 
32  {
33 
34  }
35  #endregion
36  }
37 }
+
bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)
Handle a received message.
+
void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been closed.
+
Structure containing client information.
Definition: Server.cs:402
+
Class containing the bytes of a websocket received message.
+
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ + + +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+ +
byte [] GetMessageBytes()
Get the packed message bytes.
+
Definition: Client.cs:14
+
void QueueMessage(ClientData client, byte[] message)
Send a message to the client.
+ +
void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been initialized.
+
+
+ + + + diff --git a/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.dot b/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.dot new file mode 100644 index 0000000..045afb4 --- /dev/null +++ b/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidHeaderException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidHeader\lException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception for invalid headers."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.md5 b/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.md5 new file mode 100644 index 0000000..35a4de4 --- /dev/null +++ b/docs/d2/d2c/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__coll__graph.md5 @@ -0,0 +1 @@ +2be8dcbe5cb76e8084baf9e4a58e6ab2 \ No newline at end of file diff --git a/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html b/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html new file mode 100644 index 0000000..8784310 --- /dev/null +++ b/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html @@ -0,0 +1,119 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ServerModules Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ServerModules Namespace Reference
+
+
+ + + + + + + + +

+Classes

class  BroadcastModule
 
class  EchoModule
 
interface  IWebsocketModule
 
+
+
+ + + + diff --git a/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.js b/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.js new file mode 100644 index 0000000..9cdf64e --- /dev/null +++ b/docs/d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.js @@ -0,0 +1,6 @@ +var namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules = +[ + [ "BroadcastModule", "d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html", null ], + [ "EchoModule", "d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html", "d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module" ], + [ "IWebsocketModule", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module" ] +]; \ No newline at end of file diff --git a/docs/d2/d34/_debug_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html b/docs/d2/d34/_debug_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html new file mode 100644 index 0000000..8b4cd8b --- /dev/null +++ b/docs/d2/d34/_debug_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/netcoreapp2.1/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
+
+
+
+
+ + + + diff --git a/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.dot b/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.dot new file mode 100644 index 0000000..af70f34 --- /dev/null +++ b/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.EncryptionHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Server.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler that encrypts the communication."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.md5 b/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.md5 new file mode 100644 index 0000000..0a9c106 --- /dev/null +++ b/docs/d2/d3d/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__coll__graph.md5 @@ -0,0 +1 @@ +3027f154900205ea917c075a9ec86e03 \ No newline at end of file diff --git a/docs/d2/d6f/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception-members.html b/docs/d2/d6f/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception-members.html new file mode 100644 index 0000000..a52409c --- /dev/null +++ b/docs/d2/d6f/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidHttpVersionException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidHttpVersionException, including all inherited members.

+ + + + + +
InvalidHttpVersionException() (defined in MTSC.Exceptions.InvalidHttpVersionException)MTSC.Exceptions.InvalidHttpVersionException
InvalidHttpVersionException(string message) (defined in MTSC.Exceptions.InvalidHttpVersionException)MTSC.Exceptions.InvalidHttpVersionException
InvalidHttpVersionException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidHttpVersionException)MTSC.Exceptions.InvalidHttpVersionException
InvalidHttpVersionException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidHttpVersionException)MTSC.Exceptions.InvalidHttpVersionExceptionprotected
+
+ + + + diff --git a/docs/d2/d93/class_m_t_s_c_1_1_client_1_1_client-members.html b/docs/d2/d93/class_m_t_s_c_1_1_client_1_1_client-members.html new file mode 100644 index 0000000..e9e7e8d --- /dev/null +++ b/docs/d2/d93/class_m_t_s_c_1_1_client_1_1_client-members.html @@ -0,0 +1,125 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Client Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Client, including all inherited members.

+ + + + + + + + + + + + + + + + + +
AddExceptionHandler(IExceptionHandler handler)MTSC.Client.Client
AddHandler(IHandler handler)MTSC.Client.Client
AddLogger(ILogger logger)MTSC.Client.Client
Address (defined in MTSC.Client.Client)MTSC.Client.Client
CertificateValidationCallbackMTSC.Client.Client
Client(bool useSsl=false) (defined in MTSC.Client.Client)MTSC.Client.Client
Connect()MTSC.Client.Client
ConnectAsync()MTSC.Client.Client
Connected (defined in MTSC.Client.Client)MTSC.Client.Client
Disconnect()MTSC.Client.Client
Log(string log)MTSC.Client.Client
LogDebug(string debugMessage)MTSC.Client.Client
Port (defined in MTSC.Client.Client)MTSC.Client.Client
QueueMessage(byte[] message)MTSC.Client.Client
SetPort(int port)MTSC.Client.Client
SetServerAddress(string address)MTSC.Client.Client
+
+ + + + diff --git a/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html b/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html new file mode 100644 index 0000000..dcdff9a --- /dev/null +++ b/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html @@ -0,0 +1,116 @@ + + + + + + + +MTSC: MTSC.Common.Http Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http Namespace Reference
+
+
+ + + + +

+Classes

class  HttpMessage
 
+
+
+ + + + diff --git a/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.js b/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.js new file mode 100644 index 0000000..dacdf6a --- /dev/null +++ b/docs/d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.js @@ -0,0 +1,6 @@ +var namespace_m_t_s_c_1_1_common_1_1_http = +[ + [ "ClientModules", "da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html", "da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules" ], + [ "ServerModules", "df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html", "df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules" ], + [ "HttpMessage", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message" ] +]; \ No newline at end of file diff --git a/docs/d2/dfb/_debug_console_logger_8cs_source.html b/docs/d2/dfb/_debug_console_logger_8cs_source.html new file mode 100644 index 0000000..d85bc90 --- /dev/null +++ b/docs/d2/dfb/_debug_console_logger_8cs_source.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Logging/DebugConsoleLogger.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
DebugConsoleLogger.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Logging
6 {
7  public class DebugConsoleLogger : ILogger
8  {
14  public bool Log(string message)
15  {
16  return false;
17  }
23  public bool LogDebug(string message)
24  {
25  Console.WriteLine(message);
26  return false;
27  }
28  }
29 }
bool Log(string message)
Ignores simple logging messages.
+
Interface for loggers.
Definition: ILogger.cs:10
+ +
bool LogDebug(string message)
Outputs the debug message to console.
+ +
+
+ + + + diff --git a/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html b/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html new file mode 100644 index 0000000..e0e60c1 --- /dev/null +++ b/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html @@ -0,0 +1,167 @@ + + + + + + + +MTSC: MTSC.Server.Handlers.EncryptionHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers.EncryptionHandler Class Reference
+
+
+ +

Handler that encrypts the communication. + More...

+
+Inheritance diagram for MTSC.Server.Handlers.EncryptionHandler:
+
+
+ + +MTSC.Server.Handlers.IHandler + +
+ + + + + +

+Public Member Functions

 EncryptionHandler (RSACryptoServiceProvider rsa)
 Creates an instance of EncryptionHandler. More...
 
+

Detailed Description

+

Handler that encrypts the communication.

+ +

Definition at line 13 of file EncryptionHandler.cs.

+

Constructor & Destructor Documentation

+ +

◆ EncryptionHandler()

+ +
+
+ + + + + + + + +
MTSC.Server.Handlers.EncryptionHandler.EncryptionHandler (RSACryptoServiceProvider rsa)
+
+ +

Creates an instance of EncryptionHandler.

+
Parameters
+ + + +
rsaSymmetrical algorithm to be used for end-to-end encryption.
serverServer object managed by the handler.
+
+
+ +

Definition at line 39 of file EncryptionHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.js b/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.js new file mode 100644 index 0000000..df28e8f --- /dev/null +++ b/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler = +[ + [ "EncryptionHandler", "d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html#ae5bb24ae6e62eaec16907bd87d5f30f8", null ] +]; \ No newline at end of file diff --git a/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.png b/docs/d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..f8801f104f903e6737331966f8b325d39a8bf42d GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^|A9DwgBeIZoD+N)NJ#|vgt-3y4-!9f>V~nQ^8_FZ zj1L?*u*q$a36RTC666=m08|75S5Ji)F)%Q_@^oTI_o>4E?{r6Ve{N-l3!QA6cQMb!1|NZ)xv1{7g#qE1VG(Eld zo{fJdU%cg<;0$e$AA8r?RUC1%yU(J>FIj#6@47_A_WIx7=f!`g{{7BZ;=KOn z@!&VxN>18$PFb?_-qZKtwYeqkv$)_ztB5zHu~;B^S=L3eVMQIb8`Ho zMKJPv?R{qM2kKuL1tJdqw6{yjcPRMh|L20Vz+C&+^`DrJgpz=-_J7X5y^U2&+95&} zsMjU*llZ?~yz^z38q}HI5=~ss-H<&sq9L&VBxBmDn~c+D`F<)ocP>8gHp|@_YZ^ z=$=mPw%N-*&seuLclzV?@B5c!-?Ti|Y$0pnWAbwM{Lfwcd!%A7Te07q|5u@0%RUDf z>``Ao&a+kj^k?e#);Y<4v*k9fo;i2ctQEkZ*8v87_vNiSEYJO$|M7S3jI+O-&Y9NN z&N=^ogHABhxzglaF6loG{@|{Q&er>p|Ln{6`TE~Z|9W5hq%H1qfBMCVcK;vT&Db!r ze)|t~OZ^|eL*u3IhA->e^)bEs%B<}5ox!@>#LpM}Q}4`L`~B^kxPZ=BdF;`eveuMlAPzbgJ&eM5feCv|&=5Y_+Na-$Revdi2v-K|t{Ck2=j7(8A5 KT-G@yGywok8ox^b literal 0 HcmV?d00001 diff --git a/docs/d3/d13/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler-members.html b/docs/d3/d13/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler-members.html new file mode 100644 index 0000000..14ff648 --- /dev/null +++ b/docs/d3/d13/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler-members.html @@ -0,0 +1,115 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Handlers.IHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Handlers.IHandler, including all inherited members.

+ + + + + + + +
Disconnected(Client client)MTSC.Client.Handlers.IHandler
HandleReceivedMessage(Client client, Message message)MTSC.Client.Handlers.IHandler
HandleSendMessage(Client client, ref Message message)MTSC.Client.Handlers.IHandler
InitializeConnection(Client client)MTSC.Client.Handlers.IHandler
PreHandleReceivedMessage(Client client, ref Message message)MTSC.Client.Handlers.IHandler
Tick(Client client)MTSC.Client.Handlers.IHandler
+
+ + + + diff --git a/docs/d3/d1b/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler-members.html b/docs/d3/d1b/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler-members.html new file mode 100644 index 0000000..c9adc5a --- /dev/null +++ b/docs/d3/d1b/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler-members.html @@ -0,0 +1,115 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Handlers.IHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Server.Handlers.IHandler, including all inherited members.

+ + + + + + + +
ClientRemoved(Server server, ClientData client)MTSC.Server.Handlers.IHandler
HandleClient(Server server, ClientData client)MTSC.Server.Handlers.IHandler
HandleReceivedMessage(Server server, ClientData client, Message message)MTSC.Server.Handlers.IHandler
HandleSendMessage(Server server, ClientData client, ref Message message)MTSC.Server.Handlers.IHandler
PreHandleReceivedMessage(Server server, ClientData client, ref Message message)MTSC.Server.Handlers.IHandler
Tick(Server server)MTSC.Server.Handlers.IHandler
+
+ + + + diff --git a/docs/d3/d3f/_hello_world_module_8cs_source.html b/docs/d3/d3f/_hello_world_module_8cs_source.html new file mode 100644 index 0000000..6386fb4 --- /dev/null +++ b/docs/d3/d3f/_hello_world_module_8cs_source.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ServerModules/HelloWorldModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
HelloWorldModule.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using MTSC.Server;
5 using MTSC.Server.Handlers;
6 
8 {
10  {
11  byte[] response = ASCIIEncoding.ASCII.GetBytes("Hello, World!");
12  bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
13  {
14  if (request.Method == HttpMessage.MethodEnum.Get)
15  {
16  //client.ToBeRemoved = true;
17  response.StatusCode = HttpMessage.StatusCodes.OK;
18  response[HttpMessage.GeneralHeadersEnum.Date] = DateTime.Now.ToString();
19  response[HttpMessage.EntityHeadersEnum.ContentType] = "text/plain; charset=UTF-8";
20  response["Server"] = "MTSC";
21  response.Body = this.response;
22  }
23  return true;
24  }
25 
26  void IHttpModule.Tick(Server.Server server, HttpHandler handler)
27  {
28 
29  }
30  }
31 }
void Tick(Server.Server server, HttpHandler handler)
Perform periodic operations.
+
Structure containing client information.
Definition: Server.cs:402
+ + +
Handler for handling server http requests.
Definition: HttpHandler.cs:15
+ +
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
Handle the received request.
+ +
Definition: Client.cs:14
+
Interface for Http modules used by the server http handler.
Definition: IHttpModule.cs:13
+
+
+ + + + diff --git a/docs/d3/d41/_http404_module_8cs_source.html b/docs/d3/d41/_http404_module_8cs_source.html new file mode 100644 index 0000000..1b838f9 --- /dev/null +++ b/docs/d3/d41/_http404_module_8cs_source.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ServerModules/Http404Module.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Http404Module.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using MTSC.Server;
5 using MTSC.Server.Handlers;
6 
8 {
12  public class Http404Module : IHttpModule
13  {
22  bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
23  {
24  if(request.Method == HttpMessage.MethodEnum.Get)
25  {
26  //client.ToBeRemoved = true;
27  response.StatusCode = HttpMessage.StatusCodes.NotFound;
28  response[HttpMessage.GeneralHeadersEnum.Date] = DateTime.Now.ToString();
29  }
30  return true;
31  }
32 
33  void IHttpModule.Tick(Server.Server server, HttpHandler handler)
34  {
35 
36  }
37  }
38 }
void Tick(Server.Server server, HttpHandler handler)
Perform periodic operations.
+
Structure containing client information.
Definition: Server.cs:402
+ +
Handler for handling server http requests.
Definition: HttpHandler.cs:15
+ +
Simple module that returns status code 404.
+
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
Handle the received request.
+ +
Definition: Client.cs:14
+
Interface for Http modules used by the server http handler.
Definition: IHttpModule.cs:13
+
+
+ + + + diff --git a/docs/d3/d42/_client_2_handlers_2_encryption_handler_8cs_source.html b/docs/d3/d42/_client_2_handlers_2_encryption_handler_8cs_source.html new file mode 100644 index 0000000..814544b --- /dev/null +++ b/docs/d3/d42/_client_2_handlers_2_encryption_handler_8cs_source.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers/EncryptionHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EncryptionHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Net.Sockets;
5 using System.Security.Cryptography;
6 using System.Text;
7 using System.Xml;
8 
9 namespace MTSC.Client.Handlers
10 {
11  public class EncryptionHandler : IHandler
12  {
13  private enum ConnectionState
14  {
15  Initial,
16  RequestingPublicKey,
17  NegotiatingSymKey,
18  Encrypted
19  }
20  #region Fields
21  private ConnectionState connectionState = ConnectionState.Initial;
22  private byte[] aesKey;
23  #endregion
24  #region Constructors
25  public EncryptionHandler()
30  {
31 
32  }
33  #endregion
34  #region Public Methods
35 
36  #endregion
37  #region Private Methods
38  private string GetUniqueKey(int size)
39  {
40  return Convert.ToBase64String(GetUniqueByteKey(size));
41  }
42 
43  private byte[] GetUniqueByteKey(int size)
44  {
45  byte[] data = new byte[size];
46  using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
47  {
48  crypto.GetBytes(data);
49  }
50  return data;
51  }
52 
53  private byte[] EncryptBytes(byte[] bytesToBeEncrypted)
54  {
55  byte[] encryptedBytes = null;
56 
57  // Set your salt here, change it to meet your flavor:
58  // The salt bytes must be at least 8 bytes.
59  byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
60 
61  using (MemoryStream ms = new MemoryStream())
62  {
63  using (RijndaelManaged AES = new RijndaelManaged())
64  {
65  AES.KeySize = 256;
66  AES.BlockSize = 128;
67  AES.Mode = CipherMode.CBC;
68  var key = new Rfc2898DeriveBytes(aesKey, saltBytes, 1000);
69  AES.Key = key.GetBytes(AES.KeySize / 8);
70  AES.IV = key.GetBytes(AES.BlockSize / 8);
71 
72  using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
73  {
74  cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
75  cs.Close();
76  }
77  encryptedBytes = ms.ToArray();
78  }
79  }
80 
81  return encryptedBytes;
82  }
83 
84  private byte[] DecryptBytes(byte[] bytesToBeDecrypted)
85  {
86  byte[] decryptedBytes = null;
87 
88  // Set your salt here, change it to meet your flavor:
89  // The salt bytes must be at least 8 bytes.
90  byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
91 
92  using (MemoryStream ms = new MemoryStream())
93  {
94  using (RijndaelManaged AES = new RijndaelManaged())
95  {
96  AES.KeySize = 256;
97  AES.BlockSize = 128;
98 
99  AES.Mode = CipherMode.CBC;
100 
101  var key = new Rfc2898DeriveBytes(aesKey, saltBytes, 1000);
102  AES.Key = key.GetBytes(AES.KeySize / 8);
103  AES.IV = key.GetBytes(AES.BlockSize / 8);
104 
105 
106 
107  using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
108  {
109  cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
110  cs.Close();
111  }
112  decryptedBytes = ms.ToArray();
113  }
114  }
115 
116  return decryptedBytes;
117  }
118 
119  private string EncryptText(string input)
120  {
121  // Get the bytes of the string
122  byte[] bytesToBeEncrypted = Encoding.UTF8.GetBytes(input);
123 
124  byte[] bytesEncrypted = EncryptBytes(bytesToBeEncrypted);
125 
126  string result = Encoding.UTF8.GetString(bytesEncrypted);
127 
128  return result;
129  }
130 
131  private string DecryptText(string input)
132  {
133  // Get the bytes of the string
134  byte[] bytesToBeDecrypted = Encoding.UTF8.GetBytes(input);
135 
136  byte[] bytesDecrypted = DecryptBytes(bytesToBeDecrypted);
137 
138  string result = Encoding.UTF8.GetString(bytesDecrypted);
139 
140  return result;
141  }
142  #endregion
143  #region Interface Implementation
150  {
151  this.connectionState = ConnectionState.Initial;
152  return true;
153  }
158  void IHandler.Disconnected(Client client)
159  {
160 
161  }
168  bool IHandler.HandleSendMessage(Client client, ref Message message)
169  {
170  if (connectionState == ConnectionState.Encrypted)
171  {
172  byte[] decryptedBytes = message.MessageBytes;
173  byte[] encryptedBytes = EncryptBytes(decryptedBytes);
174  message = CommunicationPrimitives.BuildMessage(encryptedBytes);
175  return true;
176  }
177  return false;
178  }
185  bool IHandler.PreHandleReceivedMessage(Client client, ref Message message)
186  {
187  if (connectionState == ConnectionState.Encrypted)
188  {
189  byte[] encryptedBytes = message.MessageBytes;
190  byte[] decryptedBytes = DecryptBytes(encryptedBytes);
191  message = CommunicationPrimitives.BuildMessage(decryptedBytes);
192  return false;
193  }
194  return false;
195  }
202  bool IHandler.HandleReceivedMessage(Client client, Message message)
203  {
204  if (connectionState == ConnectionState.RequestingPublicKey)
205  {
206  string ascii = ASCIIEncoding.ASCII.GetString(message.MessageBytes);
207  if (ascii.Contains(CommunicationPrimitives.SendPublicKey))
208  {
209  byte[] publicKeyBytes = new byte[message.MessageLength - CommunicationPrimitives.SendPublicKey.Length - 1];
210  Array.Copy(message.MessageBytes, CommunicationPrimitives.SendPublicKey.Length + 1, publicKeyBytes, 0, publicKeyBytes.Length);
211  string publicKey = ASCIIEncoding.ASCII.GetString(publicKeyBytes);
212  RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
213  RSAParameters parameters = new RSAParameters();
214  XmlDocument xmlDoc = new XmlDocument();
215  xmlDoc.LoadXml(publicKey);
216  if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
217  {
218  foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
219  {
220  switch (node.Name)
221  {
222  case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
223  case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
224  case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
225  case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
226  case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
227  case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
228  case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
229  case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
230  }
231  }
232  }
233  rsa.ImportParameters(parameters);
234  byte[] symkeyBytes = GetUniqueByteKey(32);
235  byte[] encryptedSymKey = rsa.Encrypt(symkeyBytes, false);
236  aesKey = symkeyBytes;
237  byte[] messageHeader = ASCIIEncoding.ASCII.GetBytes(CommunicationPrimitives.SendEncryptionKey + ":");
238  byte[] messageBytes = new byte[encryptedSymKey.Length + messageHeader.Length];
239  Array.Copy(messageHeader, 0, messageBytes, 0, messageHeader.Length);
240  Array.Copy(encryptedSymKey, 0, messageBytes, messageHeader.Length, encryptedSymKey.Length);
241  client.QueueMessage(messageBytes);
242  connectionState = ConnectionState.NegotiatingSymKey;
243  return true;
244  }
245  }
246  else if (connectionState == ConnectionState.NegotiatingSymKey)
247  {
248  string ascii = ASCIIEncoding.ASCII.GetString(DecryptBytes(message.MessageBytes));
249  if (ascii == CommunicationPrimitives.AcceptEncryptionKey)
250  {
251  connectionState = ConnectionState.Encrypted;
252  return true;
253  }
254  else
255  {
256  connectionState = ConnectionState.Initial;
257  return false;
258  }
259  }
260  return false;
261  }
267  void IHandler.Tick(Client client)
268  {
269  if (connectionState == ConnectionState.Initial)
270  {
271 
272  client.QueueMessage(ASCIIEncoding.ASCII.GetBytes(CommunicationPrimitives.RequestPublicKey));
273  this.connectionState = ConnectionState.RequestingPublicKey;
274  }
275  }
276  #endregion
277  }
278 }
+ +
EncryptionHandler()
Creates an instance of EncryptionHandler.
+
bool HandleSendMessage(Client client, ref Message message)
Called when a message is being sent to the server.
+
bool PreHandleReceivedMessage(Client client, ref Message message)
Called before the message is handled. Use this method to modify the message if necesarry.
+
bool HandleReceivedMessage(Client client, Message message)
Called when a message has been received.
+
void Tick(Client client)
Called every cycle. This method should perform regular actions on the connection.
+
bool InitializeConnection(Client client)
Called when the connection is being initialized.
+
void Disconnected(Client client)
Called when the client is disconnected.
+
void QueueMessage(byte[] message)
Add a message to the message queue.
Definition: Client.cs:59
+ +
Handler interface for client communication.
Definition: IHandler.cs:11
+
Base class for TCP Client.
Definition: Client.cs:19
+
+
+ + + + diff --git a/docs/d3/d4e/_release_2net45_2_m_t_s_c_8_assembly_info_8cs_source.html b/docs/d3/d4e/_release_2net45_2_m_t_s_c_8_assembly_info_8cs_source.html new file mode 100644 index 0000000..7e43e5b --- /dev/null +++ b/docs/d3/d4e/_release_2net45_2_m_t_s_c_8_assembly_info_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net45/MTSC.AssemblyInfo.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.AssemblyInfo.cs
+
+
+
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 
11 using System;
12 using System.Reflection;
13 
14 [assembly: System.Reflection.AssemblyCompanyAttribute("Alexandru-Victor Macocian")]
15 [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
16 [assembly: System.Reflection.AssemblyDescriptionAttribute("Modular TCP Server and Client")]
17 [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")]
18 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
19 [assembly: System.Reflection.AssemblyProductAttribute("MTSC")]
20 [assembly: System.Reflection.AssemblyTitleAttribute("MTSC")]
21 [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
22 
23 // Generated by the MSBuild WriteCodeFragment class.
24 
+
+ + + + diff --git a/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html b/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html new file mode 100644 index 0000000..dbcd702 --- /dev/null +++ b/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidHttpVersionException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidHttpVersionException Class Reference
+
+
+ +

Exception in case of Invalid HTTP Version. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidHttpVersionException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidHttpVersionException (string message)
 
InvalidHttpVersionException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidHttpVersionException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception in case of Invalid HTTP Version.

+ +

Definition at line 11 of file InvalidHttpVersionException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.js b/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.js new file mode 100644 index 0000000..483193d --- /dev/null +++ b/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception = +[ + [ "InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html#ac8dfc891f0586708404bed130a4f3bb6", null ], + [ "InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html#aaafeb2e414a2d0be04ec8642b78c1c8c", null ], + [ "InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html#ab7692fa169c7095bde99c888e502bf47", null ], + [ "InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html#ac96adb4810c4f2cac963cd214803b084", null ] +]; \ No newline at end of file diff --git a/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.png b/docs/d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..44c9612861479990c42b4aa475c615f68f94d482 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0y~yU=#wf12~w0&tF{3xVnB>_r(R*nJi|XQhy}lHSOMa{V($i%WvIW?H8{V z+5U@JmEo9hVVq{9`P#H)ohJP!Z4NGb{X2H$>-F=kE$wGTzFRhXRf^o}f0O<_efsa; z-mBGBN0ke!9-Z+&Rq=+W`)f{Tp{41H)ZpunZ)e{*T{cZ8l-EG&%BHHH%s?|Wl{cKd z_%-59NnYuuEgEz0WM7?b{5zfb+l{y1oD0`YziyabE>u0&_1j80``*Ac=5{&H>Tm!2 zsw1g+A$p3+t?WymR7d}}bx+N&)WLlzi$fwU1wZh-tKFv9< z$r$(Kge@f|WcKtfQ8|}(VfwM!reA%< z`(>^D&Nf_pc=p^^pE;qN2PXfyH@hLK?&neQ_1!`Y%3cgT_d}RI@B`x%5p{*ZpkyiY apYiab6-DlP-4B4NoWax8&t;ucLK6V#g=x(I literal 0 HcmV?d00001 diff --git a/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html b/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html new file mode 100644 index 0000000..11e3d16 --- /dev/null +++ b/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html @@ -0,0 +1,696 @@ + + + + + + + +MTSC: MTSC.Server.Server Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Server Class Reference
+
+
+ +

Basic server class to handle TCP connections. + More...

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

+Public Member Functions

 Server ()
 Creates an instance of server with default values. More...
 
 Server (int port)
 Creates an instance of server. More...
 
 Server (X509Certificate2 certificate, int port)
 Creates an instance of server. More...
 
Server SetPort (int port)
 Sets the port to the specified value. More...
 
Server AddHandler (IHandler handler)
 Adds a handler to the server. More...
 
Server AddLogger (ILogger logger)
 Adds a logger to the server. More...
 
Server AddExceptionHandler (IExceptionHandler handler)
 Adds an exception handler to the server. More...
 
void QueueMessage (ClientData target, byte[] message)
 Queues a message to be sent. More...
 
void Log (string log)
 Adds a message to be logged by the associated loggers. More...
 
void LogDebug (string debugMessage)
 Adds a debug message to be logged by the associated loggers. More...
 
void Run ()
 Blocking method. Runs the server on the current thread. More...
 
Task RunAsync ()
 Runs the server async. More...
 
void Stop ()
 Stop the server. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Properties

int Port [get, set]
 Server port. More...
 
bool Running [get]
 Returns the state of the server. More...
 
List< ClientDataClients [get, set]
 List of clients currently connected to the server. More...
 
bool ScaleUsage [get, set]
 If set to true, the server will use an algorithm to lower or increase the CPU usage based on demands. More...
 
int TickRate [get, set]
 How many times does the server proc per second. Cannot be set higher than 1000. This tickrate will be respected if either the ForceTickrate is set to true or ScaleUsage is set to true and the server is in power saving mode. More...
 
bool ForceTickrate [get, set]
 If set to true, the server will respect the provided TickRate, regardless of current server load. More...
 
+

Detailed Description

+

Basic server class to handle TCP connections.

+ +

Definition at line 20 of file Server.cs.

+

Constructor & Destructor Documentation

+ +

◆ Server() [1/3]

+ +
+
+ + + + + + + +
MTSC.Server.Server.Server ()
+
+ +

Creates an instance of server with default values.

+ +

Definition at line 68 of file Server.cs.

+ +
+
+ +

◆ Server() [2/3]

+ +
+
+ + + + + + + + +
MTSC.Server.Server.Server (int port)
+
+ +

Creates an instance of server.

+
Parameters
+ + +
portPort to be used by server.
+
+
+ +

Definition at line 76 of file Server.cs.

+ +
+
+ +

◆ Server() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
MTSC.Server.Server.Server (X509Certificate2 certificate,
int port 
)
+
+ +

Creates an instance of server.

+
Parameters
+ + + +
certificateCertificate for SSL.
portPort to be used by the server.
+
+
+ +

Definition at line 85 of file Server.cs.

+ +
+
+

Member Function Documentation

+ +

◆ AddExceptionHandler()

+ +
+
+ + + + + + + + +
Server MTSC.Server.Server.AddExceptionHandler (IExceptionHandler handler)
+
+ +

Adds an exception handler to the server.

+
Parameters
+ + +
handlerHandler to be added.
+
+
+
Returns
This server object.
+ +

Definition at line 127 of file Server.cs.

+ +
+
+ +

◆ AddHandler()

+ +
+
+ + + + + + + + +
Server MTSC.Server.Server.AddHandler (IHandler handler)
+
+ +

Adds a handler to the server.

+
Parameters
+ + +
handlerHandler to be added.
+
+
+
Returns
This server object.
+ +

Definition at line 107 of file Server.cs.

+ +
+
+ +

◆ AddLogger()

+ +
+
+ + + + + + + + +
Server MTSC.Server.Server.AddLogger (ILogger logger)
+
+ +

Adds a logger to the server.

+
Parameters
+ + +
loggerLogger to be added.
+
+
+
Returns
This server object.
+ +

Definition at line 117 of file Server.cs.

+ +
+
+ +

◆ Log()

+ +
+
+ + + + + + + + +
void MTSC.Server.Server.Log (string log)
+
+ +

Adds a message to be logged by the associated loggers.

+

Message to be logged

+ +

Definition at line 145 of file Server.cs.

+ +
+
+ +

◆ LogDebug()

+ +
+
+ + + + + + + + +
void MTSC.Server.Server.LogDebug (string debugMessage)
+
+ +

Adds a debug message to be logged by the associated loggers.

+

Debug message to be logged

+ +

Definition at line 156 of file Server.cs.

+ +
+
+ +

◆ QueueMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Server.Server.QueueMessage (ClientData target,
byte [] message 
)
+
+ +

Queues a message to be sent.

+
Parameters
+ + + +
targetTarget client.
messageMessage to be sent.
+
+
+ +

Definition at line 137 of file Server.cs.

+ +
+
+ +

◆ Run()

+ +
+
+ + + + + + + +
void MTSC.Server.Server.Run ()
+
+ +

Blocking method. Runs the server on the current thread.

+ +

Definition at line 166 of file Server.cs.

+ +
+
+ +

◆ RunAsync()

+ +
+
+ + + + + + + +
Task MTSC.Server.Server.RunAsync ()
+
+ +

Runs the server async.

+ +

Definition at line 381 of file Server.cs.

+ +
+
+ +

◆ SetPort()

+ +
+
+ + + + + + + + +
Server MTSC.Server.Server.SetPort (int port)
+
+ +

Sets the port to the specified value.

+
Parameters
+ + +
portPort value.
+
+
+
Returns
This server instance.
+ +

Definition at line 97 of file Server.cs.

+ +
+
+ +

◆ Stop()

+ +
+
+ + + + + + + +
void MTSC.Server.Server.Stop ()
+
+ +

Stop the server.

+ +

Definition at line 388 of file Server.cs.

+ +
+
+

Property Documentation

+ +

◆ Clients

+ +
+
+ + + + + +
+ + + + +
List<ClientData> MTSC.Server.Server.Clients
+
+getset
+
+ +

List of clients currently connected to the server.

+ +

Definition at line 47 of file Server.cs.

+ +
+
+ +

◆ ForceTickrate

+ +
+
+ + + + + +
+ + + + +
bool MTSC.Server.Server.ForceTickrate
+
+getset
+
+ +

If set to true, the server will respect the provided TickRate, regardless of current server load.

+ +

Definition at line 62 of file Server.cs.

+ +
+
+ +

◆ Port

+ +
+
+ + + + + +
+ + + + +
int MTSC.Server.Server.Port
+
+getset
+
+ +

Server port.

+ +

Definition at line 39 of file Server.cs.

+ +
+
+ +

◆ Running

+ +
+
+ + + + + +
+ + + + +
bool MTSC.Server.Server.Running
+
+get
+
+ +

Returns the state of the server.

+ +

Definition at line 43 of file Server.cs.

+ +
+
+ +

◆ ScaleUsage

+ +
+
+ + + + + +
+ + + + +
bool MTSC.Server.Server.ScaleUsage
+
+getset
+
+ +

If set to true, the server will use an algorithm to lower or increase the CPU usage based on demands.

+ +

Definition at line 52 of file Server.cs.

+ +
+
+ +

◆ TickRate

+ +
+
+ + + + + +
+ + + + +
int MTSC.Server.Server.TickRate
+
+getset
+
+ +

How many times does the server proc per second. Cannot be set higher than 1000. This tickrate will be respected if either the ForceTickrate is set to true or ScaleUsage is set to true and the server is in power saving mode.

+ +

Definition at line 58 of file Server.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.js b/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.js new file mode 100644 index 0000000..887fe41 --- /dev/null +++ b/docs/d3/d7e/class_m_t_s_c_1_1_server_1_1_server.js @@ -0,0 +1,22 @@ +var class_m_t_s_c_1_1_server_1_1_server = +[ + [ "Server", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a39681d659b0b0b78d64ceb200346b572", null ], + [ "Server", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1cb1d11b255666395b92dcd0ea8afdee", null ], + [ "Server", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a9ba78600a4f4f3d46d11181a4b6b50eb", null ], + [ "AddExceptionHandler", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a03c7f49c82093ef63c6a23bdca0ebc06", null ], + [ "AddHandler", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#abe8507e08c560f198f3c6c82838a6687", null ], + [ "AddLogger", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ac09ec60dfa2c27388cf0c92ee25721fa", null ], + [ "Log", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a3452d98e3588375075ba2e9a872ce545", null ], + [ "LogDebug", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a917f430c6dc56d51cd21ab207cb8a4cf", null ], + [ "QueueMessage", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4231d59cf9d26d7f9eda14d2bf1e27ee", null ], + [ "Run", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af4bb64b680d23d398f3f7e289569189d", null ], + [ "RunAsync", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ad56ca49ea0918f37248b0e40bf4a4907", null ], + [ "SetPort", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a53cde7840246a76cf72389665c4ff9f7", null ], + [ "Stop", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1f2742b5f0ac908cc75baf9490f4d9fb", null ], + [ "Clients", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#aa54bab2059f42b5329db361476a40a31", null ], + [ "ForceTickrate", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a97ca0dda04d7bfddab2d115c4b6b3abe", null ], + [ "Port", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#adc95de3549415e7dd8332710f3f1461e", null ], + [ "Running", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af7425affecbc0039273437e4ebb3fde1", null ], + [ "ScaleUsage", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4bd784eb59c4a81a346a09d31146eef3", null ], + [ "TickRate", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a11711d9464da010154adc781a3e0bf71", null ] +]; \ No newline at end of file diff --git a/docs/d3/d96/_client_2_handlers_2_i_handler_8cs_source.html b/docs/d3/d96/_client_2_handlers_2_i_handler_8cs_source.html new file mode 100644 index 0000000..edacbf9 --- /dev/null +++ b/docs/d3/d96/_client_2_handlers_2_i_handler_8cs_source.html @@ -0,0 +1,117 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers/IHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Net.Sockets;
4 using System.Text;
5 
6 namespace MTSC.Client.Handlers
7 {
11  public interface IHandler
12  {
19  bool InitializeConnection(Client client);
26  bool HandleSendMessage(Client client, ref Message message);
34  bool PreHandleReceivedMessage(Client client, ref Message message);
41  bool HandleReceivedMessage(Client client, Message message);
46  void Tick(Client client);
51  void Disconnected(Client client);
52  }
53 }
+
bool HandleSendMessage(Client client, ref Message message)
Called when a message is being sent to the server.
+
bool PreHandleReceivedMessage(Client client, ref Message message)
Called before the message is handled. Use this method to modify the message if necesarry.
+
bool HandleReceivedMessage(Client client, Message message)
Called when a message has been received.
+
void Tick(Client client)
Called every cycle. This method should perform regular actions on the connection.
+
bool InitializeConnection(Client client)
Called when the connection is being initialized.
+
void Disconnected(Client client)
Called when the client is disconnected.
+ +
Handler interface for client communication.
Definition: IHandler.cs:11
+
Base class for TCP Client.
Definition: Client.cs:19
+
+
+ + + + diff --git a/docs/d3/d97/namespace_m_t_s_c_1_1_server.html b/docs/d3/d97/namespace_m_t_s_c_1_1_server.html new file mode 100644 index 0000000..d321ff2 --- /dev/null +++ b/docs/d3/d97/namespace_m_t_s_c_1_1_server.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: MTSC.Server Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server Namespace Reference
+
+
+ + + + + + + + +

+Classes

class  ClientData
 Structure containing client information. More...
 
class  Server
 Basic server class to handle TCP connections. More...
 
+
+
+ + + + diff --git a/docs/d3/d97/namespace_m_t_s_c_1_1_server.js b/docs/d3/d97/namespace_m_t_s_c_1_1_server.js new file mode 100644 index 0000000..56625d1 --- /dev/null +++ b/docs/d3/d97/namespace_m_t_s_c_1_1_server.js @@ -0,0 +1,6 @@ +var namespace_m_t_s_c_1_1_server = +[ + [ "Handlers", "d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html", "d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers" ], + [ "ClientData", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data" ], + [ "Server", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server" ] +]; \ No newline at end of file diff --git a/docs/d3/dac/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler-members.html b/docs/d3/dac/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler-members.html new file mode 100644 index 0000000..3e2b01d --- /dev/null +++ b/docs/d3/dac/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.IExceptionHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.IExceptionHandler, including all inherited members.

+ + +
HandleException(Exception e)MTSC.Exceptions.IExceptionHandler
+
+ + + + diff --git a/docs/d3/db9/_release_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html b/docs/d3/db9/_release_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html new file mode 100644 index 0000000..8934317 --- /dev/null +++ b/docs/d3/db9/_release_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net48/MTSC.AssemblyInfo.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.AssemblyInfo.cs
+
+
+
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 
11 using System;
12 using System.Reflection;
13 
14 [assembly: System.Reflection.AssemblyCompanyAttribute("Alexandru-Victor Macocian")]
15 [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
16 [assembly: System.Reflection.AssemblyDescriptionAttribute("Modular TCP Server and Client")]
17 [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")]
18 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
19 [assembly: System.Reflection.AssemblyProductAttribute("MTSC")]
20 [assembly: System.Reflection.AssemblyTitleAttribute("MTSC")]
21 [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
22 
23 // Generated by the MSBuild WriteCodeFragment class.
24 
+
+ + + + diff --git a/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.dot b/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.dot new file mode 100644 index 0000000..d08ab4b --- /dev/null +++ b/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.dot @@ -0,0 +1,14 @@ +digraph "MTSC.Common.Http.ServerModules.IHttpModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.Http.ServerModules.\lIHttpModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Interface for Http modules used by the server http handler."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.Http.ServerModules.\lFileServerModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Common.Http.ServerModules.\lHelloWorldModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html",tooltip=" "]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Common.Http.ServerModules.\lHttp404Module",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html",tooltip="Simple module that returns status code 404."]; +} diff --git a/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.md5 b/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.md5 new file mode 100644 index 0000000..1772076 --- /dev/null +++ b/docs/d3/dbe/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module__inherit__graph.md5 @@ -0,0 +1 @@ +f2ade1da506faf89670a44ca77097218 \ No newline at end of file diff --git a/docs/d3/dc6/namespace_m_t_s_c_1_1_client.html b/docs/d3/dc6/namespace_m_t_s_c_1_1_client.html new file mode 100644 index 0000000..58e9613 --- /dev/null +++ b/docs/d3/dc6/namespace_m_t_s_c_1_1_client.html @@ -0,0 +1,117 @@ + + + + + + + +MTSC: MTSC.Client Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client Namespace Reference
+
+
+ + + + + +

+Classes

class  Client
 Base class for TCP Client. More...
 
+
+
+ + + + diff --git a/docs/d3/dc6/namespace_m_t_s_c_1_1_client.js b/docs/d3/dc6/namespace_m_t_s_c_1_1_client.js new file mode 100644 index 0000000..4159ae0 --- /dev/null +++ b/docs/d3/dc6/namespace_m_t_s_c_1_1_client.js @@ -0,0 +1,5 @@ +var namespace_m_t_s_c_1_1_client = +[ + [ "Handlers", "da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html", "da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers" ], + [ "Client", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client" ] +]; \ No newline at end of file diff --git a/docs/d3/de1/_i_logger_8cs_source.html b/docs/d3/de1/_i_logger_8cs_source.html new file mode 100644 index 0000000..2341b30 --- /dev/null +++ b/docs/d3/de1/_i_logger_8cs_source.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Logging/ILogger.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ILogger.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Logging
6 {
10  public interface ILogger
11  {
17  bool Log(string message);
23  bool LogDebug(string message);
24  }
25 }
bool Log(string message)
Logs the received message.
+
Interface for loggers.
Definition: ILogger.cs:10
+
bool LogDebug(string message)
Logs the received debug message.
+ +
+
+ + + + diff --git a/docs/d3/df4/_i_exception_handler_8cs_source.html b/docs/d3/df4/_i_exception_handler_8cs_source.html new file mode 100644 index 0000000..73ca4f3 --- /dev/null +++ b/docs/d3/df4/_i_exception_handler_8cs_source.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/IExceptionHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IExceptionHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Exceptions
6 {
10  public interface IExceptionHandler
11  {
17  bool HandleException(Exception e);
18  }
19 }
bool HandleException(Exception e)
Handles exceptions.
+ +
Handler to be used for handling exception.
+
+
+ + + + diff --git a/docs/d3/dfb/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception-members.html b/docs/d3/dfb/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception-members.html new file mode 100644 index 0000000..388311f --- /dev/null +++ b/docs/d3/dfb/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidWebsocketFormatException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidWebsocketFormatException, including all inherited members.

+ + + + + +
InvalidWebsocketFormatException() (defined in MTSC.Exceptions.InvalidWebsocketFormatException)MTSC.Exceptions.InvalidWebsocketFormatException
InvalidWebsocketFormatException(string message) (defined in MTSC.Exceptions.InvalidWebsocketFormatException)MTSC.Exceptions.InvalidWebsocketFormatException
InvalidWebsocketFormatException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidWebsocketFormatException)MTSC.Exceptions.InvalidWebsocketFormatException
InvalidWebsocketFormatException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidWebsocketFormatException)MTSC.Exceptions.InvalidWebsocketFormatExceptionprotected
+
+ + + + diff --git a/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.dot b/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.dot new file mode 100644 index 0000000..10e8dad --- /dev/null +++ b/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.NoDataException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.NoDataException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.md5 b/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.md5 new file mode 100644 index 0000000..1f62d90 --- /dev/null +++ b/docs/d4/d04/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__coll__graph.md5 @@ -0,0 +1 @@ +be00b762d91b91f40407d2ca8fdea362 \ No newline at end of file diff --git a/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html b/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html new file mode 100644 index 0000000..43d6192 --- /dev/null +++ b/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html @@ -0,0 +1,132 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ServerModules.EchoModule Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ServerModules.EchoModule Class Reference
+
+
+
+Inheritance diagram for MTSC.Common.WebSockets.ServerModules.EchoModule:
+
+
+ + +MTSC.Common.WebSockets.ServerModules.IWebsocketModule + +
+ + + + +

+Public Member Functions

+void SendMessage (WebsocketHandler handler, ClientData client, WebsocketMessage message)
 
+

Detailed Description

+
+

Definition at line 10 of file EchoModule.cs.

+

The documentation for this class was generated from the following file:
    +
  • D:/Projects/MTSC/MTSC/Common/WebSockets/ServerModules/EchoModule.cs
  • +
+
+
+ + + + diff --git a/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.js b/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.js new file mode 100644 index 0000000..e708388 --- /dev/null +++ b/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module = +[ + [ "SendMessage", "d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html#a370ee1f417fcd7620409edac0844759c", null ] +]; \ No newline at end of file diff --git a/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.png b/docs/d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.png new file mode 100644 index 0000000000000000000000000000000000000000..820a48405428cdeb78b4dab2ecf4ca0635286873 GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0y~yU@Qf)12~w0O7X_2>CzuBe^2@zbZuUkUft=t%QQWkkEz&q-&`4f z;Ow&4UzdLbsv-N;Zf84i9a*;?^COLoRfoqg9lsLa)z30R&7p^4xK3V$OcUJkNJ(8cB zeieJ~n7wWFvCVgu8-9(ue*FC2Js+Olf1`Wg%Y}pY^4PCu`W9QnuULCX^=54RlFFG+ z*bQ|{J-s}G8Yb;han)Yw9kc~I;Ar9orh;%(SGm@oU#}S*6M!Uy59Ed z?2WOS;G`8$vnQhzVkQm&3cnkT&B0#>Zb1b(-M1b&Hq|*e7$0@ z*XKK*OP)zzzk2d#$$iBGOUh-JZCq`6CBgfZ=>uc?^2=&(%3lkYU2@rA8gbgpI3*hZWETO_Vu zY2TM;cZl`tQs;)qeE;CfDt|u62fg3=v)3Tld|EQw*C*MwNBL(4ZJV&_=Z!?OEBV$e zGrn+st@=6dSBYBm8ROF5>#~cI-KPDTagBA!(}VwbOB?3i3zC0uqt`C<7i;N#vvSil zkVM5OHtW`h8ym`NYrnp416npep#Ggy`Q>f(gu+O_qA6tyWqmF9rsQN3R*fvXnB2& Xy3d(StSYO4g%5+LtDnm{r-UW|-J)l1 literal 0 HcmV?d00001 diff --git a/docs/d4/d2e/_console_logger_8cs_source.html b/docs/d4/d2e/_console_logger_8cs_source.html new file mode 100644 index 0000000..b4fbb41 --- /dev/null +++ b/docs/d4/d2e/_console_logger_8cs_source.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Logging/ConsoleLogger.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleLogger.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Logging
6 {
10  public class ConsoleLogger : ILogger
11  {
16  public bool Log(string message)
17  {
18  Console.WriteLine(message);
19  return false;
20  }
26  public bool LogDebug(string message)
27  {
28  return false;
29  }
30  }
31 }
bool Log(string message)
Outputs the message to the console.
+
Interface for loggers.
Definition: ILogger.cs:10
+
Basic logger that outputs the log messages to the console.
+
bool LogDebug(string message)
Ignores debug messages.
+ +
+
+ + + + diff --git a/docs/d4/d39/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception-members.html b/docs/d4/d39/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception-members.html new file mode 100644 index 0000000..e5e8ef7 --- /dev/null +++ b/docs/d4/d39/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.MethodInvalidException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.MethodInvalidException, including all inherited members.

+ + + + + +
MethodInvalidException() (defined in MTSC.Exceptions.MethodInvalidException)MTSC.Exceptions.MethodInvalidException
MethodInvalidException(string message) (defined in MTSC.Exceptions.MethodInvalidException)MTSC.Exceptions.MethodInvalidException
MethodInvalidException(string message, Exception innerException) (defined in MTSC.Exceptions.MethodInvalidException)MTSC.Exceptions.MethodInvalidException
MethodInvalidException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.MethodInvalidException)MTSC.Exceptions.MethodInvalidExceptionprotected
+
+ + + + diff --git a/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.dot b/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.dot new file mode 100644 index 0000000..0f99b6b --- /dev/null +++ b/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Logging.ConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Logging.ConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Basic logger that outputs the log messages to the console."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="ILogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html",tooltip="Interface for loggers."]; +} diff --git a/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.md5 b/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.md5 new file mode 100644 index 0000000..7bbb991 --- /dev/null +++ b/docs/d4/d6b/class_m_t_s_c_1_1_logging_1_1_console_logger__inherit__graph.md5 @@ -0,0 +1 @@ +fe715b064c217be119fc0b1e89272775 \ No newline at end of file diff --git a/docs/d4/d6d/_debug_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html b/docs/d4/d6d/_debug_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html new file mode 100644 index 0000000..6bfdd8c --- /dev/null +++ b/docs/d4/d6d/_debug_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/net48/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
+
+
+
+
+ + + + diff --git a/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.dot b/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.dot new file mode 100644 index 0000000..9c384b0 --- /dev/null +++ b/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ServerModules.BroadcastModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Common.WebSockets.Server\lModules.BroadcastModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html",tooltip=" "]; +} diff --git a/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.md5 b/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.md5 new file mode 100644 index 0000000..0bec172 --- /dev/null +++ b/docs/d4/d74/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__coll__graph.md5 @@ -0,0 +1 @@ +0dc9a71eb03a01a7a299bf8ec144f220 \ No newline at end of file diff --git a/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html b/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html new file mode 100644 index 0000000..7dc9112 --- /dev/null +++ b/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html @@ -0,0 +1,127 @@ + + + + + + + +MTSC: MTSC.Server.Handlers Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers Namespace Reference
+
+
+ + + + + + + + + + + + + + + + +

+Classes

class  BroadcastHandler
 Broadcast handler. More...
 
class  EncryptionHandler
 Handler that encrypts the communication. More...
 
class  HttpHandler
 Handler for handling server http requests. More...
 
interface  IHandler
 Interface for communication handlers. More...
 
class  WebsocketHandler
 
+
+
+ + + + diff --git a/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.js b/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.js new file mode 100644 index 0000000..4563513 --- /dev/null +++ b/docs/d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.js @@ -0,0 +1,8 @@ +var namespace_m_t_s_c_1_1_server_1_1_handlers = +[ + [ "BroadcastHandler", "dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html", "dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler" ], + [ "EncryptionHandler", "d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html", "d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler" ], + [ "HttpHandler", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler" ], + [ "IHandler", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler" ], + [ "WebsocketHandler", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler" ] +]; \ No newline at end of file diff --git a/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.dot b/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.dot new file mode 100644 index 0000000..c7ef155 --- /dev/null +++ b/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidHttpVersionException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidHttp\lVersionException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception in case of Invalid HTTP Version."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.md5 b/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.md5 new file mode 100644 index 0000000..12f2924 --- /dev/null +++ b/docs/d4/dbb/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__coll__graph.md5 @@ -0,0 +1 @@ +0c3e9845410162fe2075f486a10e2bae \ No newline at end of file diff --git a/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html b/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html new file mode 100644 index 0000000..a9a8ac5 --- /dev/null +++ b/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Server.ClientData Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.ClientData Class Reference
+
+
+ +

Structure containing client information. + More...

+ + + + +

+Public Member Functions

ClientData (TcpClient client)
 
+ + + + + + + + + +

+Public Attributes

+TcpClient TcpClient
 
+DateTime LastMessageTime
 
+bool ToBeRemoved
 
+SslStream SslStream
 
+

Detailed Description

+

Structure containing client information.

+ +

Definition at line 402 of file Server.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.js b/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.js new file mode 100644 index 0000000..4c9492a --- /dev/null +++ b/docs/d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.js @@ -0,0 +1,8 @@ +var class_m_t_s_c_1_1_server_1_1_client_data = +[ + [ "ClientData", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html#aa6c1c3801c853b5019cebedd577e83b3", null ], + [ "LastMessageTime", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html#a9a3026f9a64a13013a93baa625b6254c", null ], + [ "SslStream", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html#ae8a65ab7b90507c565bac8ae5be639be", null ], + [ "TcpClient", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html#a6e42118206134a8c39f5d90e76f582e1", null ], + [ "ToBeRemoved", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html#a0efef2f544d79ef5414f7804187a44b9", null ] +]; \ No newline at end of file diff --git a/docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html b/docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html new file mode 100644 index 0000000..0be6651 --- /dev/null +++ b/docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html @@ -0,0 +1,128 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ServerModules.BroadcastModule Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ServerModules.BroadcastModule Class Reference
+
+
+
+Inheritance diagram for MTSC.Common.WebSockets.ServerModules.BroadcastModule:
+
+
+ + +MTSC.Common.WebSockets.ServerModules.IWebsocketModule + +
+ + +

+Additional Inherited Members

+

Detailed Description

+
+

Definition at line 9 of file BroadcastModule.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.png b/docs/d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb70a001f74d2f855d039ca6f8473a5836df227 GIT binary patch literal 1247 zcmeAS@N?(olHy`uVBq!ia0y~yU@Qf)12~w0M?2T|?$phG#ZgkHRo)+y@ejVN62^Wseqr6b%ljI2xs9e33+LY6 zb2YooM>Cq~>Yeg~zO#NWz4&Hd$IqEnd;iS)RibvAEA7>{*y~S@_2_&xT+7XLySaAa zv$-n!yI!u~51ihq;~|>)qjuRlsb^*fL*wP&yj9nnBsQyRP3NAHy`G=_CYdM41=Qzq zmR~NrS~2an$+CN|fBo1wU3}l4*?U=M$XVUE{q}*?+DyLZ+*?C;sO)~-ZK6N%??_0t9 zC2vnHn*J;Oy8McI**9!oZCk(Js@PdzUVF$YW7FibH+PKUueXHXG+Wsd@Ub$?@F!l4ck|x`d?>n`}#XF zF5$=5PR?yJ-{dao|7HH$&5XBv!}i;Wd8ch>eqONsd9Cz!-_=(m{_lOfJN#9`{GH-C wjn+a literal 0 HcmV?d00001 diff --git a/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.dot b/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.dot new file mode 100644 index 0000000..15fcc98 --- /dev/null +++ b/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.EncryptionHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Server.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler that encrypts the communication."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 b/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 new file mode 100644 index 0000000..e47d171 --- /dev/null +++ b/docs/d5/d0e/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler__inherit__graph.md5 @@ -0,0 +1 @@ +f7f6e56fc04ddbd68b035909255851e1 \ No newline at end of file diff --git a/docs/d5/d1b/_server_modules_2_i_websocket_module_8cs_source.html b/docs/d5/d1b/_server_modules_2_i_websocket_module_8cs_source.html new file mode 100644 index 0000000..a9eca29 --- /dev/null +++ b/docs/d5/d1b/_server_modules_2_i_websocket_module_8cs_source.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ServerModules/IWebsocketModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IWebsocketModule.cs
+
+
+
1 using MTSC.Server;
2 using MTSC.Server.Handlers;
3 using System;
4 using System.Collections.Generic;
5 using System.Text;
6 
8 {
9  public interface IWebsocketModule
10  {
17  void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client);
25  bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage);
32  void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client);
33  }
34 }
+
bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)
Handle a received message.
+
void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been closed.
+
Structure containing client information.
Definition: Server.cs:402
+
Class containing the bytes of a websocket received message.
+
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ + +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+ +
Definition: Client.cs:14
+ +
void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been initialized.
+
+
+ + + + diff --git a/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.dot b/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.dot new file mode 100644 index 0000000..d46269a --- /dev/null +++ b/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.dot @@ -0,0 +1,16 @@ +digraph "MTSC.Server.Handlers.IHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Server.Handlers.IHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Interface for communication handlers."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Server.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html",tooltip="Broadcast handler."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Server.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html",tooltip="Handler that encrypts the communication."]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Server.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html",tooltip="Handler for handling server http requests."]; + Node0 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="MTSC.Server.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html",tooltip=" "]; +} diff --git a/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.md5 b/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.md5 new file mode 100644 index 0000000..1c09fb7 --- /dev/null +++ b/docs/d5/d28/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler__inherit__graph.md5 @@ -0,0 +1 @@ +e8bffe6fc5a8ec37e3f60e2efcf2d077 \ No newline at end of file diff --git a/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.dot b/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.dot new file mode 100644 index 0000000..0d93b1f --- /dev/null +++ b/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.WebsocketHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Server.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 b/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 new file mode 100644 index 0000000..ab7b9d8 --- /dev/null +++ b/docs/d5/d3b/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__inherit__graph.md5 @@ -0,0 +1 @@ +56173062677bbbc61b4004ec0c6c26b9 \ No newline at end of file diff --git a/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html b/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html new file mode 100644 index 0000000..e827e13 --- /dev/null +++ b/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html @@ -0,0 +1,207 @@ + + + + + + + +MTSC: MTSC.Client.Handlers.HttpHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers.HttpHandler Class Reference
+
+
+ +

Handler for handling client http communication. + More...

+
+Inheritance diagram for MTSC.Client.Handlers.HttpHandler:
+
+
+ + +MTSC.Client.Handlers.IHandler + +
+ + + + + + + + +

+Public Member Functions

void SendRequest (Client client, HttpMessage request)
 Send a request to the server. More...
 
HttpHandler AddModule (IHttpModule httpModule)
 Add a http module. More...
 
+

Detailed Description

+

Handler for handling client http communication.

+ +

Definition at line 13 of file HttpHandler.cs.

+

Member Function Documentation

+ +

◆ AddModule()

+ +
+
+ + + + + + + + +
HttpHandler MTSC.Client.Handlers.HttpHandler.AddModule (IHttpModule httpModule)
+
+ +

Add a http module.

+
Parameters
+ + +
httpModuleModule to be added.
+
+
+
Returns
This handler object.
+ +

Definition at line 38 of file HttpHandler.cs.

+ +
+
+ +

◆ SendRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Client.Handlers.HttpHandler.SendRequest (Client client,
HttpMessage request 
)
+
+ +

Send a request to the server.

+
Parameters
+ + +
requestRequest to be sent.
+
+
+ +

Definition at line 29 of file HttpHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.js b/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.js new file mode 100644 index 0000000..1e863f8 --- /dev/null +++ b/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.js @@ -0,0 +1,6 @@ +var class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler = +[ + [ "HttpHandler", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#ad08bec6402c44cbe4f36fbd3db22f6dc", null ], + [ "AddModule", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#ae292eccc409b08c21abb9a5100e7af91", null ], + [ "SendRequest", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#a3717b229ef4fe6137b480fcde8d61b37", null ] +]; \ No newline at end of file diff --git a/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.png b/docs/d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..5d777e7a586ac1dc3ded59fb6e8aedbf46b18238 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^7lAl{gBeI};7C{iq$C1-LR|m<{|{uIId#L>(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ0Iy_w*Ln;{G&b{5&Y{28f-+bl&|0lWL z?`AO7M(mszJ~Quf!sE#^9!@Qdy}t5@mZz|0hsw$AO&*hKvi-MA`G5M`_dmb>)%=~d z-(>RjT}$$o$OlbO>D{!bEPJ~$e@D?r)%2e$Hm4;m{m;4RBU|dEcN6$^=Du{evTk2- zdEoliqQ{Ldyp}AnTC>hubJnaLUFnXZ|5qcuw?yZzyM0RfP@bz-)-lyZA{DJGvb#Si z@ICDf+`9Di)N&q_%H#_N%^c3RepjQzMfmwy|$Xn@XwXMVWo-e#m9!ymr7jx7o42% zOqpvv^M`c`Odr+~kAL``-lP-U$(o?VD%g+@!lH|KzWq^*JoejrjZ|TBRDkgK34BImXkW^(o<&dbSsgI;LyB%_VmZ+8$N}d+*_a= zdB61KFSVT;?U@7L?axcUefC}W?AP0(`VJkNBR+Yq;L_FW1WIiKSnF^NX zzvfbE_6F3K)z4*}Q$iB}>}qo3 literal 0 HcmV?d00001 diff --git a/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html b/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html new file mode 100644 index 0000000..903ae4c --- /dev/null +++ b/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html @@ -0,0 +1,162 @@ + + + + + + + +MTSC: MTSC.Common.Http.ClientModules.IHttpModule Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ClientModules.IHttpModule Interface Reference
+
+
+ + + + + +

+Public Member Functions

bool HandleResponse (IHandler handler, HttpMessage response)
 Handle a response received from the server. More...
 
+

Detailed Description

+
+

Definition at line 10 of file IHttpModule.cs.

+

Member Function Documentation

+ +

◆ HandleResponse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MTSC.Common.Http.ClientModules.IHttpModule.HandleResponse (IHandler handler,
HttpMessage response 
)
+
+ +

Handle a response received from the server.

+
Parameters
+ + + +
handlerHandler that operates on the response.
responseResponse message.
+
+
+
Returns
True if no other module should operate on the response.
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.js b/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.js new file mode 100644 index 0000000..1847a67 --- /dev/null +++ b/docs/d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.js @@ -0,0 +1,4 @@ +var interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module = +[ + [ "HandleResponse", "d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html#afc38289a8fef5bf3c11bfa6c26bf129d", null ] +]; \ No newline at end of file diff --git a/docs/d5/d6c/_helper_functions_8cs_source.html b/docs/d5/d6c/_helper_functions_8cs_source.html new file mode 100644 index 0000000..28fd34b --- /dev/null +++ b/docs/d5/d6c/_helper_functions_8cs_source.html @@ -0,0 +1,108 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/HelperFunctions.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
HelperFunctions.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Security.Cryptography;
5 using System.Text;
6 using System.Xml;
7 
8 namespace MTSC
9 {
10  static class HelperFunctions
11  {
12  #region XML
13 
14  public static void FromXmlString(this RSA rsa, string xmlString)
15  {
16  RSAParameters parameters = new RSAParameters();
17 
18  XmlDocument xmlDoc = new XmlDocument();
19  xmlDoc.LoadXml(xmlString);
20 
21  if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
22  {
23  foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
24  {
25  switch (node.Name)
26  {
27  case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
28  case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
29  case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
30  case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
31  case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
32  case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
33  case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
34  case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
35  }
36  }
37  }
38  else
39  {
40  throw new Exception("Invalid XML RSA key.");
41  }
42 
43  rsa.ImportParameters(parameters);
44  }
45 
46  public static string ToXmlString(this RSA rsa, bool includePrivateParameters)
47  {
48  RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
49 
50  return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
51  parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
52  parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
53  parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
54  parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
55  parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
56  parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
57  parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
58  parameters.D != null ? Convert.ToBase64String(parameters.D) : null);
59  }
65  public static bool IsSubPathOf(this string path, string baseDirPath)
66  {
67  string normalizedPath = Path.GetFullPath(path.Replace('/', '\\')
68  .WithEnding("\\"));
69 
70  string normalizedBaseDirPath = Path.GetFullPath(baseDirPath.Replace('/', '\\')
71  .WithEnding("\\"));
72 
73  return normalizedPath.StartsWith(normalizedBaseDirPath, StringComparison.OrdinalIgnoreCase);
74  }
80  public static string WithEnding(this string str, string ending)
81  {
82  if (str == null)
83  return ending;
84 
85  string result = str;
86 
87  // Right() is 1-indexed, so include these cases
88  // * Append no characters
89  // * Append up to N characters, where N is ending length
90  for (int i = 0; i <= ending.Length; i++)
91  {
92  string tmp = result + ending.Right(i);
93  if (tmp.EndsWith(ending))
94  return tmp;
95  }
96 
97  return result;
98  }
103  public static string Right(this string value, int length)
104  {
105  if (value == null)
106  {
107  throw new ArgumentNullException("value");
108  }
109  if (length < 0)
110  {
111  throw new ArgumentOutOfRangeException("length", length, "Length is less than zero");
112  }
113 
114  return (length < value.Length) ? value.Substring(value.Length - length) : value;
115  }
116  #endregion
117  }
118 }
Definition: Client.cs:14
+
+
+ + + + diff --git a/docs/d5/d7a/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler-members.html b/docs/d5/d7a/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler-members.html new file mode 100644 index 0000000..ec09717 --- /dev/null +++ b/docs/d5/d7a/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Handlers.WebsocketHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Handlers.WebsocketHandler, including all inherited members.

+ + + + + +
AddModule(IWebsocketModule websocketModule)MTSC.Client.Handlers.WebsocketHandler
QueueMessage(WebsocketMessage message)MTSC.Client.Handlers.WebsocketHandler
WebsocketHandler() (defined in MTSC.Client.Handlers.WebsocketHandler)MTSC.Client.Handlers.WebsocketHandler
WebsocketURI (defined in MTSC.Client.Handlers.WebsocketHandler)MTSC.Client.Handlers.WebsocketHandler
+
+ + + + diff --git a/docs/d5/d98/_http_message_8cs_source.html b/docs/d5/d98/_http_message_8cs_source.html new file mode 100644 index 0000000..878a74f --- /dev/null +++ b/docs/d5/d98/_http_message_8cs_source.html @@ -0,0 +1,130 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/HttpMessage.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
HttpMessage.cs
+
+
+
1 using MTSC.Exceptions;
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5 
6 namespace MTSC.Common.Http
7 {
8  public class HttpMessage
9  {
10  public enum StatusCodes
11  {
12  Continue = 100,
13  SwitchingProtocols = 101,
14  OK = 200,
15  Created = 201,
16  Accepted = 202,
17  NonAuthoritativeInformation = 203,
18  NoContent = 204,
19  ResetContent = 205,
20  PartialContent = 206,
21  MultipleChoices = 300,
22  MovedPermanently = 301,
23  Found = 302,
24  SeeOther = 303,
25  NotModified = 304,
26  UseProxy = 305,
27  TemporaryRedirect = 307,
28  BadRequest = 400,
29  Unauthorized = 401,
30  PaymentRequired = 402,
31  Forbidden = 403,
32  NotFound = 404,
33  MethodNotAllowed = 405,
34  NotAcceptable = 406,
35  ProxyAuthenticationRequired = 407,
36  RequestTimeout = 408,
37  Conflict = 409,
38  Gone = 410,
39  LengthRequired = 411,
40  PreconditionFailed = 412,
41  RequestEntityTooLarge = 413,
42  RequestURITooLarge = 414,
43  UnsupportedMediaType = 415,
44  RequestRangeNotSatisfiable = 416,
45  ExpectationFailed = 417,
46  InternalServerError = 500,
47  NotImplemented = 501,
48  BadGateway = 502,
49  ServiceUnavailable = 503,
50  GatewayTimeout = 504,
51  HTTPVersionNotSupported = 505
52  }
53  public enum MethodEnum
54  {
55  Options = 0,
56  Get = 1,
57  Head = 2,
58  Post = 3,
59  Put = 4,
60  Delete = 5,
61  Trace = 6,
62  Connect = 7,
63  ExtensionMethod = 8
64  }
65  public enum GeneralHeadersEnum
66  {
67  CacheControl = 0,
68  Connection = 1,
69  Date = 2,
70  Pragma = 3,
71  Trailer = 4,
72  TransferEncoding = 5,
73  Upgrade = 6,
74  Via = 7,
75  Warning = 8
76  }
77  public enum RequestHeadersEnum
78  {
79  Accept = 0,
80  AcceptCharset = 1,
81  AcceptEncoding = 2,
82  AcceptLanguage = 3,
83  Authorization = 4,
84  Expect = 5,
85  From = 6,
86  Host = 7,
87  IfMatch = 8,
88  IfModifiedSince = 9,
89  IfNoneMatch = 10,
90  IfRange = 11,
91  IfUnmodifiedSince = 12,
92  MaxForwards = 13,
93  ProxyAuthorization = 14,
94  Range = 15,
95  Referer = 16,
96  TE = 17,
97  UserAgent = 18
98  }
99  public enum ResponseHeadersEnum
100  {
101  AcceptRanges = 0,
102  Age = 1,
103  ETag = 2,
104  Location = 3,
105  ProxyAuthentication = 4,
106  RetryAfter = 5,
107  Server = 6,
108  Vary = 7,
109  WWWAuthenticate = 8
110  }
111  public enum EntityHeadersEnum
112  {
113  Allow = 0,
114  ContentEncoding = 1,
115  ContentLanguage = 2,
116  ContentLength = 3,
117  ContentLocation = 4,
118  ContentMD5 = 5,
119  ContentRange = 6,
120  ContentType = 7,
121  Expired = 8,
122  LastModified = 9
123  }
124  private static string[] methods = new string[] { "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT", "extension-method" };
125  private static string[] generalHeaders = new string[] { "Cache-Control", "Connection", "Date", "Pragma", "Trailer", "Transfer-Encoding", "Upgrade", "Via", "Warning" };
126  private static string[] requestHeaders = new string[] { "Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Authorization", "Expect", "From", "Host", "If-Match",
127  "If-Modified-Since", "If-None-Match", "If-Range", "If-Unmodified-Since", "Max-Forwards", "Proxy-Authorizatio", "Range", "Referer", "TE", "User-Agent"};
128  private static string[] responseHeaders = new string[] { "Accept-Ranges", "Age", "ETag", "Location", "Retry-After", "Server", "Vary", "WWW-Authenticate" };
129  private static string[] entityHeaders = new string[] { "Allow", "Content-Encoding", "Content-Language", "Content-Length", "Content-Location", "Content-MD5", "Content-Range", "Content-Type",
130  "Expires", "Last-Modified" };
131 
132  private static char SP = ' ';
133  private static char HT = '\t';
134  private static string CRLF = "\r\n";
135  private static string HTTPVER = "HTTP/1.1";
136 
137  private Dictionary<string, string> headers = new Dictionary<string, string>();
138 
139  #region Properties
140  public MethodEnum Method { get; set; }
141  public string RequestURI { get; set; }
142  public string RequestQuery { get; set; }
143  public byte[] Body { get; set; }
144  public StatusCodes StatusCode { get; set; }
145  #endregion
146  #region Constructors
147  public HttpMessage()
148  {
149  RequestQuery = string.Empty;
150  RequestURI = "/";
151  Method = MethodEnum.Get;
152  }
153  #endregion
154  #region Public Methods
155  public string this[string headerKey] { get => headers[headerKey]; set => headers[headerKey] = value; }
166  public string this[GeneralHeadersEnum headerKey] { get => headers[generalHeaders[(int)headerKey]]; set => headers[generalHeaders[(int)headerKey]] = value; }
172  public string this[ResponseHeadersEnum headerKey] { get => headers[responseHeaders[(int)headerKey]]; set => headers[responseHeaders[(int)headerKey]] = value; }
178  public string this[RequestHeadersEnum headerKey] { get => headers[requestHeaders[(int)headerKey]]; set => headers[requestHeaders[(int)headerKey]] = value; }
184  public string this[EntityHeadersEnum headerKey] { get => headers[entityHeaders[(int)headerKey]]; set => headers[entityHeaders[(int)headerKey]] = value; }
190  public void AddGeneralHeader(GeneralHeadersEnum header, string value)
191  {
192  headers[generalHeaders[(int)header]] = value;
193  }
199  public void AddRequestHeader(RequestHeadersEnum requestHeader, string value)
200  {
201  headers[requestHeaders[(int)requestHeader]] = value;
202  }
208  public void AddResponseHeader(ResponseHeadersEnum responseHeader, string value)
209  {
210  headers[responseHeaders[(int)responseHeader]] = value;
211  }
217  public void AddEntityHeaders(EntityHeadersEnum entityHeader, string value)
218  {
219  headers[entityHeaders[(int)entityHeader]] = value;
220  }
225  public byte[] GetRequest()
226  {
227  StringBuilder requestString = new StringBuilder();
228  requestString.Append(methods[(int)Method]).Append(SP).Append(RequestURI).Append('?').Append(RequestQuery).Append(SP).Append(HTTPVER).Append(CRLF);
229  foreach(KeyValuePair<string, string> header in headers)
230  {
231  requestString.Append(header.Key).Append(':').Append(SP).Append(header.Value).Append(CRLF);
232  }
233  requestString.Append(CRLF);
234  byte[] request = new byte[requestString.Length + (Body == null ? 0 : Body.Length)];
235  byte[] requestBytes = ASCIIEncoding.ASCII.GetBytes(requestString.ToString());
236  Array.Copy(requestBytes, 0, request, 0, requestBytes.Length);
237  if (Body != null)
238  {
239  Array.Copy(Body, 0, request, requestBytes.Length, Body.Length);
240  }
241  return request;
242  }
247  public void ParseRequest(byte[] requestBytes)
248  {
249  /*
250  * Parse the bytes one by one, respecting the reference manual.
251  */
252  StringBuilder parseBuffer = new StringBuilder();
253  /*
254  * Keep the index of the byte array, to identify the message body.
255  * Step value indicates at what point the parsing algorithm currently is.
256  * Step 0 - Method, 1 - URI, 2 - Query, 3 - HTTPVer, 4 - Header, 5 - Value
257  */
258  int step = 0;
259  string headerKey = string.Empty;
260  string headerValue = string.Empty;
261  int bodyIndex = 0;
262  for(int i = 0; i < requestBytes.Length; i++)
263  {
264  if(step == 0)
265  {
266  Method = ParseMethod(requestBytes, ref i);
267  step++;
268  }
269  else if(step == 1)
270  {
271  RequestURI = ParseRequestURI(requestBytes, ref i);
272  if(requestBytes[i] == '?')
273  {
274  step++;
275  }
276  else
277  {
278  step += 2;
279  }
280  }
281  else if(step == 2)
282  {
283  RequestQuery = ParseRequestQuery(requestBytes, ref i);
284  step++;
285  }
286  else if (step == 3)
287  {
288  ParseHTTPVer(requestBytes, ref i);
289  step++;
290  }
291  else if (step == 4)
292  {
293  if(requestBytes[i] == CRLF[0])
294  {
295  continue;
296  }
297  else if(requestBytes[i] == CRLF[1])
298  {
299  bodyIndex = i;
300  break;
301  }
302  else
303  {
304  headerKey = ParseHeaderKey(requestBytes, ref i);
305  step++;
306  }
307  }
308  else if (step == 5)
309  {
310  if (requestBytes[i] == CRLF[0])
311  {
312  continue;
313  }
314  else if (requestBytes[i] == CRLF[1])
315  {
316  bodyIndex = i;
317  break;
318  }
319  else
320  {
321  headerValue = ParseHeaderValue(requestBytes, ref i);
322  headers.Add(headerKey, headerValue);
323  step--;
324  }
325  }
326  }
327  if(requestBytes.Length - bodyIndex > 1)
328  {
329  /*
330  * If the message contains a body, copy it into a different array
331  * and save it into the HTTP message;
332  */
333  this.Body = new byte[requestBytes.Length - bodyIndex];
334  Array.Copy(requestBytes, bodyIndex, this.Body, 0, this.Body.Length);
335  }
336  return;
337  }
345  public byte[] GetResponse(bool includeContentLengthHeader)
346  {
347  if (includeContentLengthHeader)
348  {
349  /*
350  * If there is a body, include the size of the body. If there is no body,
351  * set the value of the content length to 0.
352  */
353  this[EntityHeadersEnum.ContentLength] = Body == null ? "0" : Body.Length.ToString();
354  }
355  StringBuilder responseString = new StringBuilder();
356  responseString.Append(HTTPVER).Append(SP).Append((int)this.StatusCode).Append(SP).Append(this.StatusCode.ToString()).Append(CRLF);
357  foreach (KeyValuePair<string, string> header in headers)
358  {
359  responseString.Append(header.Key).Append(':').Append(SP).Append(header.Value).Append(CRLF);
360  }
361  responseString.Append(CRLF);
362  byte[] response = new byte[responseString.Length + (Body == null ? 0 : Body.Length)];
363  byte[] responseBytes = ASCIIEncoding.ASCII.GetBytes(responseString.ToString());
364  Array.Copy(responseBytes, 0, response, 0, responseBytes.Length);
365  if (Body != null)
366  {
367  Array.Copy(Body, 0, response, responseBytes.Length, Body.Length);
368  }
369  return response;
370  }
375  public void ParseResponse(byte[] responseBytes)
376  {
377  /*
378  * Parse the bytes one by one, respecting the reference manual.
379  */
380  StringBuilder parseBuffer = new StringBuilder();
381  /*
382  * Keep the index of the byte array, to identify the message body.
383  * Step value indicates at what point the parsing algorithm currently is.
384  * Step 0 - HTTPVer, 1 - StatusCodeInt, 2 - StatusCodeString, 3 - Header, 4 - Value
385  */
386  int step = 0;
387  string headerKey = string.Empty;
388  string headerValue = string.Empty;
389  int bodyIndex = 0;
390  for (int i = 0; i < responseBytes.Length; i++)
391  {
392  if (step == 0)
393  {
394  ParseHTTPVer(responseBytes, ref i);
395  step++;
396  }
397  else if (step == 1)
398  {
399  StatusCode = (StatusCodes)ParseResponseCode(responseBytes, ref i);
400  step++;
401  }
402  else if (step == 2)
403  {
404  if(StatusCode != ParseResponseCodeString(responseBytes, ref i))
405  {
406  throw new InvalidStatusCodeException("Status code value and text do not match!");
407  }
408  step++;
409  }
410  else if (step == 3)
411  {
412  if (responseBytes[i] == CRLF[0])
413  {
414  continue;
415  }
416  else if (responseBytes[i] == CRLF[1])
417  {
418  bodyIndex = i;
419  break;
420  }
421  else
422  {
423  headerKey = ParseHeaderKey(responseBytes, ref i);
424  step++;
425  }
426  }
427  else if (step == 4)
428  {
429  if (responseBytes[i] == CRLF[0])
430  {
431  continue;
432  }
433  else if (responseBytes[i] == CRLF[1])
434  {
435  bodyIndex = i;
436  break;
437  }
438  else
439  {
440  headerValue = ParseHeaderValue(responseBytes, ref i);
441  headers.Add(headerKey, headerValue);
442  step--;
443  }
444  }
445  }
446  if (responseBytes.Length - bodyIndex > 1)
447  {
448  /*
449  * If the message contains a body, copy it into a different array
450  * and save it into the HTTP message;
451  */
452  this.Body = new byte[responseBytes.Length - bodyIndex - 1];
453  Array.Copy(responseBytes, bodyIndex, this.Body, 0, this.Body.Length);
454  }
455  return;
456  }
462  public bool ContainsHeader(ResponseHeadersEnum header)
463  {
464  return ContainsHeader(responseHeaders[(int)header]);
465  }
471  public bool ContainsHeader(RequestHeadersEnum header)
472  {
473  return ContainsHeader(requestHeaders[(int)header]);
474  }
480  public bool ContainsHeader(GeneralHeadersEnum header)
481  {
482  return ContainsHeader(generalHeaders[(int)header]);
483  }
489  public bool ContainsHeader(string header)
490  {
491  return headers.ContainsKey(header);
492  }
497  public Dictionary<string, string> GetPostForm()
498  {
499  if (ContainsHeader("Content-Type") && Body != null)
500  {
501  if(this["Content-Type"] == "application/x-www-form-urlencoded")
502  {
503  Dictionary<string, string> returnDictionary = new Dictionary<string, string>();
504  /*
505  * Walk through the buffer and get the form contents.
506  * Step 0 - key, 1 - value.
507  */
508  string formKey = string.Empty;
509  int step = 0;
510  for(int i = 0; i < Body.Length; i++)
511  {
512  if(step == 0)
513  {
514  formKey = GetField(Body, ref i);
515  step++;
516  }
517  else
518  {
519  returnDictionary[formKey] = GetValue(Body, ref i);
520  step--;
521  }
522  }
523  return returnDictionary;
524  }
525  else if (this["Content-Type"].Contains("multipart/form-data"))
526  {
527  throw new NotImplementedException("Multipart posting not implemented");
528  }
529  else
530  {
531  return null;
532  }
533  }
534  else
535  {
536  return null;
537  }
538  }
539  #endregion
540  #region Private Methods
541  private MethodEnum GetMethod(string methodString)
542  {
543  int index = Array.IndexOf(methods, methodString.ToUpper());
544  return (MethodEnum)index;
545  }
546 
547  private MethodEnum ParseMethod(byte[] buffer, ref int index)
548  {
549  /*
550  * Get each character one by one. When meeting a SP character, parse the method, clear the buffer
551  * and continue with parsing the next step.
552  */
553  StringBuilder parseBuffer = new StringBuilder();
554  for (; index < buffer.Length; index++)
555  {
556  try
557  {
558  if (buffer[index] == (byte)SP)
559  {
560  string methodString = parseBuffer.ToString();
561  return GetMethod(methodString);
562  }
563  else
564  {
565  parseBuffer.Append((char)buffer[index]);
566  }
567  }
568  catch (Exception e)
569  {
570  throw new MethodInvalidException("Invalid request method. Buffer: " + parseBuffer.ToString(), e);
571  }
572  }
573  throw new MethodInvalidException("Invalid request method. Buffer: " + parseBuffer.ToString());
574  }
575 
576  private string ParseRequestURI(byte[] buffer, ref int index)
577  {
578  /*
579  * Get each character one by one. When meeting a SP character, parse the URI and clear the buffer.
580  */
581  StringBuilder parseBuffer = new StringBuilder();
582  for (; index < buffer.Length; index++)
583  {
584  try
585  {
586  if (buffer[index] == (byte)SP)
587  {
588  return parseBuffer.ToString();
589  }
590  if (buffer[index] == '?')
591  {
592  return parseBuffer.ToString();
593  }
594  else
595  {
596  parseBuffer.Append((char)buffer[index]);
597  }
598  }
599  catch (Exception e)
600  {
601  throw new InvalidRequestURIException("Invalid request URI. Buffer: " + parseBuffer.ToString(), e);
602  }
603  }
604  throw new InvalidRequestURIException("Invalid request URI. Buffer: " + parseBuffer.ToString());
605  }
606 
607  private string ParseRequestQuery(byte[] buffer, ref int index)
608  {
609  /*
610  * Get each character one by one. When meeting a SP character, parse the URI and clear the buffer.
611  */
612  StringBuilder parseBuffer = new StringBuilder();
613  for (; index < buffer.Length; index++)
614  {
615  try
616  {
617  if (buffer[index] == (byte)SP)
618  {
619  return parseBuffer.ToString();
620  }
621  else
622  {
623  parseBuffer.Append((char)buffer[index]);
624  }
625  }
626  catch (Exception e)
627  {
628  throw new InvalidRequestURIException("Invalid request query. Buffer: " + parseBuffer.ToString(), e);
629  }
630  }
631  throw new InvalidRequestURIException("Invalid request query. Buffer: " + parseBuffer.ToString());
632  }
633 
634  private void ParseHTTPVer(byte[] buffer, ref int index)
635  {
636  /*
637  * Get each character one by one. When meeting a LF character, parse the HTTPVer.
638  * Check if the HTTPVer matches the implementation version.
639  * If not, throw an exception.
640  */
641  StringBuilder parseBuffer = new StringBuilder();
642  for (; index < buffer.Length; index++)
643  {
644  try
645  {
646  if (buffer[index] == CRLF[1] || buffer[index] == SP)
647  {
648  string httpVer = parseBuffer.ToString();
649  if (httpVer != HTTPVER)
650  {
651  throw new InvalidHttpVersionException("Invalid HTTP version. Buffer: " + parseBuffer.ToString());
652  }
653  return;
654  }
655  else if(buffer[index] == CRLF[0])
656  {
657  /*
658  * If a termination character is detected, ignore it and wait for the full terminator.
659  */
660  continue;
661  }
662  else
663  {
664  parseBuffer.Append((char)buffer[index]);
665  }
666  }
667  catch (Exception e)
668  {
669  throw new InvalidHttpVersionException("Invalid HTTP version. Buffer: " + parseBuffer.ToString(), e);
670  }
671  }
672  }
673 
674  private string ParseHeaderKey(byte[] buffer, ref int index)
675  {
676  /*
677  * Get each character one by one. When meeting a ':' character, parse the header key.
678  */
679  StringBuilder parseBuffer = new StringBuilder();
680  for (; index < buffer.Length; index++)
681  {
682  try
683  {
684  if (buffer[index] == ':')
685  {
686  return parseBuffer.ToString();
687  }
688  else
689  {
690  parseBuffer.Append((char)buffer[index]);
691  }
692  }
693  catch (Exception e)
694  {
695  throw new InvalidHeaderException("Invalid Header key. Buffer: " + parseBuffer.ToString(), e);
696  }
697  }
698  throw new InvalidHeaderException("Invalid Header key. Buffer: " + parseBuffer.ToString());
699  }
700 
701  private string ParseHeaderValue(byte[] buffer, ref int index)
702  {
703  /*
704  * Get each character one by one. When meeting a LF character, parse the value.
705  */
706  StringBuilder parseBuffer = new StringBuilder();
707  for (; index < buffer.Length; index++)
708  {
709  try
710  {
711  if (buffer[index] == CRLF[1])
712  {
713  return parseBuffer.ToString().Trim();
714  }
715  else if (buffer[index] == CRLF[0])
716  {
717  /*
718  * If a termination character is detected, ignore it and wait for the full terminator.
719  */
720  continue;
721  }
722  else
723  {
724  parseBuffer.Append((char)buffer[index]);
725  }
726  }
727  catch (Exception e)
728  {
729  throw new InvalidHeaderException("Invalid header value. Buffer: " + parseBuffer.ToString(), e);
730  }
731  }
732  throw new InvalidHeaderException("Invalid header value. Buffer: " + parseBuffer.ToString());
733  }
734 
735  private int ParseResponseCode(byte[] buffer, ref int index)
736  {
737  /*
738  * Get each character one by one. When meeting a SP character, parse the value.
739  */
740  StringBuilder parseBuffer = new StringBuilder();
741  for (; index < buffer.Length; index++)
742  {
743  try
744  {
745  if (buffer[index] == SP)
746  {
747  return int.Parse(parseBuffer.ToString());
748  }
749  else
750  {
751  parseBuffer.Append((char)buffer[index]);
752  }
753  }
754  catch (Exception e)
755  {
756  throw new InvalidStatusCodeException("Invalid status code. Buffer: " + parseBuffer.ToString(), e);
757  }
758  }
759  throw new InvalidStatusCodeException("Invalid status code. Buffer: " + parseBuffer.ToString());
760  }
761 
762  private StatusCodes ParseResponseCodeString(byte[] buffer, ref int index)
763  {
764  /*
765  * Get each character one by one. When meeting a LF character, parse the value.
766  */
767  StringBuilder parseBuffer = new StringBuilder();
768  for (; index < buffer.Length; index++)
769  {
770  try
771  {
772  if (buffer[index] == CRLF[1])
773  {
774  return (StatusCodes)Enum.Parse(typeof(StatusCodes), parseBuffer.ToString().Trim());
775  }
776  else if (buffer[index] == CRLF[0])
777  {
778  /*
779  * If a termination character is detected, ignore it and wait for the full terminator.
780  */
781  continue;
782  }
783  else
784  {
785  parseBuffer.Append((char)buffer[index]);
786  }
787  }
788  catch (Exception e)
789  {
790  throw new InvalidStatusCodeException("Invalid status code. Buffer: " + parseBuffer.ToString(), e);
791  }
792  }
793  throw new InvalidHeaderException("Invalid status code. Buffer: " + parseBuffer.ToString());
794  }
795 
796  private string GetField(byte[] buffer, ref int index)
797  {
798  /*
799  * Get each character one by one. When meeting a LF character, parse the value.
800  */
801  StringBuilder parseBuffer = new StringBuilder();
802  for (; index < buffer.Length; index++)
803  {
804  try
805  {
806  if (buffer[index] == '=')
807  {
808  return parseBuffer.ToString().Trim();
809  }
810  else
811  {
812  parseBuffer.Append((char)buffer[index]);
813  }
814  }
815  catch (Exception e)
816  {
817  throw new InvalidPostFormException("Invalid form field. Buffer: " + parseBuffer.ToString(), e);
818  }
819  }
820  throw new InvalidHeaderException("Invalid form field. Buffer: " + parseBuffer.ToString());
821  }
822 
823  private string GetValue(byte[] buffer, ref int index)
824  {
825  /*
826  * Get each character one by one. When meeting a LF character, parse the value.
827  */
828  StringBuilder parseBuffer = new StringBuilder();
829  for (; index < buffer.Length; index++)
830  {
831  try
832  {
833  if (buffer[index] == '&')
834  {
835  return parseBuffer.ToString().Trim();
836  }
837  else
838  {
839  parseBuffer.Append((char)buffer[index]);
840  }
841  }
842  catch (Exception e)
843  {
844  throw new InvalidPostFormException("Invalid form field. Buffer: " + parseBuffer.ToString(), e);
845  }
846  }
847  return parseBuffer.ToString().Trim();
848  }
849  #endregion
850  }
851 }
bool ContainsHeader(GeneralHeadersEnum header)
Check if the message contains a header.
Definition: HttpMessage.cs:480
+
byte [] GetResponse(bool includeContentLengthHeader)
Build the response bytes based on the message contents.
Definition: HttpMessage.cs:345
+
bool ContainsHeader(RequestHeadersEnum header)
Check if the message contains a header.
Definition: HttpMessage.cs:471
+
void AddEntityHeaders(EntityHeadersEnum entityHeader, string value)
Add an entity header to the message.
Definition: HttpMessage.cs:217
+ +
byte [] GetRequest()
Build the request bytes based on the message contents.
Definition: HttpMessage.cs:225
+ +
Dictionary< string, string > GetPostForm()
Parse the body into a posted from respecting the reference manual.
Definition: HttpMessage.cs:497
+ + +
Exception for invalid response status code.
+
bool ContainsHeader(string header)
Check if the message contains a header.
Definition: HttpMessage.cs:489
+
Exception for invalid post forms.
+
void AddResponseHeader(ResponseHeadersEnum responseHeader, string value)
Add a response header to the message.
Definition: HttpMessage.cs:208
+
bool ContainsHeader(ResponseHeadersEnum header)
Check if the message contains a header.
Definition: HttpMessage.cs:462
+
void AddGeneralHeader(GeneralHeadersEnum header, string value)
Add a general header to the message.
Definition: HttpMessage.cs:190
+
Exception in case of Invalid HTTP Version.
+
void AddRequestHeader(RequestHeadersEnum requestHeader, string value)
Add a request header to the message.
Definition: HttpMessage.cs:199
+
Exception cause by an invalid request URI.
+
Definition: Client.cs:14
+
void ParseResponse(byte[] responseBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:375
+ +
void ParseRequest(byte[] requestBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:247
+
+
+ + + + diff --git a/docs/d5/da4/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception-members.html b/docs/d5/da4/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception-members.html new file mode 100644 index 0000000..ffcfdb2 --- /dev/null +++ b/docs/d5/da4/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.NoDataException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.NoDataException, including all inherited members.

+ + + + + +
NoDataException() (defined in MTSC.Exceptions.NoDataException)MTSC.Exceptions.NoDataException
NoDataException(string message) (defined in MTSC.Exceptions.NoDataException)MTSC.Exceptions.NoDataException
NoDataException(string message, Exception innerException) (defined in MTSC.Exceptions.NoDataException)MTSC.Exceptions.NoDataException
NoDataException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.NoDataException)MTSC.Exceptions.NoDataExceptionprotected
+
+ + + + diff --git a/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.dot b/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.dot new file mode 100644 index 0000000..ed500f7 --- /dev/null +++ b/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ServerModules.EchoModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Common.WebSockets.Server\lModules.EchoModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html",tooltip=" "]; +} diff --git a/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.md5 b/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.md5 new file mode 100644 index 0000000..fecebf0 --- /dev/null +++ b/docs/d5/db7/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__coll__graph.md5 @@ -0,0 +1 @@ +c858ad160c2e83aa2a98f17fc0a8a576 \ No newline at end of file diff --git a/docs/d5/dc6/_invalid_post_form_exception_8cs_source.html b/docs/d5/dc6/_invalid_post_form_exception_8cs_source.html new file mode 100644 index 0000000..4df757a --- /dev/null +++ b/docs/d5/dc6/_invalid_post_form_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidPostFormException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidPostFormException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidPostFormException : Exception
12  {
14  {
15  }
16 
17  public InvalidPostFormException(string message) : base(message)
18  {
19  }
20 
21  public InvalidPostFormException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidPostFormException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+
Exception for invalid post forms.
+
+
+ + + + diff --git a/docs/d5/dd0/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception-members.html b/docs/d5/dd0/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception-members.html new file mode 100644 index 0000000..a73d8a9 --- /dev/null +++ b/docs/d5/dd0/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidRequestURIException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidRequestURIException, including all inherited members.

+ + + + + +
InvalidRequestURIException() (defined in MTSC.Exceptions.InvalidRequestURIException)MTSC.Exceptions.InvalidRequestURIException
InvalidRequestURIException(string message) (defined in MTSC.Exceptions.InvalidRequestURIException)MTSC.Exceptions.InvalidRequestURIException
InvalidRequestURIException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidRequestURIException)MTSC.Exceptions.InvalidRequestURIException
InvalidRequestURIException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidRequestURIException)MTSC.Exceptions.InvalidRequestURIExceptionprotected
+
+ + + + diff --git a/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html b/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html new file mode 100644 index 0000000..b234be0 --- /dev/null +++ b/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html @@ -0,0 +1,207 @@ + + + + + + + +MTSC: MTSC.Server.Handlers.HttpHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers.HttpHandler Class Reference
+
+
+ +

Handler for handling server http requests. + More...

+
+Inheritance diagram for MTSC.Server.Handlers.HttpHandler:
+
+
+ + +MTSC.Server.Handlers.IHandler + +
+ + + + + + + + +

+Public Member Functions

HttpHandler AddHttpModule (IHttpModule module)
 Add a http module onto the server. More...
 
void QueueResponse (ClientData client, HttpMessage response)
 Send a response back to the client. More...
 
+

Detailed Description

+

Handler for handling server http requests.

+ +

Definition at line 15 of file HttpHandler.cs.

+

Member Function Documentation

+ +

◆ AddHttpModule()

+ +
+
+ + + + + + + + +
HttpHandler MTSC.Server.Handlers.HttpHandler.AddHttpModule (IHttpModule module)
+
+ +

Add a http module onto the server.

+
Parameters
+ + +
moduleModule to be added.
+
+
+
Returns
This handler object.
+ +

Definition at line 33 of file HttpHandler.cs.

+ +
+
+ +

◆ QueueResponse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Server.Handlers.HttpHandler.QueueResponse (ClientData client,
HttpMessage response 
)
+
+ +

Send a response back to the client.

+
Parameters
+ + +
responseMessage containing the response.
+
+
+ +

Definition at line 42 of file HttpHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.js b/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.js new file mode 100644 index 0000000..9c5a30b --- /dev/null +++ b/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.js @@ -0,0 +1,6 @@ +var class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler = +[ + [ "HttpHandler", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#aee1fa73f5307b91c9878b1b2e64328a6", null ], + [ "AddHttpModule", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#af4e9ae4dea869ad9a487b19f776b07b7", null ], + [ "QueueResponse", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#abee4834854edfd4920ce31ba08a649a8", null ] +]; \ No newline at end of file diff --git a/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.png b/docs/d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..f0eaa1cb2821214c26ab6bda461a6915b1b64222 GIT binary patch literal 796 zcmeAS@N?(olHy`uVBq!ia0vp^H-I>RgBeKr$a-f1DTx4|5ZC|z{{xw4PTepzbe;fY zf$@O@2R6AaG68ZqN`m}?8GwpF;OeOmBL)Vh)t)YnAr*{o=icsntRUdRpQ`!)|4Hk< zoh8g4Q^RiYc1%3&%yGA1!OA_Ga&Mb0zM+z7r)%IT<;m?c$t{Rm?9=~(KYvZ`zu&8G zx@wzBZCKCLB~jHyp070Pzgv7_jz~IT`FVBCr(92~i{;H%g>OvmW}oxWcRIWEz8l$! zeuC4}nTupCHds%bbn3G9(HV!T#!A? z*Z%cQePpoj$+7M2vuw`HN`IVttxw+FOUs{I%~Lp|(esi=RKg^aNn$fpdY8;RxGnd# zn#ckB%iIZWXSu#r`FfdY-{8MKC*^XJZa9mCH#bj$impM!#4QIH+%7ROOL!6z_z~SI zaHvO#;mmSYHiJoG5(hj^C3L=DuDt8i?uosZXK5VRnxx~f*4EO&-|`G^)togAs%>)= z_McL}&t?G%;G1twF8#rhzw1v_pZ>R~j^HC(Z#2ZPYwG-$I{HBUWR2#rk7||qvwfaV z)Z3mLzV~b9%a5AR6N^d?{kd`b + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Handlers.BroadcastHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Handlers.BroadcastHandler, including all inherited members.

+ + + +
Broadcast(Client client, string message)MTSC.Client.Handlers.BroadcastHandler
BroadcastHandler()MTSC.Client.Handlers.BroadcastHandler
+
+ + + + diff --git a/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot b/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot new file mode 100644 index 0000000..2e48764 --- /dev/null +++ b/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.BroadcastHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Server.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Broadcast handler."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 b/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 new file mode 100644 index 0000000..eebf3c9 --- /dev/null +++ b/docs/d5/dfc/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 @@ -0,0 +1 @@ +e4c015c07f11286fc7f009c5071d0fdd \ No newline at end of file diff --git a/docs/d6/d05/class_m_t_s_c_1_1_logging_1_1_console_logger-members.html b/docs/d6/d05/class_m_t_s_c_1_1_logging_1_1_console_logger-members.html new file mode 100644 index 0000000..adfbc3f --- /dev/null +++ b/docs/d6/d05/class_m_t_s_c_1_1_logging_1_1_console_logger-members.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Logging.ConsoleLogger Member List
+
+
+ +

This is the complete list of members for MTSC.Logging.ConsoleLogger, including all inherited members.

+ + + +
Log(string message)MTSC.Logging.ConsoleLogger
LogDebug(string message)MTSC.Logging.ConsoleLogger
+
+ + + + diff --git a/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.dot b/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.dot new file mode 100644 index 0000000..3027ec7 --- /dev/null +++ b/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Logging.DebugConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Logging.DebugConsole\lLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="ILogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html",tooltip="Interface for loggers."]; +} diff --git a/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.md5 b/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.md5 new file mode 100644 index 0000000..0c6b21e --- /dev/null +++ b/docs/d6/d1e/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__coll__graph.md5 @@ -0,0 +1 @@ +f9acfd42e595fd9bdb6831dd93419219 \ No newline at end of file diff --git a/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.dot b/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.dot new file mode 100644 index 0000000..16f24e8 --- /dev/null +++ b/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidStatusCodeException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidStatus\lCodeException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception for invalid response status code."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.md5 b/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.md5 new file mode 100644 index 0000000..f9c2a55 --- /dev/null +++ b/docs/d6/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__coll__graph.md5 @@ -0,0 +1 @@ +9b1cbef6d6c089129ded32ae9a957f2b \ No newline at end of file diff --git a/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html b/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html new file mode 100644 index 0000000..83c2e28 --- /dev/null +++ b/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html @@ -0,0 +1,139 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidWebsocketFormatException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidWebsocketFormatException Class Reference
+
+
+
+Inheritance diagram for MTSC.Exceptions.InvalidWebsocketFormatException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidWebsocketFormatException (string message)
 
InvalidWebsocketFormatException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidWebsocketFormatException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+
+

Definition at line 8 of file InvalidWebsocketFormatException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.js b/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.js new file mode 100644 index 0000000..fcf8346 --- /dev/null +++ b/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception = +[ + [ "InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html#ab320a0f85cc3728d9e3b885fc517b16e", null ], + [ "InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html#a26f46b409f871467f861c7ac89b15ec3", null ], + [ "InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html#a1deace99a8204bf5f17c6064af3ef1b4", null ], + [ "InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html#a5bd8ff0efb39610c97856d8b6936f16e", null ] +]; \ No newline at end of file diff --git a/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.png b/docs/d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2ff57571cd021e98e5a95acb31c6ee5ee9060a GIT binary patch literal 884 zcmeAS@N?(olHy`uVBq!ia0y~yU^D@;12~w0OVW= z{CEFoTV3BtewD8-fUJ#}rJ`E7#l*8p3FZ)x$VL-SuTPW21QV5%@|Zsa)G_cJsMXD$;Q9K6JEDMHdg$eYaedI>Jjo+#=rp@!5Kkw<;Woch6ChhN8 zDEs-+K3l%?uYS1IuXF#NaH~AFd0FiK8>zB(*%$TP@9P*(*3P`mB9-~t@4`N-ng8Bx z@!z+vdG9hI*~4|e{I)-dSbLpA=5@}jr|FyYS$uistJMqt_Ele6;A3}n`SY}8(`E)| z#@>%j`hMwF-Y<{WhcoZ%SWn)$W!BrzUu1MIzX)D@t71lQc=ggAs*`4S=c>=RGH27{yrpYB z&pTSIbzQZ3UTn(U74vQfv|TNpKF>RS|6EUP-Us|Yt8E!;CU?(_kUAg-jNniFOBw&@ p1EU@(ZYNFO(!n7tSUCGXgVn9Qhl;hgSOc>NgQu&X%Q~loCIID@lbZkl literal 0 HcmV?d00001 diff --git a/docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html b/docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html new file mode 100644 index 0000000..135ee37 --- /dev/null +++ b/docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html @@ -0,0 +1,128 @@ + + + + + + + +MTSC: MTSC.Common.Http.ServerModules.HelloWorldModule Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ServerModules.HelloWorldModule Class Reference
+
+
+
+Inheritance diagram for MTSC.Common.Http.ServerModules.HelloWorldModule:
+
+
+ + +MTSC.Common.Http.ServerModules.IHttpModule + +
+ + +

+Additional Inherited Members

+

Detailed Description

+
+

Definition at line 9 of file HelloWorldModule.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.png b/docs/d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.png new file mode 100644 index 0000000000000000000000000000000000000000..ae12b9efb9fe39c510a90c77e8e327660ebea9a2 GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0y~yU~~bp12~w0WEjhzvp`BBz$e7@|Ns9$=9yDBj18S9 z09jys;J|@RZi`HST#k|;zhDNSA`rNGD#VC^f%%E2i(^Oyrrg`pa&B+C+wMC_$a9ys*OVm+nt_v=mbiFwO%hVo zJkfXL(!c5F_aA@x`TO_1RYtKMmlW44d@bnrV||?)eRpottdj0MX~dmYAgBnSXP-#gs>XU&&0ccr)$rEm@)U;X7|WTKB#)z1j0plef_P&9~-WdGxw# zL)V>)@;`b{iOiQf%f4CYt!}&Sifz+wzRD@>tJG(iykw?q=cF&TZ}i1He@Xodxi>|_ z(=lj~3hPfnA=Q`hYN}pA6JSD~os&eKC>Gw{rh9W+?rz=#{Lh&c7!z|>jsj9hj%I^RMp@!XP7MXNj zefs#=>PI&IQH5il{@$t&n5jG~{Cw&gq1EfZ`Tc$w{+RWE;d|A2JkM@@ zvlY@$wV7m5_aH6h@4dNS*zFwVKKeZQ+gW3e*9&$+)5KT9%>4fS5zk&Wo=^XBdgsav zT?zNgrMr0}y;#`g?8L-nT)uwNd9zGulk6uzI}j$gj_>LdQkI9?f{Zz`Og^gCzc)%O}4U z3U5u-I{N#nr9$D29c^28zq^yAwxj;~wrW z8d+0iB7eqf%l5FNSFT>#XmxwZ>Q`^ta!w?hA2OC)>(cQ4;ca228ck@7eiBz<`V)^9 l@-`~dg1myfG`Ig`y&daZZP literal 0 HcmV?d00001 diff --git a/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html b/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html new file mode 100644 index 0000000..789c719 --- /dev/null +++ b/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidRequestURIException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidRequestURIException Class Reference
+
+
+ +

Exception cause by an invalid request URI. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidRequestURIException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidRequestURIException (string message)
 
InvalidRequestURIException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidRequestURIException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception cause by an invalid request URI.

+ +

Definition at line 11 of file InvalidRequestURIException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.js b/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.js new file mode 100644 index 0000000..cb4a6dc --- /dev/null +++ b/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception = +[ + [ "InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html#a04df804c6abb641dbcfd263404905ad7", null ], + [ "InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html#ac6dd6b34e5976e000138df172ce97e76", null ], + [ "InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html#a0fac43b8740b2824f7e6994c62665125", null ], + [ "InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html#a1a1a03702ba56df1ceb4cb258d712de4", null ] +]; \ No newline at end of file diff --git a/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.png b/docs/d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..dad39105d9e35a68084a4bb88cbf23d26902bc16 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0y~yVB`m~12~w0q(L0REFdKj;1lBd|Nnm=^USFm#)i%l zfGjXRaNxiuw?!sEE=Ng_UoZnu5eQs86=KA|z_iBG#WAFU@$KB((^e}8xR~p&{Qv*) z3RaMG6S@9V|$ zF0QWhxU?}=dj0he6(aJD21ieYOsTfqYoB#Z%~O9<_oHMhk;`4tfhyCtdS1$Yv+7S^ z`F_V&FLDAPyo(=aNc>HeJH5y~@ze8)D>c7d{{47svutx=!Ty>*KmLB&4K#e--d5#@ ziYGPff-4x7ePHl;NRGt4Hg|BCFm{~1C@6Pe5!@V8Ipb;7 z&c0jvr#e?U$g!6Y@RJOUw-?1kaf(fN4+cjdE}KE8Ntec!j-+;xWi z{?<3=Pydw~`L!qGNa@TQT}`mn*SKydT_bs*OtlZHdzX{PZyc+2bFu*uJ%ru{2*tRstNzQ>2(jxuD_Y<|G`y# zF8cxVx6j>}B5wNg)*1OhBE$Y9^Mm^B@X!QC*RIbROQ+oU^M_d{dD-HCqiw>#w9Me? L>gTe~DWM4f=@fa0 literal 0 HcmV?d00001 diff --git a/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html b/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html new file mode 100644 index 0000000..4283b68 --- /dev/null +++ b/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html @@ -0,0 +1,199 @@ + + + + + + + +MTSC: MTSC.Logging.ILogger Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Logging.ILogger Interface Reference
+
+
+ +

Interface for loggers. + More...

+
+Inheritance diagram for MTSC.Logging.ILogger:
+
+
+ + +MTSC.Logging.ConsoleLogger +MTSC.Logging.DebugConsoleLogger + +
+ + + + + + + + +

+Public Member Functions

bool Log (string message)
 Logs the received message. More...
 
bool LogDebug (string message)
 Logs the received debug message. More...
 
+

Detailed Description

+

Interface for loggers.

+ +

Definition at line 10 of file ILogger.cs.

+

Member Function Documentation

+ +

◆ Log()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.ILogger.Log (string message)
+
+ +

Logs the received message.

+
Parameters
+ + +
messageMessage to be received.
+
+
+
Returns
True if the message has been logged and no other logger should log this message.
+ +

Implemented in MTSC.Logging.ConsoleLogger, and MTSC.Logging.DebugConsoleLogger.

+ +
+
+ +

◆ LogDebug()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.ILogger.LogDebug (string message)
+
+ +

Logs the received debug message.

+
Parameters
+ + +
messageDebug message to be logged.
+
+
+
Returns
True if the message has been logged and no other logger should log this message.
+ +

Implemented in MTSC.Logging.ConsoleLogger, and MTSC.Logging.DebugConsoleLogger.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.js b/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.js new file mode 100644 index 0000000..d698422 --- /dev/null +++ b/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.js @@ -0,0 +1,5 @@ +var interface_m_t_s_c_1_1_logging_1_1_i_logger = +[ + [ "Log", "d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a4a07ceb983932f65b2b73ec4f0fb1018", null ], + [ "LogDebug", "d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a82ab01fbbdc30f20f89369bdc7f6e438", null ] +]; \ No newline at end of file diff --git a/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.png b/docs/d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.png new file mode 100644 index 0000000000000000000000000000000000000000..f68b5a14204da91f20bd238359b4bc63529a7650 GIT binary patch literal 1077 zcmeAS@N?(olHy`uVBq!ia0y~yU_1e22XHV0$yK(ZPC!Z`z$e7@|Ns9$=9yDBj18S9 z09jys;J|@RZi`HST#k|;zhDNSA`rNGD#VC^f%%B1i(^Oy*KzL%b7LeZ{K7u`ipS@h!f6YQ<$I+1L4Rr&y&cMb|D0Yq-0^qd`h^;^p(ZbvM~e<<*@y)w;i{ za3X{0ywbwJ(Cg7L{Gfg_*jWCOT=`Y&6DmgSLGtN$lp|ER;gCC}I%Fw~gq2|f6|^X?s$ z1J{Ad_s!q!ZqE7P?G6tH;T>)a%s`p|Za8-*Z~N_hhJ+dOBV|#;89m%_^X2)aoH*p4 zh=GXmCN@taZ@r*NXC5i3o@4+rfbNGfHYgT(Jb(CeSA5@b_vk${@+U7*?R~%L-lUMk zf4`3QPTF!b>PhIvWgGv6f76|47$apY`^^9SpG%ebo~sI$p6E`}4Zh00L+5wl#MA6c zj=eng+unBWvGR*?ekFgjb}MI}ULSRM`LVJmca^MI3{KUp0&rFQcczy4FpEYFwC ztf=}Bu_9~vmCARryLp2C#l`0G$}jc|>W#|WYZPYoF?2yp%J(cxGo!^QRA6Mz=eKNJ%>Qf!?=X(0lWI3I?v+a|winZtR&6iSL zc}{L(ZPHP`;+9)I`lt6P22Hw`6zL@Xc2Y^(wGWfFBtBU{2zP;1lv_j@}nWvR=c7^Avi`lMV@w9K+UaM99idszz^Zd1Y yhli(8L-!OFVA6py?zpxIG{qWCRBTC@UhgCmdv$fv)(gNq&fw|l=d#Wzp$Pyu(c;$t literal 0 HcmV?d00001 diff --git a/docs/d6/dda/_no_data_exception_8cs_source.html b/docs/d6/dda/_no_data_exception_8cs_source.html new file mode 100644 index 0000000..261e5e1 --- /dev/null +++ b/docs/d6/dda/_no_data_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/NoDataException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
NoDataException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
8  public class NoDataException : Exception
9  {
10  public NoDataException()
11  {
12  }
13 
14  public NoDataException(string message) : base(message)
15  {
16  }
17 
18  public NoDataException(string message, Exception innerException) : base(message, innerException)
19  {
20  }
21 
22  protected NoDataException(SerializationInfo info, StreamingContext context) : base(info, context)
23  {
24  }
25  }
26 }
+ +
+
+ + + + diff --git a/docs/d7/d00/_server_2_handlers_2_encryption_handler_8cs_source.html b/docs/d7/d00/_server_2_handlers_2_encryption_handler_8cs_source.html new file mode 100644 index 0000000..6c98d71 --- /dev/null +++ b/docs/d7/d00/_server_2_handlers_2_encryption_handler_8cs_source.html @@ -0,0 +1,122 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers/EncryptionHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
EncryptionHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Security.Cryptography;
5 using System.Text;
6 using MTSC;
7 
8 namespace MTSC.Server.Handlers
9 {
13  public class EncryptionHandler : IHandler
14  {
15  private enum ClientState
16  {
17  Initial,
18  Negotiating,
19  Encrypted
20  }
21  private class AdditionalData
22  {
23  public byte[] Key;
24  public ClientState ClientState = ClientState.Initial;
25  }
26  #region Fields
27  private Dictionary<ClientData, AdditionalData> additionalData;
28  private RSACryptoServiceProvider rsa;
29  private string privateKey, publicKey;
30  #endregion
31  #region Properties
32  #endregion
33  #region Constructors
34  public EncryptionHandler(RSACryptoServiceProvider rsa)
40  {
41  additionalData = new Dictionary<ClientData, AdditionalData>();
42  this.rsa = rsa;
43  privateKey = HelperFunctions.ToXmlString(rsa, true);
44  publicKey = HelperFunctions.ToXmlString(rsa, false);
45  }
46  #endregion
47  #region Public Methods
48 
49  #endregion
50  #region Private Methods
51  private byte[] EncryptBytes(byte[] clientKey, byte[] bytesToBeEncrypted)
52  {
53  byte[] encryptedBytes = null;
54 
55  // Set your salt here, change it to meet your flavor:
56  // The salt bytes must be at least 8 bytes.
57  byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
58 
59  using (MemoryStream ms = new MemoryStream())
60  {
61  using (RijndaelManaged AES = new RijndaelManaged())
62  {
63  AES.KeySize = 256;
64  AES.BlockSize = 128;
65 
66  AES.Mode = CipherMode.CBC;
67 
68  var key = new Rfc2898DeriveBytes(clientKey, saltBytes, 1000);
69  AES.Key = key.GetBytes(AES.KeySize / 8);
70  AES.IV = key.GetBytes(AES.BlockSize / 8);
71 
72 
73 
74  using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
75  {
76  cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
77  cs.Close();
78  }
79  encryptedBytes = ms.ToArray();
80  }
81  }
82 
83  return encryptedBytes;
84  }
85 
86  private byte[] DecryptBytes(byte[] clientKey, byte[] bytesToBeDecrypted)
87  {
88  byte[] decryptedBytes = null;
89 
90  // Set your salt here, change it to meet your flavor:
91  // The salt bytes must be at least 8 bytes.
92  byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
93 
94  using (MemoryStream ms = new MemoryStream())
95  {
96  using (RijndaelManaged AES = new RijndaelManaged())
97  {
98  AES.KeySize = 256;
99  AES.BlockSize = 128;
100 
101  AES.Mode = CipherMode.CBC;
102 
103  var key = new Rfc2898DeriveBytes(clientKey, saltBytes, 1000);
104  AES.Key = key.GetBytes(AES.KeySize / 8);
105  AES.IV = key.GetBytes(AES.BlockSize / 8);
106 
107 
108 
109  using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write))
110  {
111  cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);
112  cs.Close();
113  }
114  decryptedBytes = ms.ToArray();
115  }
116  }
117 
118  return decryptedBytes;
119  }
120  #endregion
121  #region Handler Implementation
122  void IHandler.ClientRemoved(Server server, ClientData client)
127  {
128  additionalData.Remove(client);
129  }
135  bool IHandler.HandleClient(Server server, ClientData client)
136  {
137  additionalData.Add(client, new AdditionalData());
138  return false;
139  }
146  bool IHandler.HandleReceivedMessage(Server server, ClientData client, Message message)
147  {
148  if (additionalData[client].ClientState == ClientState.Initial || additionalData[client].ClientState == ClientState.Negotiating)
149  {
150  string asciiMessage = ASCIIEncoding.ASCII.GetString(message.MessageBytes);
151  if (asciiMessage == CommunicationPrimitives.RequestPublicKey)
152  {
153  server.QueueMessage(client, ASCIIEncoding.ASCII.GetBytes(CommunicationPrimitives.SendPublicKey + ":" + publicKey));
154  additionalData[client].ClientState = ClientState.Negotiating;
155  return true;
156  }
157  else if (asciiMessage.Contains(CommunicationPrimitives.SendEncryptionKey))
158  {
159  byte[] encryptedKey = new byte[message.MessageLength - CommunicationPrimitives.SendEncryptionKey.Length - 1];
160  Array.Copy(message.MessageBytes, CommunicationPrimitives.SendEncryptionKey.Length + 1, encryptedKey, 0, encryptedKey.Length);
161  byte[] decryptedKey = rsa.Decrypt(encryptedKey, false);
162  additionalData[client].Key = decryptedKey;
163  server.QueueMessage(client, ASCIIEncoding.ASCII.GetBytes(CommunicationPrimitives.AcceptEncryptionKey));
164  additionalData[client].ClientState = ClientState.Encrypted;
165  return true;
166  }
167  else
168  {
169  return false;
170  }
171  }
172  else
173  {
174  return false;
175  }
176  }
183  bool IHandler.PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
184  {
185  if (additionalData[client].ClientState == ClientState.Encrypted)
186  {
187  /*
188  * Decrypt message before returning.
189  */
190  byte[] encryptedBytes = message.MessageBytes;
191  byte[] decryptedBytes = DecryptBytes(additionalData[client].Key, encryptedBytes);
192  message = new Message((uint)decryptedBytes.Length, decryptedBytes);
193  return false;
194  }
195  else
196  {
197  /*
198  * If the state of the client is not encrypted, there's nothing to decrypt.
199  */
200  return false;
201  }
202  }
206  void IHandler.Tick(Server server)
207  {
208 
209  }
216  bool IHandler.HandleSendMessage(Server server, ClientData client, ref Message message)
217  {
218  if (additionalData[client].ClientState == ClientState.Encrypted)
219  {
220  message = CommunicationPrimitives.BuildMessage(EncryptBytes(additionalData[client].Key, message.MessageBytes));
221  }
222  return false;
223  }
224  #endregion
225  }
226 }
Interface for communication handlers.
Definition: IHandler.cs:11
+
bool PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
Called before the message handling. Perform here any processing of the message.
+
Structure containing client information.
Definition: Server.cs:402
+ +
Handler that encrypts the communication.
+
void QueueMessage(ClientData target, byte[] message)
Queues a message to be sent.
Definition: Server.cs:137
+
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+
void Tick(Server server)
Method performs regular operations onto the server.
+ +
bool HandleReceivedMessage(Server server, ClientData client, Message message)
Handles the received message.
+
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleClient(Server server, ClientData client)
Handles a new client.
+
bool HandleSendMessage(Server server, ClientData client, ref Message message)
Handles a message before sending.
+
Definition: Client.cs:14
+
EncryptionHandler(RSACryptoServiceProvider rsa)
Creates an instance of EncryptionHandler.
+
+
+ + + + diff --git a/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html b/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html new file mode 100644 index 0000000..d00863a --- /dev/null +++ b/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidFirstByteException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidFirstByteException Class Reference
+
+
+ +

Exception in case of first invalid byte for websocket communication. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidFirstByteException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidFirstByteException (string message)
 
InvalidFirstByteException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidFirstByteException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception in case of first invalid byte for websocket communication.

+ +

Definition at line 11 of file InvalidFirstByteException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.js b/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.js new file mode 100644 index 0000000..6fd021e --- /dev/null +++ b/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception = +[ + [ "InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html#a0c250b01972e0576a874f8c89c2e9882", null ], + [ "InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html#a20f69fc4b411f359b1d08901154b21cc", null ], + [ "InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html#a15142769f9e8529a300957b50e970b97", null ], + [ "InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html#adb318b63d0e9be8124be01336397185a", null ] +]; \ No newline at end of file diff --git a/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.png b/docs/d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..840e4deb4e7a9c78a802df99920db91aa833dad0 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w07l>0-GTN@NYL#&}M@Iuk#{(Z0&F`yL<-NLBeX?v$n?q>n zn$?Fsrm&oTz45N5(k1VA@4xK55;J?%tK+3*B1 zh`bmW`ge=pc~(ZpLq?KKyUxWKoM||4>7nq>2i$^77RcY>=x^UIxR0-K)vIZG-#~We zD+Gk@4RCQ_0iresmy|5V16y}79=M~_bUU|-&80xyz?xYp!AgZmNdbWvwhAx`VxWd7 zpfCP0F$qrG$;#L;(-mZ-i-16i(08`elTW+vG&%H_kzsaK4@<+oZM$A+Y~EABuwdGq zi?iSG?$>JCbIYi-^2)7(!s_ljt{d77%3I>+8|_N2>{%fD%5zEVM%xVxUiZDvZk_rv zSN2-!sjVR&Ida-e_S|{!^Sa3=Z0rw+}x4Y5wc{*L`V63isbCiAXN^oiNSIAawHe zX)7xPVmh9u?B2Tk=lmJmVO!$9X7?OmzxzPp%YyGdt-R$N+uT@L-a4*G4i~=_xc|{o ziOc_AxNTUbelF(t+O3j|SuYhLo;GcLd;QNX#{|JwcCThir^I=`(hI)cEU>2_EsNn> zUW?GZ)3OgHZ`myv_vN%QLxcI(YGcL&eS8wPe}3JsWRdjRT2RKQREde Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d7/d36/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__inherit__graph.md5 b/docs/d7/d36/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__inherit__graph.md5 new file mode 100644 index 0000000..3cdb50a --- /dev/null +++ b/docs/d7/d36/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__inherit__graph.md5 @@ -0,0 +1 @@ +572049a3643549b45aec9ee8da7fc9a3 \ No newline at end of file diff --git a/docs/d7/d42/_debug_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html b/docs/d7/d42/_debug_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html new file mode 100644 index 0000000..04fe938 --- /dev/null +++ b/docs/d7/d42/_debug_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/net48/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
+
+
+
+
+ + + + diff --git a/docs/d7/d60/_client_modules_2_i_websocket_module_8cs_source.html b/docs/d7/d60/_client_modules_2_i_websocket_module_8cs_source.html new file mode 100644 index 0000000..52d9b09 --- /dev/null +++ b/docs/d7/d60/_client_modules_2_i_websocket_module_8cs_source.html @@ -0,0 +1,117 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ClientModules/IWebsocketModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IWebsocketModule.cs
+
+
+
1 using MTSC.Client.Handlers;
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5 
7 {
11  public interface IWebsocketModule
12  {
18  void ConnectionInitialized(Client.Client client, WebsocketHandler handler);
26  bool HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes);
32  void ConnectionClosed(Client.Client client, WebsocketHandler handler);
33  }
34 }
bool HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)
Handle received message.
+
void ConnectionClosed(Client.Client client, WebsocketHandler handler)
Called when an existing websocket connection is being closed.
+
void ConnectionInitialized(Client.Client client, WebsocketHandler handler)
Called when a new websocket connection has been initialized.
+ + + +
Class containing the bytes of a websocket received message.
+ +
Handler implementing websocket protocol.
+
Definition: Client.cs:14
+
+
+ + + + diff --git a/docs/d7/da6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module-members.html b/docs/d7/da6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module-members.html new file mode 100644 index 0000000..dff2597 --- /dev/null +++ b/docs/d7/da6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.WebSockets.ServerModules.EchoModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.WebSockets.ServerModules.EchoModule, including all inherited members.

+ + +
SendMessage(WebsocketHandler handler, ClientData client, WebsocketMessage message) (defined in MTSC.Common.WebSockets.ServerModules.EchoModule)MTSC.Common.WebSockets.ServerModules.EchoModule
+
+ + + + diff --git a/docs/d7/db9/_release_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html b/docs/d7/db9/_release_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html new file mode 100644 index 0000000..92e9638 --- /dev/null +++ b/docs/d7/db9/_release_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/netcoreapp2.1/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
+
+
+
+
+ + + + diff --git a/docs/d7/dcd/namespace_m_t_s_c.html b/docs/d7/dcd/namespace_m_t_s_c.html new file mode 100644 index 0000000..7d1b138 --- /dev/null +++ b/docs/d7/dcd/namespace_m_t_s_c.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: MTSC Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC Namespace Reference
+
+
+ + + + + + + + +

+Classes

class  CommunicationPrimitives
 
class  HelperFunctions
 
struct  Message
 
+
+
+ + + + diff --git a/docs/d7/dcd/namespace_m_t_s_c.js b/docs/d7/dcd/namespace_m_t_s_c.js new file mode 100644 index 0000000..cfb3229 --- /dev/null +++ b/docs/d7/dcd/namespace_m_t_s_c.js @@ -0,0 +1,9 @@ +var namespace_m_t_s_c = +[ + [ "Client", "d3/dc6/namespace_m_t_s_c_1_1_client.html", "d3/dc6/namespace_m_t_s_c_1_1_client" ], + [ "Common", "db/dca/namespace_m_t_s_c_1_1_common.html", "db/dca/namespace_m_t_s_c_1_1_common" ], + [ "Exceptions", "d1/d56/namespace_m_t_s_c_1_1_exceptions.html", "d1/d56/namespace_m_t_s_c_1_1_exceptions" ], + [ "Logging", "db/dbe/namespace_m_t_s_c_1_1_logging.html", "db/dbe/namespace_m_t_s_c_1_1_logging" ], + [ "Server", "d3/d97/namespace_m_t_s_c_1_1_server.html", "d3/d97/namespace_m_t_s_c_1_1_server" ], + [ "Message", "dc/dd4/struct_m_t_s_c_1_1_message.html", "dc/dd4/struct_m_t_s_c_1_1_message" ] +]; \ No newline at end of file diff --git a/docs/d8/d00/_release_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html b/docs/d8/d00/_release_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html new file mode 100644 index 0000000..0fc6aa8 --- /dev/null +++ b/docs/d8/d00/_release_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/netcoreapp2.1/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
+
+
+
+
+ + + + diff --git a/docs/d8/d00/_server_2_handlers_2_websocket_handler_8cs_source.html b/docs/d8/d00/_server_2_handlers_2_websocket_handler_8cs_source.html new file mode 100644 index 0000000..4775f4f --- /dev/null +++ b/docs/d8/d00/_server_2_handlers_2_websocket_handler_8cs_source.html @@ -0,0 +1,137 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers/WebsocketHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
WebsocketHandler.cs
+
+
+
1 using MTSC.Common.Http;
4 using System;
5 using System.Collections.Concurrent;
6 using System.Collections.Generic;
7 using System.Security.Cryptography;
8 using System.Text;
9 
10 namespace MTSC.Server.Handlers
11 {
12  public class WebsocketHandler : IHandler
13  {
14  private static string WebsocketHeaderAcceptKey = "Sec-WebSocket-Accept";
15  private static string WebsocketHeaderKey = "Sec-WebSocket-Key";
16  private static string WebsocketProtocolKey = "Sec-WebSocket-Protocol";
17  private static string WebsocketProtocolVersionKey = "Sec-WebSocket-Version";
18  private static string GlobalUniqueIdentifier = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
19  private static SHA1 sha1Provider = SHA1.Create();
20  private static RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
21  public enum SocketState
22  {
23  Initial,
24  Handshaking,
25  Established,
26  Closed
27  }
28  #region Fields
29  public ConcurrentDictionary<ClientData, SocketState> webSockets = new ConcurrentDictionary<ClientData, SocketState>();
30  ConcurrentQueue<Tuple<ClientData,WebsocketMessage>> messageQueue = new ConcurrentQueue<Tuple<ClientData, WebsocketMessage>>();
31  List<IWebsocketModule> websocketModules = new List<IWebsocketModule>();
32  #endregion
33  #region Public Methods
40  {
41  this.websocketModules.Add(module);
42  return this;
43  }
48  public void QueueMessage(ClientData client, byte[] message)
49  {
50  WebsocketMessage sendMessage = new WebsocketMessage();
51  sendMessage.Data = message;
52  sendMessage.FIN = true;
53  rng.GetBytes(sendMessage.Mask);
54  sendMessage.Opcode = WebsocketMessage.Opcodes.Text;
55  messageQueue.Enqueue(new Tuple<ClientData, WebsocketMessage>(client, sendMessage));
56  }
62  public void QueueMessage(ClientData client, WebsocketMessage message)
63  {
64  messageQueue.Enqueue(new Tuple<ClientData, WebsocketMessage>(client, message));
65  }
70  public void CloseConnection(ClientData client)
71  {
72  WebsocketMessage websocketMessage = new WebsocketMessage();
73  websocketMessage.FIN = true;
74  websocketMessage.Opcode = WebsocketMessage.Opcodes.Close;
75  websocketMessage.Masked = false;
76  QueueMessage(client, websocketMessage);
77  }
78  #endregion
79  #region Handler Implementation
80  void IHandler.ClientRemoved(Server server, ClientData client)
81  {
82  SocketState state = SocketState.Initial;
83  while(!webSockets.TryRemove(client, out state));
84  }
85 
86  bool IHandler.HandleClient(Server server, ClientData client)
87  {
88  webSockets[client] = SocketState.Initial;
89  return false;
90  }
91 
92  bool IHandler.HandleReceivedMessage(Server server, ClientData client, Message message)
93  {
94  if (webSockets[client] == SocketState.Initial)
95  {
96  HttpMessage request = new HttpMessage();
97  request.ParseRequest(message.MessageBytes);
98  if(request.Method == HttpMessage.MethodEnum.Get && request.ContainsHeader(HttpMessage.GeneralHeadersEnum.Connection) &&
99  request[HttpMessage.GeneralHeadersEnum.Connection].ToLower() == "upgrade" && request.ContainsHeader(WebsocketProtocolVersionKey) &&
100  request[WebsocketProtocolVersionKey] == "13")
101  {
102  /*
103  * Prepare the handshake string.
104  */
105  string base64Key = request[WebsocketHeaderKey];
106  base64Key = base64Key.Trim();
107  string handshakeKey = base64Key + GlobalUniqueIdentifier;
108  string returnBase64Key = Convert.ToBase64String(sha1Provider.ComputeHash(Encoding.UTF8.GetBytes(handshakeKey)));
109 
110  /*
111  * Prepare the response.
112  */
113  HttpMessage response = new HttpMessage();
114  response.StatusCode = HttpMessage.StatusCodes.SwitchingProtocols;
115  response[HttpMessage.GeneralHeadersEnum.Upgrade] = "websocket";
116  response[HttpMessage.GeneralHeadersEnum.Connection] = "Upgrade";
117  response[WebsocketHeaderAcceptKey] = returnBase64Key;
118  server.QueueMessage(client, response.GetResponse(true));
119  webSockets[client] = SocketState.Established;
120  server.LogDebug("Websocket initialized " + client.TcpClient.Client.RemoteEndPoint.ToString());
121  foreach (IWebsocketModule websocketModule in websocketModules)
122  {
123  websocketModule.ConnectionInitialized(server, this, client);
124  }
125  return true;
126  }
127  }
128  else if(webSockets[client] == SocketState.Established)
129  {
130  WebsocketMessage receivedMessage = new WebsocketMessage(message.MessageBytes);
131  if (receivedMessage.Opcode == WebsocketMessage.Opcodes.Close)
132  {
133  foreach (IWebsocketModule websocketModule in websocketModules)
134  {
135  websocketModule.ConnectionClosed(server, this, client);
136  }
137  client.ToBeRemoved = true;
138  SocketState outSocketState = SocketState.Closed;
139  while(!webSockets.TryRemove(client, out outSocketState));
140  }
141  else
142  {
143  foreach (IWebsocketModule websocketModule in websocketModules)
144  {
145  if (websocketModule.HandleReceivedMessage(server, this, client, receivedMessage))
146  {
147  break;
148  }
149  }
150  }
151  return true;
152  }
153  return false;
154  }
155 
156  bool IHandler.HandleSendMessage(Server server, ClientData client, ref Message message)
157  {
158  return false;
159  }
160 
161  bool IHandler.PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
162  {
163  return false;
164  }
165 
166  void IHandler.Tick(Server server)
167  {
168  while (messageQueue.Count > 0)
169  {
170  Tuple<ClientData, WebsocketMessage> tuple = null;
171  if (messageQueue.TryDequeue(out tuple))
172  {
173  server.QueueMessage(tuple.Item1, tuple.Item2.GetMessageBytes());
174  if(tuple.Item2.Opcode == WebsocketMessage.Opcodes.Close)
175  {
176  foreach (IWebsocketModule websocketModule in websocketModules)
177  {
178  websocketModule.ConnectionClosed(server, this, tuple.Item1);
179  }
180  tuple.Item1.ToBeRemoved = true;
181  SocketState outSocketState = SocketState.Closed;
182  while(!webSockets.TryRemove(tuple.Item1, out outSocketState));
183  }
184  }
185  }
186  }
187  #endregion
188  }
189 }
Interface for communication handlers.
Definition: IHandler.cs:11
+
byte [] GetResponse(bool includeContentLengthHeader)
Build the response bytes based on the message contents.
Definition: HttpMessage.cs:345
+ + +
bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)
Handle a received message.
+
void QueueMessage(ClientData client, WebsocketMessage message)
Send a message to the client.
+ +
WebsocketHandler AddWebsocketHandler(IWebsocketModule module)
Add a webSocket module onto the server.
+
void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been closed.
+
Structure containing client information.
Definition: Server.cs:402
+ + + +
Class containing the bytes of a websocket received message.
+
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+ + + +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool ContainsHeader(ResponseHeadersEnum header)
Check if the message contains a header.
Definition: HttpMessage.cs:462
+
void CloseConnection(ClientData client)
Signals that the connetion is closing.
+ + +
Definition: Client.cs:14
+
void QueueMessage(ClientData client, byte[] message)
Send a message to the client.
+ + + +
void ParseRequest(byte[] requestBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:247
+
void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been initialized.
+
+
+ + + + diff --git a/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.dot b/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.dot new file mode 100644 index 0000000..ff27fda --- /dev/null +++ b/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "MTSC.Logging.ILogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Logging.ILogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Interface for loggers."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Logging.ConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html",tooltip="Basic logger that outputs the log messages to the console."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Logging.DebugConsole\lLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html",tooltip=" "]; +} diff --git a/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.md5 b/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.md5 new file mode 100644 index 0000000..ec461e0 --- /dev/null +++ b/docs/d8/d11/interface_m_t_s_c_1_1_logging_1_1_i_logger__inherit__graph.md5 @@ -0,0 +1 @@ +d7a60f261a003f8e4a32a4b72ec445ce \ No newline at end of file diff --git a/docs/d8/d17/_invalid_request_u_r_i_exception_8cs_source.html b/docs/d8/d17/_invalid_request_u_r_i_exception_8cs_source.html new file mode 100644 index 0000000..af2ecad --- /dev/null +++ b/docs/d8/d17/_invalid_request_u_r_i_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidRequestURIException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidRequestURIException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidRequestURIException : Exception
12  {
14  {
15  }
16 
17  public InvalidRequestURIException(string message) : base(message)
18  {
19  }
20 
21  public InvalidRequestURIException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidRequestURIException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+
Exception cause by an invalid request URI.
+
+
+ + + + diff --git a/docs/d8/d3e/_client_2_handlers_2_broadcast_handler_8cs_source.html b/docs/d8/d3e/_client_2_handlers_2_broadcast_handler_8cs_source.html new file mode 100644 index 0000000..17c9cf2 --- /dev/null +++ b/docs/d8/d3e/_client_2_handlers_2_broadcast_handler_8cs_source.html @@ -0,0 +1,118 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers/BroadcastHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BroadcastHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Net.Sockets;
4 using System.Text;
5 
7 {
8  public class BroadcastHandler : IHandler
9  {
10  private List<string> buffer = new List<string>();
15  {
16 
17  }
18 
24  public void Broadcast(Client client, string message)
25  {
26  client.QueueMessage(UnicodeEncoding.Unicode.GetBytes(message));
27  }
28 
29  void IHandler.Disconnected(Client client)
30  {
31 
32  }
33 
34  bool IHandler.HandleReceivedMessage(Client client, Message message)
35  {
36  client.LogDebug("Broadcast: " + UnicodeEncoding.Unicode.GetString(message.MessageBytes));
37  client.Log(">" + UnicodeEncoding.Unicode.GetString(message.MessageBytes));
38  return false;
39  }
40 
41  bool IHandler.HandleSendMessage(Client client, ref Message message)
42  {
43  return false;
44  }
45 
46  bool IHandler.InitializeConnection(Client client)
47  {
48  return true;
49  }
50 
51  bool IHandler.PreHandleReceivedMessage(Client client, ref Message message)
52  {
53  return false;
54  }
55 
56  void IHandler.Tick(Client client)
57  {
58 
59  }
60  }
61 }
void Log(string log)
Logs the message onto the associated loggers.
Definition: Client.cs:67
+
void Broadcast(Client client, string message)
Broadcast a message to all other clients connected to the server.
+ +
BroadcastHandler()
Creates a new instance of BroadcastHandler.
+
void Disconnected(Client client)
Called when the client is disconnected.
+
void QueueMessage(byte[] message)
Add a message to the message queue.
Definition: Client.cs:59
+ + +
Handler interface for client communication.
Definition: IHandler.cs:11
+
void LogDebug(string debugMessage)
Logs the debug message onto the associated loggers.
Definition: Client.cs:78
+
Base class for TCP Client.
Definition: Client.cs:19
+
+
+ + + + diff --git a/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html b/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html new file mode 100644 index 0000000..90174db --- /dev/null +++ b/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html @@ -0,0 +1,132 @@ + + + + + + + +MTSC: MTSC.Common.Http.ServerModules.FileServerModule Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ServerModules.FileServerModule Class Reference
+
+
+
+Inheritance diagram for MTSC.Common.Http.ServerModules.FileServerModule:
+
+
+ + +MTSC.Common.Http.ServerModules.IHttpModule + +
+ + + + +

+Public Member Functions

FileServerModule (string rootFolder="src")
 
+

Detailed Description

+
+

Definition at line 11 of file FileServerModule.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.js b/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.js new file mode 100644 index 0000000..d668b1d --- /dev/null +++ b/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module = +[ + [ "FileServerModule", "d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html#aded45bfc4e408256b4e7275cbb7f9686", null ] +]; \ No newline at end of file diff --git a/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.png b/docs/d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.png new file mode 100644 index 0000000000000000000000000000000000000000..8f10d36775c48395bd0bdf3db3980683fd312585 GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0y~yU~~eq12~w0WVBRI7m$(&@CkAK|NlRbdFIp&V?*Z& zKo%GuIB;N-+aePnm!l-eFPH(S2n4R43Nd0}VBYWP;uuoF_;&8=NsqO7*k<>ys{HSM zZ;g5aXHECiGv_Rqt}Hpm=H6tsVE>hq|2+{CV3|gqt zdLumI*Z)s{zwe0I_kY{g?w4+p{3_Wp<*%1&-mu!X_L}Aj&+QYx`)%mvn!Q$TS^e7b z$Gs|ZH?RMYWMIB+!y)N|PF%-lxf58QEmpTW<+`rwxvBDqy%YI`#)qRr0iI(4UN zcKE~3?AMz;FP-t`y1m*eL}ThpW1eK&7<0B8!8|{1_eP$7bWAzl`u*30NhZY+erMw5 z^iSzHlxWJsoHIF=f5P*)O=Y)ll%?O5yMN<^H22pi1J79%u8F^YEjVP@8fx*(a^_cy zLlc}lZ#@op7*N-*UF7hvz>9Bpna7^J`_Eqd_A9c&bcV{=J&Ot=&%awF8WUa-`ou1~ z-F|`3$;ib&6T%ke7Tr+F(w?#QMA)+#-&=uh*tkAmQeE5OTqRHWN4}N8z%T^`@*{JN zDNFtvtPGgsw8Y7iYa*Abri<2;B?A1dTd&Q!67|}bq0T&>f%8CYkfKA&`t>Co0t%u` zE)^0!?F`>NTNxaK6dXE2I0TeLnOZzr85Du4sL8#*e#4ZYNkLvaxmgt$cerb@a7^T4 z1Uj@qV5NY9OZW{RJE?i4X**xI-VQBjcx}_XrT_IVksR6EVXsBDxW}nI++{y8KlDb< z*Ysc4tIY2)%z>te)m-KBHRbz^TOae^$;#PZE}q@ae_`79JD2M>vt;U@HJiC{Yue-+ zwsvi0ci*3XZeApQQT^`p^KFO3ay?(@RkhnI|I#wCH9Pu!#~*|0%OAGo%qT70UHVS+ zR>u1?<;yngZFg=BSayEK;rZTnY5s-}^39i-bQeEAV*GT<=e<9V6(xOJ6e<>OvF6aj ztv1}#ElcN1A3e9NH@DpD?Z>yhcXr*M_dWue4CY>%@jS)rF~{@XKMQO8V9DUylrwSC z$Bo}_H$7A35M#j&)Zp@PQ^Z|Y?H%hr1Qo~!|GC4M>UB=)Ec@o*O}>25in*+tMQ`ex zT>ty5CQR|b`45jd8SOlvVflx-mEpfSTC~Y=d26a_E}b&_596J?&g`#b=H~&kH-o3E KpUXO@geCxDW8ql< literal 0 HcmV?d00001 diff --git a/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html b/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html new file mode 100644 index 0000000..49572d4 --- /dev/null +++ b/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html @@ -0,0 +1,167 @@ + + + + + + + +MTSC: MTSC.Exceptions.IExceptionHandler Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.IExceptionHandler Interface Reference
+
+
+ +

Handler to be used for handling exception. + More...

+
+Inheritance diagram for MTSC.Exceptions.IExceptionHandler:
+
+
+ + +MTSC.Exceptions.ExceptionConsoleLogger +MTSC.Exceptions.ExceptionThrower + +
+ + + + + +

+Public Member Functions

bool HandleException (Exception e)
 Handles exceptions. More...
 
+

Detailed Description

+

Handler to be used for handling exception.

+ +

Definition at line 10 of file IExceptionHandler.cs.

+

Member Function Documentation

+ +

◆ HandleException()

+ +
+
+ + + + + + + + +
bool MTSC.Exceptions.IExceptionHandler.HandleException (Exception e)
+
+ +

Handles exceptions.

+
Parameters
+ + +
eException to be handled.
+
+
+
Returns
True if it handled the exception. Otherwise returns false.
+ +

Implemented in MTSC.Exceptions.ExceptionConsoleLogger, and MTSC.Exceptions.ExceptionThrower.

+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.js b/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.js new file mode 100644 index 0000000..8c2908d --- /dev/null +++ b/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.js @@ -0,0 +1,4 @@ +var interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler = +[ + [ "HandleException", "d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html#a9f9e811f32979932510114a3807bfded", null ] +]; \ No newline at end of file diff --git a/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.png b/docs/d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8e7f6aba22b0b6faaa18a7f5d481e3f21d6b0d GIT binary patch literal 1201 zcmV;i1Wx;jP)vFR?5Cof{%J2WkCo#ILgusB4FP!ou8ZJVtrBSo{7vS$TP1E$z00I*(|k)KRV%iq`K^Z4DDFP6)41F+Wjn*d{_xEErixd8Oq z|4G9Du+|O?dEd*ha;SHQ+y%>f8;0JXYhW?$%#PX4+e36pMa{asueIzNv+dWNtlur}Hw(9FX;`1@KhBm`1cmS;o!&MlPtt||> z-p5DXevbCI$>aShEmh_%f#s8Uc<0oCJx0|m5EVic(LP#;V2As=h{O|7V(rT%Wl0NZ2I*WTNJoV z0G!ns7*aM47q#Ap+caR=*i;cxE{|bDp1ByKDHD~VG`0>m3;+l8t7iN}@L%37!(bQ; z13)js0ASe+uOA4_FaTIK!|Mk^GYkNh&G7nx(57jcK3V`4z~AcuU;$W$0l<2)@GuPk zmSF&}Dhs9oz%mQ~R>c9p00%9`^0G43@unYsh zo%DD-9@g>)@X@jZw!#how6Ya;z*g7+fL6A`4%iAi0MN=-*a2H%2LM{x3Oisc>;OP3 zTVV%mg&hEBWh?A}t*`?Ct!#xIxRDj}JkNir$2`yTU&>ZgD`rXhU_}@t>4Rk$41-}X z43gB!Fc=2IU>GE+Re@nj9h0Wz@9Xk;{O-#a%VoKdq_w`^l%%mP2YC5fcZ^LjGcgh=KX-oR5#CFS;q+X#+ zq~LW<@psnwGUuysnxxoPeeVUR?{5ul;)Stwc=RU?I#?!d?M^=A2W3Eop7jNtYB}p zeIh&?U;~C4C4c%Q&?XGo?sG8Q+MOdXbjy~cUOO<9!nL0WM+6UMyPXIR1=xaNP$qUh zsTk=^7;fdx9t_L>YT1(1E5a}c-F3C6Qi%5J_~y#a1Zd3P{!F&YM2>vDOx)X@O&Byu zD@oEwJ1{&mOLLL4O|6~zLCQe6+%2bO4(|r2lNiOVeJMgYr<}Wr`z{Q3b7wuvy3GDw zl13^pNYb0y`yEMoskZ}2(pX&@ZX7rOgCxDFJG=8iFsur+q}mL_XJv*a+e&JhVfYmo zB + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net45/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
+
+
+
+
+ + + + diff --git a/docs/d8/d8a/_release_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html b/docs/d8/d8a/_release_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html new file mode 100644 index 0000000..04f87da --- /dev/null +++ b/docs/d8/d8a/_release_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net48/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
+
+
+
+
+ + + + diff --git a/docs/d8/d92/_debug_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html b/docs/d8/d92/_debug_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html new file mode 100644 index 0000000..0016971 --- /dev/null +++ b/docs/d8/d92/_debug_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/net48/MTSC.AssemblyInfo.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.AssemblyInfo.cs
+
+
+
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 
11 using System;
12 using System.Reflection;
13 
14 [assembly: System.Reflection.AssemblyCompanyAttribute("Alexandru-Victor Macocian")]
15 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
16 [assembly: System.Reflection.AssemblyDescriptionAttribute("Modular TCP Server and Client")]
17 [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")]
18 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
19 [assembly: System.Reflection.AssemblyProductAttribute("MTSC")]
20 [assembly: System.Reflection.AssemblyTitleAttribute("MTSC")]
21 [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
22 
23 // Generated by the MSBuild WriteCodeFragment class.
24 
+
+ + + + diff --git a/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module-members.html b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module-members.html new file mode 100644 index 0000000..6a6ccfa --- /dev/null +++ b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module-members.html @@ -0,0 +1,108 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.ServerModules.Http404Module Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.ServerModules.Http404Module, including all inherited members.

+
+
+ + + + diff --git a/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html new file mode 100644 index 0000000..2935aac --- /dev/null +++ b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html @@ -0,0 +1,400 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.WebsocketMessage Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.WebsocketMessage Class Reference
+
+
+ +

Class containing the bytes of a websocket received message. + More...

+ + + + +

+Public Types

enum  Opcodes {
+  Text = 1, +Binary = 2, +Close = 8, +Ping = 9, +
+  Pong = 10 +
+ }
 
+ + + + + + + + + + +

+Public Member Functions

 WebsocketMessage (byte[] messageBytes)
 Creates a new instance of websocket message containing the given message. More...
 
 WebsocketMessage ()
 Creates a new instance of websocket message. More...
 
byte [] GetMessageBytes ()
 Get the packed message bytes. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Properties

bool? FIN [get, set]
 FIN bit. More...
 
Opcodes Opcode [get, set]
 Frame Opcode More...
 
bool? Masked [get, set]
 Mask bit. More...
 
ulong MessageLength [get, set]
 Length of message. More...
 
byte [] Mask [get, set]
 Mask of the message. More...
 
byte [] Data [get, set]
 Data of the message. More...
 
+

Detailed Description

+

Class containing the bytes of a websocket received message.

+ +

Definition at line 11 of file WebsocketMessage.cs.

+

Constructor & Destructor Documentation

+ +

◆ WebsocketMessage() [1/2]

+ +
+
+ + + + + + + + +
MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage (byte [] messageBytes)
+
+ +

Creates a new instance of websocket message containing the given message.

+
Parameters
+ + +
messageBytesByte array containing the message bytes.
+
+
+ +

Definition at line 133 of file WebsocketMessage.cs.

+ +
+
+ +

◆ WebsocketMessage() [2/2]

+ +
+
+ + + + + + + +
MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage ()
+
+ +

Creates a new instance of websocket message.

+ +

Definition at line 180 of file WebsocketMessage.cs.

+ +
+
+

Member Function Documentation

+ +

◆ GetMessageBytes()

+ +
+
+ + + + + + + +
byte [] MTSC.Common.WebSockets.WebsocketMessage.GetMessageBytes ()
+
+ +

Get the packed message bytes.

+
Returns
An array containing the message.
+ +

Definition at line 191 of file WebsocketMessage.cs.

+ +
+
+

Property Documentation

+ +

◆ Data

+ +
+
+ + + + + +
+ + + + +
byte [] MTSC.Common.WebSockets.WebsocketMessage.Data
+
+getset
+
+ +

Data of the message.

+ +

Definition at line 120 of file WebsocketMessage.cs.

+ +
+
+ +

◆ FIN

+ +
+
+ + + + + +
+ + + + +
bool? MTSC.Common.WebSockets.WebsocketMessage.FIN
+
+getset
+
+ +

FIN bit.

+ +

Definition at line 28 of file WebsocketMessage.cs.

+ +
+
+ +

◆ Mask

+ +
+
+ + + + + +
+ + + + +
byte [] MTSC.Common.WebSockets.WebsocketMessage.Mask
+
+getset
+
+ +

Mask of the message.

+ +

Definition at line 115 of file WebsocketMessage.cs.

+ +
+
+ +

◆ Masked

+ +
+
+ + + + + +
+ + + + +
bool? MTSC.Common.WebSockets.WebsocketMessage.Masked
+
+getset
+
+ +

Mask bit.

+ +

Definition at line 38 of file WebsocketMessage.cs.

+ +
+
+ +

◆ MessageLength

+ +
+
+ + + + + +
+ + + + +
ulong MTSC.Common.WebSockets.WebsocketMessage.MessageLength
+
+getset
+
+ +

Length of message.

+ +

Definition at line 43 of file WebsocketMessage.cs.

+ +
+
+ +

◆ Opcode

+ +
+
+ + + + + +
+ + + + +
Opcodes MTSC.Common.WebSockets.WebsocketMessage.Opcode
+
+getset
+
+ +

Frame Opcode

+

Gets and sets the 4 lower bits of the first byte.

+ +

Definition at line 33 of file WebsocketMessage.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.js b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.js new file mode 100644 index 0000000..7c9482f --- /dev/null +++ b/docs/d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.js @@ -0,0 +1,19 @@ +var class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message = +[ + [ "Opcodes", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0", [ + [ "Text", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0a9dffbf69ffba8bc38bc4e01abf4b1675", null ], + [ "Binary", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0a6ce976e8f061b2b5cfe4d0c50c3405dd", null ], + [ "Close", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0ad3d2e617335f08df83599665eef8a418", null ], + [ "Ping", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0ab85815d04cec053ce6deb8021f2df1b8", null ], + [ "Pong", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a787ab2ce5606a5252a722fd84496fea0a4d94412495a32342e1b8c78f7960f2bc", null ] + ] ], + [ "WebsocketMessage", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab783b89e4cefcfa4be94d6746e3b434e", null ], + [ "WebsocketMessage", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2d42d9363c74a535179edb1c51e1d439", null ], + [ "GetMessageBytes", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab11957d5fe1a10fa5f0e15edcb4cfd62", null ], + [ "Data", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ae66efe0af1a09ed8a7397a54403c4731", null ], + [ "FIN", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#afdcb7b3936befb1ec23c8ef1a3006c81", null ], + [ "Mask", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a6df2b0cb35d260167860bc8700019351", null ], + [ "Masked", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ad079fde84aeb3af5ba52a844e136dcf1", null ], + [ "MessageLength", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a600fffeaf9f28648333a380b13231e1f", null ], + [ "Opcode", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2f63f3604fa46cc17133590b1e33eec9", null ] +]; \ No newline at end of file diff --git a/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html b/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html new file mode 100644 index 0000000..fb4da57 --- /dev/null +++ b/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html @@ -0,0 +1,235 @@ + + + + + + + +MTSC: MTSC.Common.Http.ServerModules.IHttpModule Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ServerModules.IHttpModule Interface Reference
+
+
+ +

Interface for Http modules used by the server http handler. + More...

+
+Inheritance diagram for MTSC.Common.Http.ServerModules.IHttpModule:
+
+
+ + +MTSC.Common.Http.ServerModules.FileServerModule +MTSC.Common.Http.ServerModules.HelloWorldModule +MTSC.Common.Http.ServerModules.Http404Module + +
+ + + + + + + + +

+Public Member Functions

bool HandleRequest (Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
 Handle the received request. More...
 
void Tick (Server.Server server, HttpHandler handler)
 Perform periodic operations. More...
 
+

Detailed Description

+

Interface for Http modules used by the server http handler.

+ +

Definition at line 13 of file IHttpModule.cs.

+

Member Function Documentation

+ +

◆ HandleRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Common.Http.ServerModules.IHttpModule.HandleRequest (Server.Server server,
HttpHandler handler,
ClientData client,
HttpMessage request,
ref HttpMessage response 
)
+
+ +

Handle the received request.

+
Parameters
+ + + + +
senderHandlerHandler that handled the request.
clientClient data.
requestRequest message.
+
+
+
Returns
True if no other module should handle the received request.
+ +
+
+ +

◆ Tick()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.Http.ServerModules.IHttpModule.Tick (Server.Server server,
HttpHandler handler 
)
+
+ +

Perform periodic operations.

+
Parameters
+ + +
handler
+
+
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.js b/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.js new file mode 100644 index 0000000..777543f --- /dev/null +++ b/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.js @@ -0,0 +1,5 @@ +var interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module = +[ + [ "HandleRequest", "d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#aa9dd1d20426aa04e563e45774073fce2", null ], + [ "Tick", "d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#a544defcb7ffcfc6008fd85d0997258a6", null ] +]; \ No newline at end of file diff --git a/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.png b/docs/d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.png new file mode 100644 index 0000000000000000000000000000000000000000..962fc6e2e7d0d37873f197077efc1920070b08b1 GIT binary patch literal 1865 zcmd5-YgAHM6h>u{6*y`SO&J{{ZCYk%C7Df{rl~!&RIGe}(bIf{qKS%Fp3n!DEd&fa(5ea^Sf{?@tYcKdoE z7MLx7Kp+SoZx4S6L{A9p-THa}O9k>`Fq!V&8R)6iYJth)epu(Q^)j$#M`L4S`L?_3 zfvX?y?;8LCAI&_S+`zRE2<(H8hg%?7XQa0`j#+D*K0v?2Ri?d4v0G_+I+k#z+;wT^ zDqI%zrcr)`bg^#y0n@Wq@Fsf=Qr}P*c+Yvj@QR^sUUuM003SA^@%S2 z`NT|beVukM#v%iw`Bsf;^8S2&W4KB+r64zGM{+F+%*N~r-HIX|CW4+MMGFecmkeHs z%vY{t+2b9YpiY*L5iUt;2U%=xhzv&Qh@>?viz=&Xf@$6Cd3)goI_(@B?J<6Tp4f8U zkEaWFVv^yj^)w?jmLL33*@>fWMRxZ`j(1@aHk>oz=e`ysB|>RO2}HmPXHKb-HkoCk zh@$CN28n{z78ZJZai>pr*3(rsib|K1_>%8A7#_tP-99W?q)}ujX)M?*p%l2wuOz%# z-hedtmRJN0^V?UvuPiEt{Pkm3Tg$k#yQEe=kA|4tq~2Z?I$>Lg#HfZ>gxMV|AAC10 zZ7gE$7wqu!t5yTq01;<2We`I%b=bOXuqv-yhd!97a_&w9wsfGqb7{^gpJ!YiE zvDEcyi9A91=3vaCM~-AcWq9&HMJ3OfPQ8`rWly$&(IFBMv{Q|@yR)~?6bagBiZn2y zZ9SzhqBU8~R`RbldMCWJT5bjU^U&AHV?{bdg6f=4&rCNIQh+GZfjA2FbabKQTyrSU zhjX*g@VCawn%+So@cidIl}PS{)P>dsh%g&sXR@reoVqZ>0Ahjy>~z*_ z1FhB#%>v}0HKwx(4uIEOf^bDoOm#?2Z%j4uMQ=>8uC698Q@<|r_Uj7|=FdBqIWqx| zc=>`8Ru!X_cjr|tTo%4vX0E>0CJ|2YqwjB1D;q1M= zoWU^JQvtw%jO}#u&%t6rJu|>!G7NG+!m#JN8Gz%k374-P!eY^Pj{rDA`z5=7KqT)F zP5-DqkxV`wh)r!hdRZC_uUis@69mZvUVDkByjGu0v+gJP;Cy+Kjjbj&1t?5Ff2%5k zg|?MBOY6qH1?OL^)NqA=`jXCgj(MI<9j;p{ZwtRrIbwVwlAxrR!y4}0bj7Gjv+&C_ zjPlZ)J{k|7kT&V2s)pB76U%l`ql);!MOYWub)BMUWzwO(l2IC;;~3V~T{LPlPMCC_ zAk?JQhrzTQcIfAt#R;|@Nb-%mDa4PC*5}*1n+rpxw#T&!cRgLDNEYEJqX!eI8j~B# zBw-PidmK^G=cVhqm$*I;(iUTQwK{96UfyR3j%`-dtyNjGL$lW(u8G<;U~yXcm--qD zy;?^2ewL-YCQgABVzSU|rddHL_IWm9_~DwMRYA3?mQSCrlND3}5<_aQSNCmDHK2zA zHdY$F_k5OB;nkiBYsh+(8~3y%%=%fxnEKmE#OCIZ=s;#hPxW28xn=*`c*n>Tbpn54 zNF2kb8YFfoxx&4RNfsX?$2P}NBgUBA$wT6cT?ILmRv~}HgdI|Rj2$9T56QZ0Lziik zU+a#J*=9a_UDh@|@uXjff2hu2Jx0l*#*!9=ReirIu43KLKDemuolK!K+GOVARfr7@ zPq4Nj=3RqF`K_|xF9q^S7W((07WW26RVYKwRRh;nwp>ao&9_!xXUSi12IuaCt)0WS z=Pj+841LuvtG~_59E`Xf9Qx@Ns@_hrhKBd(I{a3R zDsY`@%jvNPV${+l*g))b6J-w&Wdrw9v&OGebK>yy#e1_-C5$l`xMtx`sT$Mv&S`p> zopu0(cEp|s;(ZSN589qtnRagllaXxX2w Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/d8/dab/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__coll__graph.md5 b/docs/d8/dab/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__coll__graph.md5 new file mode 100644 index 0000000..75c4938 --- /dev/null +++ b/docs/d8/dab/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler__coll__graph.md5 @@ -0,0 +1 @@ +10f9555c9bebe3cc7ec1a026e586a5a5 \ No newline at end of file diff --git a/docs/d8/dba/_server_8cs_source.html b/docs/d8/dba/_server_8cs_source.html new file mode 100644 index 0000000..d91b350 --- /dev/null +++ b/docs/d8/dba/_server_8cs_source.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Server.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Server.cs
+
+
+
1 using MTSC.Exceptions;
2 using MTSC.Logging;
3 using MTSC.Server.Handlers;
4 using System;
5 using System.Collections.Concurrent;
6 using System.Collections.Generic;
7 using System.Net;
8 using System.Net.Security;
9 using System.Net.Sockets;
10 using System.Security.Cryptography.X509Certificates;
11 using System.Text;
12 using System.Threading;
13 using System.Threading.Tasks;
14 
15 namespace MTSC.Server
16 {
20  public sealed class Server
21  {
22  #region Fields
23  bool running;
24  X509Certificate2 certificate;
25  TcpListener listener;
26  int port = 50;
27  List<ClientData> toRemove = new List<ClientData>();
28  List<ClientData> clients = new List<ClientData>();
29  List<IHandler> handlers = new List<IHandler>();
30  List<ILogger> loggers = new List<ILogger>();
31  List<IExceptionHandler> exceptionHandlers = new List<IExceptionHandler>();
32  ConcurrentQueue<Tuple<ClientData, byte[]>> messageQueue = new ConcurrentQueue<Tuple<ClientData, byte[]>>();
33  int loopMillis = 16;
34  #endregion
35  #region Properties
36  public int Port { get => port; set => port = value; }
43  public bool Running { get => running; }
47  public List<ClientData> Clients { get => clients; set => clients = value; }
52  public bool ScaleUsage { get; set; }
58  public int TickRate { get => 1000 / loopMillis; set => loopMillis = 1000 / Math.Min(value, 1000); }
62  public bool ForceTickrate { get; set; }
63  #endregion
64  #region Constructors
65  public Server()
69  {
70 
71  }
76  public Server(int port)
77  {
78  this.port = port;
79  }
85  public Server(X509Certificate2 certificate, int port)
86  {
87  this.certificate = certificate;
88  this.port = port;
89  }
90  #endregion
91  #region Public Methods
92  public Server SetPort(int port)
98  {
99  this.port = port;
100  return this;
101  }
107  public Server AddHandler(IHandler handler)
108  {
109  handlers.Add(handler);
110  return this;
111  }
117  public Server AddLogger(ILogger logger)
118  {
119  loggers.Add(logger);
120  return this;
121  }
128  {
129  exceptionHandlers.Add(handler);
130  return this;
131  }
137  public void QueueMessage(ClientData target, byte[] message)
138  {
139  messageQueue.Enqueue(new Tuple<ClientData, byte[]>(target, message));
140  }
145  public void Log(string log)
146  {
147  foreach (ILogger logger in loggers)
148  {
149  logger.Log(log);
150  }
151  }
156  public void LogDebug(string debugMessage)
157  {
158  foreach (ILogger logger in loggers)
159  {
160  logger.LogDebug(debugMessage);
161  }
162  }
166  public void Run()
167  {
168  listener?.Stop();
169  listener = new TcpListener(IPAddress.Any, port);
170  listener.Start();
171  running = true;
172  Log("Server started on: " + listener.LocalEndpoint.ToString());
173  DateTime lastLoad = DateTime.Now;
174  DateTime startLoopTime;
175  while (running)
176  {
177  startLoopTime = DateTime.Now;
178  /*
179  * Check the client states. If a client is disconnected,
180  * remove it from the list of clients.
181  */
182  try
183  {
184  foreach (ClientData client in clients)
185  {
186  if (!client.TcpClient.Connected || client.ToBeRemoved)
187  {
188  toRemove.Add(client);
189  }
190  }
191  foreach (ClientData client in toRemove)
192  {
193  foreach (IHandler handler in handlers)
194  {
195  handler.ClientRemoved(this, client);
196  }
197  LogDebug("Client removed: " + client.TcpClient.Client.RemoteEndPoint.ToString());
198  client.SslStream?.Dispose();
199  client.TcpClient?.Dispose();
200  clients.Remove(client);
201  }
202  toRemove.Clear();
203  }
204  catch (Exception e)
205  {
206  LogDebug("Exception: " + e.Message);
207  LogDebug("Stacktrace: " + e.StackTrace);
208  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
209  {
210  if (exceptionHandler.HandleException(e))
211  {
212  break;
213  }
214  }
215  }
216  /*
217  * Check if the server has any pending connections.
218  * If it has a new connection, process it.
219  */
220  try
221  {
222  if (listener.Pending())
223  {
224  lastLoad = DateTime.Now;
225  TcpClient tcpClient = listener.AcceptTcpClient();
226  ClientData clientStruct = new ClientData(tcpClient);
227  if (certificate != null)
228  {
229  SslStream sslStream = new SslStream(tcpClient.GetStream(), true, new RemoteCertificateValidationCallback((o, c, ch, po) => {
230  return true;
231  }), null, EncryptionPolicy.RequireEncryption);
232  clientStruct.SslStream = sslStream;
233  sslStream.AuthenticateAsServer(certificate);
234  }
235  foreach (IHandler handler in handlers)
236  {
237  if (handler.HandleClient(this, clientStruct))
238  {
239  break;
240  }
241  }
242  clients.Add(clientStruct);
243  Log("Accepted new connection: " + tcpClient.Client.RemoteEndPoint.ToString());
244  }
245  }
246  catch(Exception e)
247  {
248  LogDebug("Exception: " + e.Message);
249  LogDebug("Stacktrace: " + e.StackTrace);
250  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
251  {
252  if (exceptionHandler.HandleException(e))
253  {
254  break;
255  }
256  }
257  }
258  /*
259  * Process in parallel all clients.
260  */
261  Parallel.ForEach(clients, (client) =>
262  {
263  try
264  {
265  /*
266  * If the connection has been lost, mark the client to be removed.
267  * Else, check if there is data to be read.
268  */
269  if (!client.TcpClient.Connected)
270  {
271  client.ToBeRemoved = true;
272  }
273  else if (client.TcpClient.Available > 0)
274  {
275  lastLoad = DateTime.Now;
276  Message message = CommunicationPrimitives.GetMessage(client.TcpClient, client.SslStream);
277  LogDebug("Received message from " + client.TcpClient.Client.RemoteEndPoint.ToString() +
278  "\nMessage length: " + message.MessageLength);
279  foreach (IHandler handler in handlers)
280  {
281  if (handler.PreHandleReceivedMessage(this, client, ref message))
282  {
283  break;
284  }
285  }
286  foreach (IHandler handler in handlers)
287  {
288  if (handler.HandleReceivedMessage(this, client, message))
289  {
290  break;
291  }
292  }
293  }
294  }
295  catch(Exception e)
296  {
297  LogDebug("Exception: " + e.Message);
298  LogDebug("Stacktrace: " + e.StackTrace);
299  foreach(IExceptionHandler exceptionHandler in exceptionHandlers)
300  {
301  if (exceptionHandler.HandleException(e))
302  {
303  break;
304  }
305  }
306  }
307  });
308  /*
309  * Iterate through all the handlers, running periodic operations.
310  */
311  Parallel.ForEach(handlers, (handler) =>
312  {
313  try
314  {
315  handler.Tick(this);
316  }
317  catch (Exception e)
318  {
319  LogDebug("Exception: " + e.Message);
320  LogDebug("Stacktrace: " + e.StackTrace);
321  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
322  {
323  if (exceptionHandler.HandleException(e))
324  {
325  break;
326  }
327  }
328  }
329  });
330  /*
331  * Check if there are messages queued to be sent.
332  */
333  if(messageQueue.Count > 0)
334  {
335  lastLoad = DateTime.Now;
336  try
337  {
338  while (messageQueue.Count > 0)
339  {
340  Tuple<ClientData, byte[]> queuedOrder = null;
341  if (messageQueue.TryDequeue(out queuedOrder))
342  {
343  Message sendMessage = CommunicationPrimitives.BuildMessage(queuedOrder.Item2);
344  for (int i = handlers.Count - 1; i >= 0; i--)
345  {
346  IHandler handler = handlers[i];
347  ClientData client = queuedOrder.Item1;
348  handler.HandleSendMessage(this, client, ref sendMessage);
349  }
350  CommunicationPrimitives.SendMessage(queuedOrder.Item1.TcpClient, sendMessage, queuedOrder.Item1.SslStream);
351  }
352  }
353  }
354  catch (Exception e)
355  {
356  LogDebug("Exception: " + e.Message);
357  LogDebug("Stacktrace: " + e.StackTrace);
358  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
359  {
360  if (exceptionHandler.HandleException(e))
361  {
362  break;
363  }
364  }
365  }
366  }
367  /*
368  * If the server load is low or the server has a forced tickrate,
369  * sleep an amount of milliseconds to lower the CPU usage.
370  */
371  if(((DateTime.Now - lastLoad).TotalMilliseconds > 1000) && ScaleUsage ||
373  {
374  Thread.Sleep((int)Math.Max(loopMillis - (DateTime.Now - startLoopTime).TotalMilliseconds, 0));
375  }
376  }
377  }
381  public Task RunAsync()
382  {
383  return new Task(Run);
384  }
388  public void Stop()
389  {
390  if (running)
391  {
392  running = false;
393  }
394  }
395  #endregion
396  #region Private Methods
397  #endregion
398  }
402  public class ClientData
403  {
404  public TcpClient TcpClient;
405  public DateTime LastMessageTime;
406  public bool ToBeRemoved;
407  public SslStream SslStream;
408 
409  public ClientData(TcpClient client)
410  {
411  this.TcpClient = client;
412  this.LastMessageTime = DateTime.Now;
413  ToBeRemoved = false;
414  SslStream = null;
415  }
416  }
417 }
Interface for communication handlers.
Definition: IHandler.cs:11
+
Server(int port)
Creates an instance of server.
Definition: Server.cs:76
+
int TickRate
How many times does the server proc per second. Cannot be set higher than 1000. This tickrate will be...
Definition: Server.cs:58
+
int Port
Server port.
Definition: Server.cs:39
+
bool Log(string message)
Logs the received message.
+
Task RunAsync()
Runs the server async.
Definition: Server.cs:381
+
bool HandleException(Exception e)
Handles exceptions.
+ +
Structure containing client information.
Definition: Server.cs:402
+
bool Running
Returns the state of the server.
Definition: Server.cs:43
+ +
bool ForceTickrate
If set to true, the server will respect the provided TickRate, regardless of current server load.
Definition: Server.cs:62
+
Server SetPort(int port)
Sets the port to the specified value.
Definition: Server.cs:97
+
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+
void QueueMessage(ClientData target, byte[] message)
Queues a message to be sent.
Definition: Server.cs:137
+
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+ +
bool ScaleUsage
If set to true, the server will use an algorithm to lower or increase the CPU usage based on demands.
Definition: Server.cs:52
+
void Run()
Blocking method. Runs the server on the current thread.
Definition: Server.cs:166
+
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
Interface for loggers.
Definition: ILogger.cs:10
+
Server AddHandler(IHandler handler)
Adds a handler to the server.
Definition: Server.cs:107
+
List< ClientData > Clients
List of clients currently connected to the server.
Definition: Server.cs:47
+
Server AddLogger(ILogger logger)
Adds a logger to the server.
Definition: Server.cs:117
+
bool HandleClient(Server server, ClientData client)
Handles a new client.
+ +
void Stop()
Stop the server.
Definition: Server.cs:388
+
Server AddExceptionHandler(IExceptionHandler handler)
Adds an exception handler to the server.
Definition: Server.cs:127
+
void LogDebug(string debugMessage)
Adds a debug message to be logged by the associated loggers.
Definition: Server.cs:156
+
Server(X509Certificate2 certificate, int port)
Creates an instance of server.
Definition: Server.cs:85
+
bool HandleSendMessage(Server server, ClientData client, ref Message message)
Handles a message before sending.
+
Definition: Client.cs:14
+
bool LogDebug(string message)
Logs the received debug message.
+
void Log(string log)
Adds a message to be logged by the associated loggers.
Definition: Server.cs:145
+ +
Handler to be used for handling exception.
+
+
+ + + + diff --git a/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.dot b/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.dot new file mode 100644 index 0000000..177db7e --- /dev/null +++ b/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidWebsocketFormatException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidWebsocket\lFormatException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.md5 b/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.md5 new file mode 100644 index 0000000..cf097b3 --- /dev/null +++ b/docs/d8/df0/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__inherit__graph.md5 @@ -0,0 +1 @@ +bc430c32a0f44416044ca1eab29b5939 \ No newline at end of file diff --git a/docs/d9/d13/_client_2_handlers_2_http_handler_8cs_source.html b/docs/d9/d13/_client_2_handlers_2_http_handler_8cs_source.html new file mode 100644 index 0000000..b5df21a --- /dev/null +++ b/docs/d9/d13/_client_2_handlers_2_http_handler_8cs_source.html @@ -0,0 +1,125 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers/HttpHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
HttpHandler.cs
+
+
+
1 using MTSC.Common.Http;
3 using System;
4 using System.Collections.Generic;
5 using System.Net.Sockets;
6 using System.Text;
7 
8 namespace MTSC.Client.Handlers
9 {
13  public class HttpHandler : IHandler
14  {
15  #region Fields
16  List<IHttpModule> httpModules = new List<IHttpModule>();
17  #endregion
18  #region Constructors
19  public HttpHandler()
20  {
21 
22  }
23  #endregion
24  #region Public Methods
25  public void SendRequest(Client client, HttpMessage request)
30  {
31  client.QueueMessage(request.GetRequest());
32  }
38  public HttpHandler AddModule(IHttpModule httpModule)
39  {
40  httpModules.Add(httpModule);
41  return this;
42  }
43  #endregion
44  #region Interface Implementation
45  void IHandler.Disconnected(Client client)
50  {
51 
52  }
59  bool IHandler.HandleReceivedMessage(Client client, Message message)
60  {
61  HttpMessage httpMessage = new HttpMessage();
62  httpMessage.ParseResponse(message.MessageBytes);
63  foreach(IHttpModule httpModule in httpModules)
64  {
65  if (httpModule.HandleResponse(this, httpMessage))
66  {
67  break;
68  }
69  }
70  return false;
71  }
78  bool IHandler.HandleSendMessage(Client client, ref Message message)
79  {
80  return false;
81  }
87  bool IHandler.InitializeConnection(Client client)
88  {
89  return true;
90  }
97  bool IHandler.PreHandleReceivedMessage(Client client, ref Message message)
98  {
99  return false;
100  }
105  void IHandler.Tick(Client tcpClient)
106  {
107 
108  }
109  #endregion
110  }
111 }
bool HandleResponse(IHandler handler, HttpMessage response)
Handle a response received from the server.
+
HttpHandler AddModule(IHttpModule httpModule)
Add a http module.
Definition: HttpHandler.cs:38
+
byte [] GetRequest()
Build the request bytes based on the message contents.
Definition: HttpMessage.cs:225
+ + + +
void SendRequest(Client client, HttpMessage request)
Send a request to the server.
Definition: HttpHandler.cs:29
+
Handler for handling client http communication.
Definition: HttpHandler.cs:13
+
void Disconnected(Client client)
Called when the client is disconnected.
+
void QueueMessage(byte[] message)
Add a message to the message queue.
Definition: Client.cs:59
+ + + + +
Handler interface for client communication.
Definition: IHandler.cs:11
+
Definition: Client.cs:14
+
void ParseResponse(byte[] responseBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:375
+
Base class for TCP Client.
Definition: Client.cs:19
+
+
+ + + + diff --git a/docs/d9/d29/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler-members.html b/docs/d9/d29/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler-members.html new file mode 100644 index 0000000..a92dba0 --- /dev/null +++ b/docs/d9/d29/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Handlers.EncryptionHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Server.Handlers.EncryptionHandler, including all inherited members.

+ + +
EncryptionHandler(RSACryptoServiceProvider rsa)MTSC.Server.Handlers.EncryptionHandler
+
+ + + + diff --git a/docs/d9/d37/class_m_t_s_c_1_1_server_1_1_server-members.html b/docs/d9/d37/class_m_t_s_c_1_1_server_1_1_server-members.html new file mode 100644 index 0000000..f196e8e --- /dev/null +++ b/docs/d9/d37/class_m_t_s_c_1_1_server_1_1_server-members.html @@ -0,0 +1,128 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Server Member List
+
+ +
+ + + + diff --git a/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.dot b/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.dot new file mode 100644 index 0000000..91d6cc4 --- /dev/null +++ b/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.BroadcastHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Server.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Broadcast handler."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 b/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 new file mode 100644 index 0000000..6608453 --- /dev/null +++ b/docs/d9/d57/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 @@ -0,0 +1 @@ +bfeb79731e72205941a86a3e8a2df179 \ No newline at end of file diff --git a/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot b/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot new file mode 100644 index 0000000..e92f66a --- /dev/null +++ b/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.BroadcastHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Client.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 b/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 new file mode 100644 index 0000000..7400a0c --- /dev/null +++ b/docs/d9/d61/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__inherit__graph.md5 @@ -0,0 +1 @@ +0bb4c6ec23576a5cfa752055b10b989c \ No newline at end of file diff --git a/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.dot b/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.dot new file mode 100644 index 0000000..bea4f45 --- /dev/null +++ b/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidStatusCodeException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidStatus\lCodeException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception for invalid response status code."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.md5 b/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.md5 new file mode 100644 index 0000000..a0758b6 --- /dev/null +++ b/docs/d9/d69/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception__inherit__graph.md5 @@ -0,0 +1 @@ +fc116c7f9cb2e882b7e42a157bd71e09 \ No newline at end of file diff --git a/docs/d9/d83/_release_2net45_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html b/docs/d9/d83/_release_2net45_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html new file mode 100644 index 0000000..2c36103 --- /dev/null +++ b/docs/d9/d83/_release_2net45_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net45/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
+
+
+
+
+ + + + diff --git a/docs/d9/daf/_debug_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html b/docs/d9/daf/_debug_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html new file mode 100644 index 0000000..e622821 --- /dev/null +++ b/docs/d9/daf/_debug_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/netcoreapp2.1/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
+
+
+
+
+ + + + diff --git a/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html b/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html new file mode 100644 index 0000000..11627b9 --- /dev/null +++ b/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html @@ -0,0 +1,279 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ServerModules.IWebsocketModule Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ServerModules.IWebsocketModule Interface Reference
+
+
+
+Inheritance diagram for MTSC.Common.WebSockets.ServerModules.IWebsocketModule:
+
+
+ + +MTSC.Common.WebSockets.ServerModules.BroadcastModule +MTSC.Common.WebSockets.ServerModules.EchoModule + +
+ + + + + + + + + + + +

+Public Member Functions

void ConnectionInitialized (Server.Server server, WebsocketHandler handler, ClientData client)
 Called when a connection has been initialized. More...
 
bool HandleReceivedMessage (Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)
 Handle a received message. More...
 
void ConnectionClosed (Server.Server server, WebsocketHandler handler, ClientData client)
 Called when a connection has been closed. More...
 
+

Detailed Description

+
+

Definition at line 9 of file IWebsocketModule.cs.

+

Member Function Documentation

+ +

◆ ConnectionClosed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionClosed (Server.Server server,
WebsocketHandler handler,
ClientData client 
)
+
+ +

Called when a connection has been closed.

+
Parameters
+ + + + +
serverServer object.
handlerHandler currently processing.
clientClient object.
+
+
+ +
+
+ +

◆ ConnectionInitialized()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionInitialized (Server.Server server,
WebsocketHandler handler,
ClientData client 
)
+
+ +

Called when a connection has been initialized.

+
Parameters
+ + + + +
serverServer object.
handlerHandler currently processing.
clientClient object.
+
+
+ +
+
+ +

◆ HandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Common.WebSockets.ServerModules.IWebsocketModule.HandleReceivedMessage (Server.Server server,
WebsocketHandler handler,
ClientData client,
WebsocketMessage receivedMessage 
)
+
+ +

Handle a received message.

+
Parameters
+ + + + +
handlerHandler that currently processes the message.
messageBytesBytes of the message.
clientClient data.
+
+
+
Returns
True if no other module should process the message.
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.js b/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.js new file mode 100644 index 0000000..29878e6 --- /dev/null +++ b/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.js @@ -0,0 +1,6 @@ +var interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module = +[ + [ "ConnectionClosed", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af7995b56b7be456b8e243219723a58a3", null ], + [ "ConnectionInitialized", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af8343d909795c638731c01c92bfb3101", null ], + [ "HandleReceivedMessage", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#a4c7c43390bb8f4f49cb2d354a8cb57d8", null ] +]; \ No newline at end of file diff --git a/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.png b/docs/d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.png new file mode 100644 index 0000000000000000000000000000000000000000..300cd7c45cd14eaa92a550a6f00317fd61484445 GIT binary patch literal 1688 zcmchYc~DbV7{y=66d9<*6e|o>aS+ic1q6g)5k%Pnc`3390s%xoz=mqrZ3yBZSR>S6 zK@u>nXspVxuLelUCK3{mMFjxik09``)|1GxwG& z)^Vq@rZNBkJJC*dZUCSlhPI)STOlHI>(+l;<4mkiQ2CC`;^(J|ni^MRTeU=~_0S4e1RFipIhL#IW8l^27Dwm!XLo1zsx147#!O(E zgJ>Klya$fap;>QTiyTU7ci#e*^3Rw_g7?v67ex`M0t^ZD1Vk9#?PS=Pj$P}KnroDK zt|V2*Gy|WN5>%@2qqXH^Khof2!h6d|rT2Jc7ryom-+rNgPk&^3x#j)I)I8IZY`-f1 zxNN*)V#-XmpL_b%b7$8 zBMgdxEOS%hNR2ghfA(S#oUhrgPD_cIZEKJVGsvh$Yi3vpEH>gfA`z7u&@7 zhOfh87MASwPNmg!R^>8(Krj+QDTjY;-9$QXRfMlPNR$dB#Myz|BhmQdrwcc^lAsgZ zJufu15H}2uQUbi`bLi}@0LDfPMg1!D$%MZiYV${c#_bb3?x(8&hI=Aa4Uy_Vpx&Fk zf!hB>1w_qph#ol15KtVoLIChUK$Hw3AZ?ro>W6D2(*k=SWiCx5F!!^8w{Y6FD*0}! z;s^g9HE(7)-l}6_IlcqN20m_n2FEn5z{#!uW1TSI(A}I#S&q&qDX2$sMu9hU&<>QF zNYG%r1ogOdU%H%#rrw0+1*Nlx!Zl6nb?&q>avp^bh$$wTG#rJ21X-8mIctJW;rtpu zJ1Q1I5q~$cgvlyYe;)Ca**T@}GV3^(>Yby9KB@ZRfwn(3wo$C_Q0au8+BAS6K>DF! z+}rIC9Y71rduz4ky=Ss&pFhs)+aUamV6gHQ$g}=rgkVsTtPYauL~GUSH4QTx0Le$jr_HFi|e4hB9c=@O6nO>s3*%>|M)x#fG1n zpIePJ&01@6D%5iBjokmK%S-G?mrn+_`#j4hqmELyPiu|79mTdV!iiU(Bw8YeHtJT- z6;HNy6ZH8}7!vD3bSTT0WB${j)MHc}g{&iGnFl4JjVR*9ZI(Jz0|D1l@-K^$Fc7%9kMFf2e>clEDy4Zeg=*|Q=o$gg_E@{3(}5|!03@7C AbpQYW literal 0 HcmV?d00001 diff --git a/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html b/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html new file mode 100644 index 0000000..4fc5719 --- /dev/null +++ b/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidPostFormException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidPostFormException Class Reference
+
+
+ +

Exception for invalid post forms. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidPostFormException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidPostFormException (string message)
 
InvalidPostFormException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidPostFormException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception for invalid post forms.

+ +

Definition at line 11 of file InvalidPostFormException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.js b/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.js new file mode 100644 index 0000000..b42ddd4 --- /dev/null +++ b/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception = +[ + [ "InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html#a9340b0cd9b274709514b68224c920ac5", null ], + [ "InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html#a41f6a66d9b0776a1a9e71d9282ce49f5", null ], + [ "InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html#a93a22f65244a1b596788b433f3e1663f", null ], + [ "InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html#a208779082fbccad88fc1f5aadb26ed1a", null ] +]; \ No newline at end of file diff --git a/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.png b/docs/d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..a2aaf31dca47bb53717ff337202dfefb2d7609a1 GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0y~yU}Ocd12~w0qyPE$-%Xzt=y0 zJ7aQ-;lIgdh2=B1njCas_^5b9_sp4T;yo(j(=|GpG&-10Cd^+vVUnTeysX!IpZnN( zG^#w`rK@A_m#8n-KJSr|=(edZtJm)|n^d#kPM%xy&1Jjn#3km}-6rK<=dDznU*ak} zLxy4EliQ`vaU3E-GrwwVS=;B7B*$83?HFaGyBj`!Cq|5IX}WOMnh9njK0 zdR!`%%Uv8rfXIXGw#JN^YxNj*M8-30*yHk$@u9bb%R&bMw!nZg5mttK5M>N3!mNP; ztbq&yJ|JB#j1C4Mt^g~;L1YE3_uUSj$*DZZkWknO^jwn$14o#qh(xrr-|XM+wQh&H znHZK=^{_N-Jh$uCiannm_AmWg(sn&ITjW&R>eXMDUtRWl_pRrut>>=(n_s-^e$m@5 zC;KahJ=!PtE4Byzx|h9ft>66blXh?N(hX&5wW^=JeNOeqeS8&Hw^k?@`QOfFG+s0_ z?AyEa_}}X;T-bh8Y4+lR7sYWYY1Z4@-c?>-r;)-p(P?MRzSk-Cv4W3&71YgbHg&l5 zBDs3|qwIBGZyK^a{$aFhM#-am3IlWvvf4*_+(Xe?RRipX1*`QiED{t4H8s_bNrzI}D*>U^x9)krR)?|x|6s_3R zU-nb2)8hH6X}|9Fa>VUOjakIsd2YX8>b)OsGM^7!URTM*@WJ=*9Uq1di+2_Hinu(K o6=8VrUlSI-W?X4$t6$r<3N3J7*)qcenEDtzUHx3vIVCg!0HnJ;ZU6uP literal 0 HcmV?d00001 diff --git a/docs/d9/deb/_release_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html b/docs/d9/deb/_release_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html new file mode 100644 index 0000000..af4f8ae --- /dev/null +++ b/docs/d9/deb/_release_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net48/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
+
+
+
+
+ + + + diff --git a/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.dot b/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.dot new file mode 100644 index 0000000..c6b9002 --- /dev/null +++ b/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.HttpHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Client.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler for handling client http communication."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.md5 b/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.md5 new file mode 100644 index 0000000..4b0a77a --- /dev/null +++ b/docs/da/d05/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__coll__graph.md5 @@ -0,0 +1 @@ +181ca85706c5a2072fa3d5554f660f26 \ No newline at end of file diff --git a/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.dot b/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.dot new file mode 100644 index 0000000..fa5e4a9 --- /dev/null +++ b/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ClientModules.ChatModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Common.WebSockets.Client\lModules.ChatModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html",tooltip="Interface for websocket modules."]; +} diff --git a/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.md5 b/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.md5 new file mode 100644 index 0000000..d2c997e --- /dev/null +++ b/docs/da/d07/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module__coll__graph.md5 @@ -0,0 +1 @@ +5e4daa830a9af95dc47cccf678db95e3 \ No newline at end of file diff --git a/docs/da/d0a/_debug_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html b/docs/da/d0a/_debug_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html new file mode 100644 index 0000000..f73c118 --- /dev/null +++ b/docs/da/d0a/_debug_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/netcoreapp2.1/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
+
+
+
+
+ + + + diff --git a/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.dot b/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.dot new file mode 100644 index 0000000..4083d67 --- /dev/null +++ b/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.ExceptionThrower" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.Exception\lThrower",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Throws all handled exceptions."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IExceptionHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html",tooltip="Handler to be used for handling exception."]; +} diff --git a/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.md5 b/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.md5 new file mode 100644 index 0000000..2fba474 --- /dev/null +++ b/docs/da/d0f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__coll__graph.md5 @@ -0,0 +1 @@ +b6775b47ea985e4906e4eceb0790648e \ No newline at end of file diff --git a/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.dot b/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.dot new file mode 100644 index 0000000..52ca211 --- /dev/null +++ b/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ServerModules.BroadcastModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.WebSockets.Server\lModules.BroadcastModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html",tooltip=" "]; +} diff --git a/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.md5 b/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.md5 new file mode 100644 index 0000000..2edd2b0 --- /dev/null +++ b/docs/da/d15/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module__inherit__graph.md5 @@ -0,0 +1 @@ +117d717a035b590c8a31afd4ebdbf016 \ No newline at end of file diff --git a/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.dot b/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.dot new file mode 100644 index 0000000..5ef12f1 --- /dev/null +++ b/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.Http.ServerModules.HelloWorldModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.Http.ServerModules.\lHelloWorldModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.md5 b/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.md5 new file mode 100644 index 0000000..678cb67 --- /dev/null +++ b/docs/da/d1d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module__inherit__graph.md5 @@ -0,0 +1 @@ +46150365d56238e46493e0a6f6320a40 \ No newline at end of file diff --git a/docs/da/d3e/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module-members.html b/docs/da/d3e/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module-members.html new file mode 100644 index 0000000..0cff99f --- /dev/null +++ b/docs/da/d3e/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module-members.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.WebSockets.ServerModules.IWebsocketModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.WebSockets.ServerModules.IWebsocketModule, including all inherited members.

+ + + + +
ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client)MTSC.Common.WebSockets.ServerModules.IWebsocketModule
ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client)MTSC.Common.WebSockets.ServerModules.IWebsocketModule
HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)MTSC.Common.WebSockets.ServerModules.IWebsocketModule
+
+ + + + diff --git a/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html b/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html new file mode 100644 index 0000000..17e3674 --- /dev/null +++ b/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html @@ -0,0 +1,139 @@ + + + + + + + +MTSC: MTSC.Exceptions.NoDataException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.NoDataException Class Reference
+
+
+
+Inheritance diagram for MTSC.Exceptions.NoDataException:
+
+
+ +
+ + + + + + +

+Public Member Functions

NoDataException (string message)
 
NoDataException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

NoDataException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+
+

Definition at line 8 of file NoDataException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.js b/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.js new file mode 100644 index 0000000..5070f41 --- /dev/null +++ b/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_no_data_exception = +[ + [ "NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html#a72462aac7f56753c0aa6b7f41fdead2c", null ], + [ "NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html#a1b7a2ebd49478d496645bcc69cf66f49", null ], + [ "NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html#ac8a6e16c673f46f9ffa7929c46b27dcb", null ], + [ "NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html#aceae27481ae51c9ae9138b61bd23fdde", null ] +]; \ No newline at end of file diff --git a/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.png b/docs/da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..90f33cf156cc60fafc474dcb8cb2c750fca76a95 GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^SAjTygBeKfe0<;*kdg@S332`Z|38p<=F|;iL+1%V z78oBmaA1?$A`>8&qa?^Lm;tB=1g@S6F=Aj~Qu1_h45?szJNM$HRR%n4=H_+p{~vSD z)#Oe18eZsUHM3AxBx6@D$MzXBec9DKCr=EUB+|TP(h`Z9`>RA0J*!T9eYG>YvT3SH zucfW6-{xKB+kG{Ehe_?;_Vh>HwXdF+zFXw4_nI}ea{I9*|E>f1*DXHoU1fbSWbR|X zh)Mg7b-tgvS!>zHwbxe4=SBvsj?#^*Sf3OzHAni&f!p!%%*qj-mz3*7wb!b=G=2uO zHGTrj`k1w6&ZIFvaF1bFmh83qbgJ80&9&=-gtN|OPBj%!;L2nbXx_rq;TXkuL}4vM z(u6PuLl5l+i6x>AJeRl>*ifbI4xY)eGH5snQ!(qRQu*5zsZZ)IoLaJa1_S?2Th0O> z*^AR3-2KY$yf&=cL3-EUwdsd{zI)EPVJY{9dv|R&?PU5e!+pEW=392RPEUQi=5*Bd zoig{&@7ibfM`*+Tg}V1XZQ1?ldw?DD>#2Ia+ipGzef_Px*YW@Dua>LV-JG*qyPogs znN?Mlt5t7qKfQDA^^14z%4`q&XS;I!SLub@u0E>U + + + + + + +MTSC: MTSC.Server.Handlers.IHandler Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers.IHandler Interface Reference
+
+
+ +

Interface for communication handlers. + More...

+
+Inheritance diagram for MTSC.Server.Handlers.IHandler:
+
+
+ + +MTSC.Server.Handlers.BroadcastHandler +MTSC.Server.Handlers.EncryptionHandler +MTSC.Server.Handlers.HttpHandler +MTSC.Server.Handlers.WebsocketHandler + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool HandleClient (Server server, ClientData client)
 Handles a new client. More...
 
bool HandleSendMessage (Server server, ClientData client, ref Message message)
 Handles a message before sending. More...
 
bool PreHandleReceivedMessage (Server server, ClientData client, ref Message message)
 Called before the message handling. Perform here any processing of the message. More...
 
bool HandleReceivedMessage (Server server, ClientData client, Message message)
 Handles the received message. More...
 
void ClientRemoved (Server server, ClientData client)
 Handles the removal of a client from the server. More...
 
void Tick (Server server)
 Method performs regular operations onto the server. More...
 
+

Detailed Description

+

Interface for communication handlers.

+ +

Definition at line 11 of file IHandler.cs.

+

Member Function Documentation

+ +

◆ ClientRemoved()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Server.Handlers.IHandler.ClientRemoved (Server server,
ClientData client 
)
+
+ +

Handles the removal of a client from the server.

+
Parameters
+ + + +
clientClient about to be removed.
serverServer calling the handler.
+
+
+ +
+
+ +

◆ HandleClient()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MTSC.Server.Handlers.IHandler.HandleClient (Server server,
ClientData client 
)
+
+ +

Handles a new client.

+
Parameters
+ + + +
clientClient to be handled.
serverServer calling the handler.
+
+
+
Returns
True if the handler processed the client.
+ +
+
+ +

◆ HandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Server.Handlers.IHandler.HandleReceivedMessage (Server server,
ClientData client,
Message message 
)
+
+ +

Handles the received message.

+
Parameters
+ + + +
messageMessage to be handled.
serverServer calling the handler.
+
+
+
Returns
True if the message has been handled, false if the message has not been handled.
+ +
+
+ +

◆ HandleSendMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Server.Handlers.IHandler.HandleSendMessage (Server server,
ClientData client,
ref Message message 
)
+
+ +

Handles a message before sending.

+
Parameters
+ + + + +
clientClient object.
messageMessage to be processed.
serverServer calling the handler.
+
+
+
Returns
True if no other handler should handle this message.
+ +
+
+ +

◆ PreHandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Server.Handlers.IHandler.PreHandleReceivedMessage (Server server,
ClientData client,
ref Message message 
)
+
+ +

Called before the message handling. Perform here any processing of the message.

+
Parameters
+ + + + +
clientClient structure.
messageMessage to be preprocessed.
serverServer calling the handler.
+
+
+
Returns
True if the message has been preprocessed and no other handler should handle it anymore.
+ +
+
+ +

◆ Tick()

+ +
+
+ + + + + + + + +
void MTSC.Server.Handlers.IHandler.Tick (Server server)
+
+ +

Method performs regular operations onto the server.

+
Parameters
+ + +
serverServer calling the handler.
+
+
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.js b/docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.js new file mode 100644 index 0000000..e6ffa9c --- /dev/null +++ b/docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.js @@ -0,0 +1,9 @@ +var interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler = +[ + [ "ClientRemoved", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a1511874ea35c4431b9e07e7246661355", null ], + [ "HandleClient", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a6a993648d2c8d6406ffa674e3f5b7bd1", null ], + [ "HandleReceivedMessage", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ac96e4842233e811c6991fd1e46ca1314", null ], + [ "HandleSendMessage", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a00b700839ab2d25273e8b09990b3734c", null ], + [ "PreHandleReceivedMessage", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ad90301b90fdf8fdebcccec08a086358d", null ], + [ "Tick", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a24f493fa3d89d960a635f0dc36e64b3d", null ] +]; \ No newline at end of file diff --git a/docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.png b/docs/da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..fba34029c50c7107968a73d6837a192aae8ad72a GIT binary patch literal 1762 zcmb7Fdr(qo6vs!!nv`0;$V{=9l~$UimW#1uy7`*)Zaz{&R?UcfX1bZ+Mr4+crrk74 zDKo8`h!5;BWGI+cTB0Uuq>LuoYNSLeguq^Cn%Td0cJIu0&+p84&hPuq`Q0=3LZJVC zgaOh327@7dys-yiFnuJ11L1nmo18zM3K@$)-{5^}wHkt*F9)2r|5OMe?P_jruJ6>xhTM$)kH3&W&8G%$1_YO3CQ8IE(8UwABGI z#zXmqeI{X_B2`OuUN?)9A1_4Pc#?S`dJAFE2qT-D#Ja_BBby3WjpG?mt)r_Cx6cpJ z(}(jKs$9q2%!}G5?w@976}&3FwVZJ+8aH-2X(0OXDOZ!7IWC@L@&j=_b#T#DvZy|5 zN-;y#Bqm~19Aw)EQAbRfT)8Xsx%-=N?)$cW*?ZL)j>R@HI)q#1oxWdl5|dcu;%hqm zi1X1bB-~kcxBHH8*-8F3At{v=$!bHUZ8RA+A&_A@LUHSJl!|y6!apC?|g(XZN>iX`$TAzslQN z_(io$blmLO6O%Ohh$0VNUB_3169#f94_lEo zo}Pjq8>kHTg__pN6gGOk|5mK(gY|*Ves#?G)2FPXbW3XSmuIv+JSv!W{074R+1VAE zqA#UV1?8?MAA+w!@?& zM#-PQ4-U`l>Qc@wQ#ZQY_?ZfV=sFh(x}KU6FIC4N;@oGiRpanQ&(?0(8bOk}zu7$V zNJ3=wn)Nc`^~^em6p}?MOTZj-O`oU|p{m1_Wf<2_6V7m)seMM^yF1PJLWLBLP6y1?Tccs$;FR zVi*~=#G}MGp&Iuz)!@=uy6!3;C5kAZvC769U5>BIYM4m;TB;EHQfPnR1jw?;)eJh0 zv2slqx8Rtx2RVmUgJ9W;IP4Y4)=f7z=f_TTIYGp@sT!|#j<^zCBt5+dxj`_)ddRO8 zr;}WjZCME>BUqgqZ~|WPeyp#`dpdgk z3i?w4zxGh>a{5RWGxYO9P0N;6$wU;;moj?k!IFsnS5U_j}f20-8Y z3mKkz2v|K5WmyYPlJ-@P(0nO#dBMQ!d@C{<0rW9Lxa?whkbMOT@&GlW zj=B~DjW7V{{Z|ylPlTqCU9{e~rhjU7-UOOAwHzI#Ghq12+j|W9A;En1`D1G^M}Ges Dk}*K= literal 0 HcmV?d00001 diff --git a/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html b/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html new file mode 100644 index 0000000..e29f7b3 --- /dev/null +++ b/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html @@ -0,0 +1,126 @@ + + + + + + + +MTSC: MTSC.Client.Handlers Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers Namespace Reference
+
+
+ + + + + + + + + + + + + + + +

+Classes

class  BroadcastHandler
 
class  EncryptionHandler
 
class  HttpHandler
 Handler for handling client http communication. More...
 
interface  IHandler
 Handler interface for client communication. More...
 
class  WebsocketHandler
 Handler implementing websocket protocol. More...
 
+
+
+ + + + diff --git a/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.js b/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.js new file mode 100644 index 0000000..46fa42e --- /dev/null +++ b/docs/da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.js @@ -0,0 +1,8 @@ +var namespace_m_t_s_c_1_1_client_1_1_handlers = +[ + [ "BroadcastHandler", "dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html", "dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler" ], + [ "EncryptionHandler", "dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html", "dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler" ], + [ "HttpHandler", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler" ], + [ "IHandler", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler" ], + [ "WebsocketHandler", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler" ] +]; \ No newline at end of file diff --git a/docs/da/da6/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module-members.html b/docs/da/da6/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module-members.html new file mode 100644 index 0000000..84e9c9b --- /dev/null +++ b/docs/da/da6/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.ServerModules.FileServerModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.ServerModules.FileServerModule, including all inherited members.

+ + +
FileServerModule(string rootFolder="src") (defined in MTSC.Common.Http.ServerModules.FileServerModule)MTSC.Common.Http.ServerModules.FileServerModule
+
+ + + + diff --git a/docs/da/dae/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler-members.html b/docs/da/dae/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler-members.html new file mode 100644 index 0000000..7550631 --- /dev/null +++ b/docs/da/dae/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Handlers.EncryptionHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Handlers.EncryptionHandler, including all inherited members.

+ + +
EncryptionHandler()MTSC.Client.Handlers.EncryptionHandler
+
+ + + + diff --git a/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html b/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html new file mode 100644 index 0000000..42bbec9 --- /dev/null +++ b/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html @@ -0,0 +1,115 @@ + + + + + + + +MTSC: MTSC.Common.Http.ClientModules Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ClientModules Namespace Reference
+
+
+ + + + +

+Classes

interface  IHttpModule
 
+
+
+ + + + diff --git a/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.js b/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.js new file mode 100644 index 0000000..411dc33 --- /dev/null +++ b/docs/da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.js @@ -0,0 +1,4 @@ +var namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules = +[ + [ "IHttpModule", "d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html", "d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module" ] +]; \ No newline at end of file diff --git a/docs/da/dc2/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler-members.html b/docs/da/dc2/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler-members.html new file mode 100644 index 0000000..50e1795 --- /dev/null +++ b/docs/da/dc2/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler-members.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Client.Handlers.HttpHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Client.Handlers.HttpHandler, including all inherited members.

+ + + + +
AddModule(IHttpModule httpModule)MTSC.Client.Handlers.HttpHandler
HttpHandler() (defined in MTSC.Client.Handlers.HttpHandler)MTSC.Client.Handlers.HttpHandler
SendRequest(Client client, HttpMessage request)MTSC.Client.Handlers.HttpHandler
+
+ + + + diff --git a/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html b/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html new file mode 100644 index 0000000..f783653 --- /dev/null +++ b/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html @@ -0,0 +1,293 @@ + + + + + + + +MTSC: MTSC.Server.Handlers.WebsocketHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers.WebsocketHandler Class Reference
+
+
+
+Inheritance diagram for MTSC.Server.Handlers.WebsocketHandler:
+
+
+ + +MTSC.Server.Handlers.IHandler + +
+ + + + +

+Public Types

enum  SocketState { Initial, +Handshaking, +Established, +Closed + }
 
+ + + + + + + + + + + + + +

+Public Member Functions

WebsocketHandler AddWebsocketHandler (IWebsocketModule module)
 Add a webSocket module onto the server. More...
 
void QueueMessage (ClientData client, byte[] message)
 Send a message to the client. More...
 
void QueueMessage (ClientData client, WebsocketMessage message)
 Send a message to the client. More...
 
void CloseConnection (ClientData client)
 Signals that the connetion is closing. More...
 
+ + + +

+Public Attributes

+ConcurrentDictionary< ClientData, SocketState > webSockets = new ConcurrentDictionary<ClientData, SocketState>()
 
+

Detailed Description

+
+

Definition at line 12 of file WebsocketHandler.cs.

+

Member Function Documentation

+ +

◆ AddWebsocketHandler()

+ +
+
+ + + + + + + + +
WebsocketHandler MTSC.Server.Handlers.WebsocketHandler.AddWebsocketHandler (IWebsocketModule module)
+
+ +

Add a webSocket module onto the server.

+
Parameters
+ + +
moduleModule to be added.
+
+
+
Returns
This handler object.
+ +

Definition at line 39 of file WebsocketHandler.cs.

+ +
+
+ +

◆ CloseConnection()

+ +
+
+ + + + + + + + +
void MTSC.Server.Handlers.WebsocketHandler.CloseConnection (ClientData client)
+
+ +

Signals that the connetion is closing.

+
Parameters
+ + +
clientClient to be disconnected.
+
+
+ +

Definition at line 70 of file WebsocketHandler.cs.

+ +
+
+ +

◆ QueueMessage() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Server.Handlers.WebsocketHandler.QueueMessage (ClientData client,
byte [] message 
)
+
+ +

Send a message to the client.

+
Parameters
+ + +
messageMessage to be sent to client.
+
+
+ +

Definition at line 48 of file WebsocketHandler.cs.

+ +
+
+ +

◆ QueueMessage() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Server.Handlers.WebsocketHandler.QueueMessage (ClientData client,
WebsocketMessage message 
)
+
+ +

Send a message to the client.

+
Parameters
+ + + +
clientClient object.
messageMessage packet.
+
+
+ +

Definition at line 62 of file WebsocketHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.js b/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.js new file mode 100644 index 0000000..2700dd2 --- /dev/null +++ b/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.js @@ -0,0 +1,14 @@ +var class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler = +[ + [ "SocketState", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#ababae69bddf7e9a6e70289aa1c670f58", [ + [ "Initial", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#ababae69bddf7e9a6e70289aa1c670f58a4f2a91e15af2631ff9424564b8a45fb2", null ], + [ "Handshaking", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#ababae69bddf7e9a6e70289aa1c670f58aec0ff85930d38e14796947a771455d7b", null ], + [ "Established", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#ababae69bddf7e9a6e70289aa1c670f58a072f9734fceb02f516b50d4174ac0f18", null ], + [ "Closed", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#ababae69bddf7e9a6e70289aa1c670f58a03f4a47830f97377a35321051685071e", null ] + ] ], + [ "AddWebsocketHandler", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a9052e4deaf71384b7c3906cdc04e5eea", null ], + [ "CloseConnection", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4613259948548fae6fc518c7eb0b7ef6", null ], + [ "QueueMessage", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4ba115e772f3c30814b21c508ef2cf61", null ], + [ "QueueMessage", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a14849ffda41c01d12dd7ef87bd77f539", null ], + [ "webSockets", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a452923577e6561b8ce6dfd396528e85b", null ] +]; \ No newline at end of file diff --git a/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.png b/docs/da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..a501de32b89a1a28a26cbcdfdd9ea851333f4916 GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0vp^|A9DwgBeIZoD+N)NJ#|vgt-3y4-!9f>V~nQ^8_FZ zj1L?*u*q$a36RTC666=m08|75S5Ji)F)%P)@pN$vsbG9N_jcYJ1s>P%vL*litIt2j zDK0HB>81D5TT{zUIrK!PB*$5v|IDM~=gGDDiGQ7E*QzJ=hw8WdKmPUm-9P_pzFs|c zVcL@KS{o;syfWRXvi8a`yS^z)TID{4UzxVc_Lu(sX-j(lvHah`_qsW0`Zo7vr$5It z>!(i@X+6Yd5^niVed44omxKRL_ep!X`h9}c`qnMm-WL5S{gbt8+T6wMwIZ6H(SK*` zKV$zaV{Y@C^HG{n8)t0Gy5wj7bbbHNKePQ#+uv1rZ#VyES8`_T@BeB+lkUC#`S*GE-);Y@*>{D%|9L$4 z&9;)$`#YvASzCAN{`z0HUi6uW-q>p&y(BEV+Se!aPMnRrJJ7uIKU81lYyF%YKWPz+ zJpb8-nfrnHS5|?DgFpB0OUidB_?Q3Zg0#R~``7iKn2&^#fUmCqEPuR^MU34cLKUdj zCG?Z{zg@idWtSTK%ip4XC{COK7|slf<0dn&`69LAlQ*-(leSxHCg28rz2HeBfEJs)@}L|yns{7`S0Gknf7O2{*Aw9?j8Sj z*~>l4vU6`g{qg$8)e>Fn_L~gWFPM&}q<#MTy?)Z?zWsYlcP%UBlj^coa6qKkZs zBD3b*$lX)CcIKzabCUmN%Y97Gw=*>jwAVZunYVwA`1I_;;xCi0{)}C4yW;%)d%ty_ z&)aYJ?DPAxS+N$^d#@_ZiLA}64KEI#+&eS;-~N*?-`mfxi2lE~|IX^~e;!B5e7pH{ zkM)1;J?)nHKYoYCOWzG&*0<|>diRxC+3P!3ik%nlpIaFJzkBuVBl1tS{9$06`sXCS oKFVdQ&MBb@0L<;Q9RL6T literal 0 HcmV?d00001 diff --git a/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html b/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html new file mode 100644 index 0000000..ef2bf7c --- /dev/null +++ b/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html @@ -0,0 +1,198 @@ + + + + + + + +MTSC: MTSC.Logging.DebugConsoleLogger Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Logging.DebugConsoleLogger Class Reference
+
+
+
+Inheritance diagram for MTSC.Logging.DebugConsoleLogger:
+
+
+ + +MTSC.Logging.ILogger + +
+ + + + + + + + +

+Public Member Functions

bool Log (string message)
 Ignores simple logging messages. More...
 
bool LogDebug (string message)
 Outputs the debug message to console. More...
 
+

Detailed Description

+
+

Definition at line 7 of file DebugConsoleLogger.cs.

+

Member Function Documentation

+ +

◆ Log()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.DebugConsoleLogger.Log (string message)
+
+ +

Ignores simple logging messages.

+
Parameters
+ + +
message
+
+
+
Returns
False
+ +

Implements MTSC.Logging.ILogger.

+ +

Definition at line 14 of file DebugConsoleLogger.cs.

+ +
+
+ +

◆ LogDebug()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.DebugConsoleLogger.LogDebug (string message)
+
+ +

Outputs the debug message to console.

+
Parameters
+ + +
messageMessage to be output.
+
+
+
Returns
False
+ +

Implements MTSC.Logging.ILogger.

+ +

Definition at line 23 of file DebugConsoleLogger.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.js b/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.js new file mode 100644 index 0000000..c336e75 --- /dev/null +++ b/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.js @@ -0,0 +1,5 @@ +var class_m_t_s_c_1_1_logging_1_1_debug_console_logger = +[ + [ "Log", "da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#ac99a610520e156791de0b74368af616d", null ], + [ "LogDebug", "da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#a6863b58170d01b798634ee9fee83e917", null ] +]; \ No newline at end of file diff --git a/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.png b/docs/da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.png new file mode 100644 index 0000000000000000000000000000000000000000..8897dc94868d07afa69399a93d23b776e180f79e GIT binary patch literal 790 zcmeAS@N?(olHy`uVBq!ia0vp^_klQogBeJ!I~X7gq$C1-LR|m<{|{uIId#L>(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ0mU_B4hEy=Vo%?pu8U-HK*~wS;{8zp& z`7}D=O6gwiqt|2#lRGjwAL^gpq{H0pI;rjIlgUf!On<7ZjGz0=xX$GE{oiGK>vGZ?R4-oi_i>HoB=e}_--~`H{#E@pWxdI9Y5%%b?yoy_ zLtCCr;I1i)yso6jTUT@>eD>oE)t4LIJ=mO|`+2Ez){2j!Hs`N>nELNgmrh;uzS_L! zoAaXSb;)Z^;elO-v zDv4SCQ|0BPEcRsW$E(|4UatB5cA8kT%F|V6CoXwhmGQUcWa`RyJnYXrE+yKA&!6;V zkJ@~dud7e0d;WcOcDv4Lqje1Pu5c$L@Sgi#)yr#PabG$=k5btZ( z01OC*UssTu?Qi*i?kJz|qR6KVJH;KA-G6xcaOL9CJJ0eD|MGrQcj(!c zS{-YP#dBvK={@AK?Z>)l&E~(vf7|3d&{#Pk`doVaX0gJ|50jba&wgZki6JwF`D1?h z^-~8g);--Em%A^E&2-?Q>w*fBbd*SNa{X z$DFO#BrMy)pWNMg#a`O7<=@PYj4?rP6KrI@FXuGje?I@?+wIX&JPf|FWh@%2rybUP zJw4>=J-!Rq65Sg%Wm(<{na@xU56!QZdA){d5r3H#?evQ-f9($iCSnFpS3j3^P6 + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ServerModules/IHttpModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IHttpModule.cs
+
+
+
1 using MTSC.Common;
2 using MTSC.Server;
3 using MTSC.Server.Handlers;
4 using System;
5 using System.Collections.Generic;
6 using System.Text;
7 
9 {
13  public interface IHttpModule
14  {
22  bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response);
27  void Tick(Server.Server server, HttpHandler handler);
28  }
29 }
void Tick(Server.Server server, HttpHandler handler)
Perform periodic operations.
+
Structure containing client information.
Definition: Server.cs:402
+ +
Handler for handling server http requests.
Definition: HttpHandler.cs:15
+ +
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
Handle the received request.
+ + +
Definition: Client.cs:14
+
Interface for Http modules used by the server http handler.
Definition: IHttpModule.cs:13
+
+
+ + + + diff --git a/docs/db/d0f/_message_8cs_source.html b/docs/db/d0f/_message_8cs_source.html new file mode 100644 index 0000000..1e8d150 --- /dev/null +++ b/docs/db/d0f/_message_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Message.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Message.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC
6 {
7  public struct Message
8  {
9  private uint messageLength;
10  private byte[] messageBytes;
11  public uint MessageLength { get => messageLength; }
12  public byte[] MessageBytes { get => messageBytes; }
13  public Message(uint messageLength, byte[] messageBytes)
14  {
15  this.messageLength = messageLength;
16  this.messageBytes = messageBytes;
17  }
18  }
19 }
+
Definition: Client.cs:14
+
+
+ + + + diff --git a/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.dot b/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.dot new file mode 100644 index 0000000..5b83c61 --- /dev/null +++ b/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.HttpHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Client.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler for handling client http communication."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.md5 b/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.md5 new file mode 100644 index 0000000..8090ecd --- /dev/null +++ b/docs/db/d1e/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler__inherit__graph.md5 @@ -0,0 +1 @@ +c710b36fd7de7797d14ac3c4a717c5c0 \ No newline at end of file diff --git a/docs/db/d27/_exception_console_logger_8cs_source.html b/docs/db/d27/_exception_console_logger_8cs_source.html new file mode 100644 index 0000000..52f956b --- /dev/null +++ b/docs/db/d27/_exception_console_logger_8cs_source.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/ExceptionConsoleLogger.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ExceptionConsoleLogger.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Exceptions
6 {
11  {
12  public bool HandleException(Exception e)
13  {
14  Console.WriteLine(e.Message + "\nStackTrace:\n" + e.StackTrace);
15  return false;
16  }
17  }
18 }
bool HandleException(Exception e)
Handles exceptions.
+ +
Logs the received exceptions to the console.
+
Handler to be used for handling exception.
+
+
+ + + + diff --git a/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.dot b/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.dot new file mode 100644 index 0000000..5fa299a --- /dev/null +++ b/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Server.Handlers.WebsocketHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Server.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; +} diff --git a/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.md5 b/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.md5 new file mode 100644 index 0000000..f88e19d --- /dev/null +++ b/docs/db/d40/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler__coll__graph.md5 @@ -0,0 +1 @@ +c5ae49e3d0fc1245054e42b7cacd5f3d \ No newline at end of file diff --git a/docs/db/d43/_client_8cs_source.html b/docs/db/d43/_client_8cs_source.html new file mode 100644 index 0000000..2afb545 --- /dev/null +++ b/docs/db/d43/_client_8cs_source.html @@ -0,0 +1,137 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Client.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Client.cs
+
+
+
1 using MTSC.Client.Handlers;
2 using MTSC.Exceptions;
3 using MTSC.Logging;
4 using System;
5 using System.Collections;
6 using System.Collections.Generic;
7 using System.Net.Security;
8 using System.Net.Sockets;
9 using System.Security.Cryptography.X509Certificates;
10 using System.Text;
11 using System.Threading;
12 using System.Threading.Tasks;
13 
14 namespace MTSC.Client
15 {
19  public class Client
20  {
21  #region Fields
22  string address;
23  int port;
24  TcpClient tcpClient;
25  CancellationTokenSource cancelMonitorToken;
26  List<IHandler> handlers = new List<IHandler>();
27  List<ILogger> loggers = new List<ILogger>();
28  List<IExceptionHandler> exceptionHandlers = new List<IExceptionHandler>();
29  Queue<byte[]> messageQueue = new Queue<byte[]>();
30  SslStream sslStream = null;
31  static Hashtable certificateErrors = new Hashtable();
32  bool useSsl = false;
33  #endregion
34  #region Properties
35  public bool Connected
36  {
37  get
38  {
39  if (tcpClient != null)
40  return tcpClient.Connected;
41  else
42  return false;
43  }
44  }
45  public string Address { get => address; }
46  public int Port { get => port; }
47  #endregion
48  #region Constructors
49  public Client(bool useSsl = false)
50  {
51  this.useSsl = useSsl;
52  }
53  #endregion
54  #region Public Methods
55  public void QueueMessage(byte[] message)
60  {
61  messageQueue.Enqueue(message);
62  }
67  public void Log(string log)
68  {
69  foreach (ILogger logger in loggers)
70  {
71  logger.Log(log);
72  }
73  }
78  public void LogDebug(string debugMessage)
79  {
80  foreach (ILogger logger in loggers)
81  {
82  logger.LogDebug(debugMessage);
83  }
84  }
90  public Client SetServerAddress(string address)
91  {
92  this.address = address;
93  return this;
94  }
100  public Client SetPort(int port)
101  {
102  this.port = port;
103  return this;
104  }
110  public Client AddHandler(IHandler handler)
111  {
112  handlers.Add(handler);
113  return this;
114  }
121  {
122  exceptionHandlers.Add(handler);
123  return this;
124  }
130  public Client AddLogger(ILogger logger)
131  {
132  loggers.Add(logger);
133  return this;
134  }
138  public RemoteCertificateValidationCallback CertificateValidationCallback { get; set; }
143  public bool Connect()
144  {
145  try
146  {
147  if (tcpClient != null)
148  {
149  cancelMonitorToken?.Cancel();
150  tcpClient.Dispose();
151  }
152  tcpClient = new TcpClient();
153  tcpClient.Connect(address, port);
154  if (useSsl)
155  {
156  if(this.CertificateValidationCallback == null)
157  {
158  this.CertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
159  }
160  sslStream = new SslStream(tcpClient.GetStream(), true, this.CertificateValidationCallback, null);
161  sslStream.AuthenticateAsClient(address);
162  }
163  foreach(ILogger logger in loggers)
164  {
165  logger.Log("Connected to: " + tcpClient.Client.RemoteEndPoint.ToString());
166  }
167  foreach (IHandler handler in handlers)
168  {
169  if (!handler.InitializeConnection(this))
170  {
171  return false;
172  }
173  }
174  cancelMonitorToken = new CancellationTokenSource();
175  Task.Run(new Action(MonitorConnection), cancelMonitorToken.Token);
176  return true;
177  }
178  catch(Exception e)
179  {
180  LogDebug("Exception: " + e.Message);
181  LogDebug("Stacktrace: " + e.StackTrace);
182  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
183  {
184  exceptionHandler.HandleException(e);
185  }
186  return false;
187  }
188  }
193  public Task<bool> ConnectAsync()
194  {
195  return new Task<bool>(Connect);
196  }
200  public void Disconnect()
201  {
202  cancelMonitorToken?.Cancel();
203  tcpClient.Dispose();
204  }
205  #endregion
206  #region Private Methods
207  private static bool ValidateServerCertificate( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
216  {
217  if (sslPolicyErrors == SslPolicyErrors.None)
218  return true;
219 
220  // Do not allow this client to communicate with unauthenticated servers.
221  return true;
222  }
223 
224  private void MonitorConnection()
225  {
226  while (true)
227  {
228  try
229  {
230  if(messageQueue.Count > 0)
231  {
232  byte[] messagebytes = messageQueue.Dequeue();
233  Message sendMessage = CommunicationPrimitives.BuildMessage(messagebytes);
234  for(int i = handlers.Count - 1; i >= 0; i--)
235  {
236  IHandler handler = handlers[i];
237  handler.HandleSendMessage(this, ref sendMessage);
238  }
239  CommunicationPrimitives.SendMessage(tcpClient, sendMessage, sslStream);
240  }
241  if (tcpClient.Available > 0)
242  {
243  /*
244  * When a message has been received, process it.
245  */
246  Message message = CommunicationPrimitives.GetMessage(tcpClient, sslStream);
247  LogDebug("Received a message of size: " + message.MessageLength);
248  /*
249  * Preprocess message.
250  */
251  foreach (IHandler handler in handlers)
252  {
253  if (handler.PreHandleReceivedMessage(this, ref message))
254  {
255  break;
256  }
257  }
258  /*
259  * Process the final message structure.
260  */
261  foreach (IHandler handler in handlers)
262  {
263  if (handler.HandleReceivedMessage(this, message))
264  {
265  break;
266  }
267  }
268  }
269  foreach (IHandler handler in handlers)
270  {
271  handler.Tick(this);
272  }
273  }
274  catch(Exception e)
275  {
276  LogDebug("Exception: " + e.Message);
277  LogDebug("Stacktrace: " + e.StackTrace);
278  foreach (IExceptionHandler exceptionHandler in exceptionHandlers)
279  {
280  exceptionHandler.HandleException(e);
281  }
282  }
283  Thread.Sleep(33);
284  }
285  }
286  #endregion
287  }
288 }
void Log(string log)
Logs the message onto the associated loggers.
Definition: Client.cs:67
+
Task< bool > ConnectAsync()
Attempts to connect to the specified server.
Definition: Client.cs:193
+
Client AddExceptionHandler(IExceptionHandler handler)
Adds an exception handler to the client.
Definition: Client.cs:120
+
bool Log(string message)
Logs the received message.
+
Client SetServerAddress(string address)
Sets the server address.
Definition: Client.cs:90
+
Client AddHandler(IHandler handler)
Adds a handler onto the client.
Definition: Client.cs:110
+
bool HandleException(Exception e)
Handles exceptions.
+ + + +
Client SetPort(int port)
Sets the server port.
Definition: Client.cs:100
+
bool HandleSendMessage(Client client, ref Message message)
Called when a message is being sent to the server.
+
bool PreHandleReceivedMessage(Client client, ref Message message)
Called before the message is handled. Use this method to modify the message if necesarry.
+
RemoteCertificateValidationCallback CertificateValidationCallback
Callback function used to determine if the remote certificate is valid.
Definition: Client.cs:138
+
bool Connect()
Attemps to connect to the specified server.
Definition: Client.cs:143
+
bool HandleReceivedMessage(Client client, Message message)
Called when a message has been received.
+
Interface for loggers.
Definition: ILogger.cs:10
+
void Tick(Client client)
Called every cycle. This method should perform regular actions on the connection.
+
bool InitializeConnection(Client client)
Called when the connection is being initialized.
+
void Disconnect()
Disconnects from the server.
Definition: Client.cs:200
+
Client AddLogger(ILogger logger)
Adds a logger onto the client.
Definition: Client.cs:130
+
void QueueMessage(byte[] message)
Add a message to the message queue.
Definition: Client.cs:59
+ +
Handler interface for client communication.
Definition: IHandler.cs:11
+
Definition: Client.cs:14
+
void LogDebug(string debugMessage)
Logs the debug message onto the associated loggers.
Definition: Client.cs:78
+
bool LogDebug(string message)
Logs the received debug message.
+
Base class for TCP Client.
Definition: Client.cs:19
+ +
Handler to be used for handling exception.
+
+
+ + + + diff --git a/docs/db/d68/_broadcast_module_8cs_source.html b/docs/db/d68/_broadcast_module_8cs_source.html new file mode 100644 index 0000000..2d14cd9 --- /dev/null +++ b/docs/db/d68/_broadcast_module_8cs_source.html @@ -0,0 +1,123 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ServerModules/BroadcastModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BroadcastModule.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using MTSC.Server;
5 using MTSC.Server.Handlers;
6 
8 {
10  {
12  {
13 
14  }
15 
17  {
18 
19  }
20 
22  {
23  receivedMessage.Masked = false;
24  //receivedMessage.Opcode = WebsocketMessage.Opcodes.Text;
25  foreach(ClientData otherClient in handler.webSockets.Keys)
26  {
27  handler.QueueMessage(otherClient, receivedMessage);
28  }
29  return false;
30  }
31  }
32 }
+ +
bool HandleReceivedMessage(Server.Server server, WebsocketHandler handler, ClientData client, WebsocketMessage receivedMessage)
Handle a received message.
+
void ConnectionClosed(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been closed.
+
Structure containing client information.
Definition: Server.cs:402
+
Class containing the bytes of a websocket received message.
+
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ + +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+ +
Definition: Client.cs:14
+
void QueueMessage(ClientData client, byte[] message)
Send a message to the client.
+ +
void ConnectionInitialized(Server.Server server, WebsocketHandler handler, ClientData client)
Called when a connection has been initialized.
+ +
+
+ + + + diff --git a/docs/db/d91/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message-members.html b/docs/db/d91/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message-members.html new file mode 100644 index 0000000..7ce87ce --- /dev/null +++ b/docs/db/d91/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message-members.html @@ -0,0 +1,139 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.Http.HttpMessage Member List
+
+
+ +

This is the complete list of members for MTSC.Common.Http.HttpMessage, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddEntityHeaders(EntityHeadersEnum entityHeader, string value)MTSC.Common.Http.HttpMessage
AddGeneralHeader(GeneralHeadersEnum header, string value)MTSC.Common.Http.HttpMessage
AddRequestHeader(RequestHeadersEnum requestHeader, string value)MTSC.Common.Http.HttpMessage
AddResponseHeader(ResponseHeadersEnum responseHeader, string value)MTSC.Common.Http.HttpMessage
Body (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
ContainsHeader(ResponseHeadersEnum header)MTSC.Common.Http.HttpMessage
ContainsHeader(RequestHeadersEnum header)MTSC.Common.Http.HttpMessage
ContainsHeader(GeneralHeadersEnum header)MTSC.Common.Http.HttpMessage
ContainsHeader(string header)MTSC.Common.Http.HttpMessage
EntityHeadersEnum enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
GeneralHeadersEnum enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
GetPostForm()MTSC.Common.Http.HttpMessage
GetRequest()MTSC.Common.Http.HttpMessage
GetResponse(bool includeContentLengthHeader)MTSC.Common.Http.HttpMessage
HttpMessage() (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
Method (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
MethodEnum enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
ParseRequest(byte[] requestBytes)MTSC.Common.Http.HttpMessage
ParseResponse(byte[] responseBytes)MTSC.Common.Http.HttpMessage
RequestHeadersEnum enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
RequestQuery (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
RequestURI (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
ResponseHeadersEnum enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
StatusCode (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
StatusCodes enum name (defined in MTSC.Common.Http.HttpMessage)MTSC.Common.Http.HttpMessage
this[EntityHeadersEnum headerKey]MTSC.Common.Http.HttpMessage
this[GeneralHeadersEnum headerKey]MTSC.Common.Http.HttpMessage
this[RequestHeadersEnum headerKey]MTSC.Common.Http.HttpMessage
this[ResponseHeadersEnum headerKey]MTSC.Common.Http.HttpMessage
this[string headerKey]MTSC.Common.Http.HttpMessage
+
+ + + + diff --git a/docs/db/d9a/_server_2_handlers_2_broadcast_handler_8cs_source.html b/docs/db/d9a/_server_2_handlers_2_broadcast_handler_8cs_source.html new file mode 100644 index 0000000..980c4ac --- /dev/null +++ b/docs/db/d9a/_server_2_handlers_2_broadcast_handler_8cs_source.html @@ -0,0 +1,122 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers/BroadcastHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BroadcastHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
6 {
10  public class BroadcastHandler : IHandler
11  {
12  public BroadcastHandler()
13  {
14 
15  }
16 
17  void IHandler.ClientRemoved(Server server, ClientData client)
18  {
19 
20  }
21 
22  bool IHandler.HandleClient(Server server, ClientData client)
23  {
24  return false;
25  }
26 
27  bool IHandler.HandleReceivedMessage(Server server, ClientData client, Message message)
28  {
29  server.LogDebug("Broadcast: " + UnicodeEncoding.Unicode.GetString(message.MessageBytes));
30  server.LogDebug("From: " + client.TcpClient.Client.RemoteEndPoint.ToString());
31  foreach(ClientData clientStruct in server.Clients)
32  {
33  server.QueueMessage(clientStruct, message.MessageBytes);
34  }
35  return false;
36  }
37 
38  bool IHandler.HandleSendMessage(Server server, ClientData client, ref Message message)
39  {
40  return false;
41  }
42 
43  bool IHandler.PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
44  {
45  return false;
46  }
47 
48  void IHandler.Tick(Server server)
49  {
50 
51  }
52  }
53 }
Interface for communication handlers.
Definition: IHandler.cs:11
+
bool PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
Called before the message handling. Perform here any processing of the message.
+ +
Structure containing client information.
Definition: Server.cs:402
+ +
void QueueMessage(ClientData target, byte[] message)
Queues a message to be sent.
Definition: Server.cs:137
+
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+
void Tick(Server server)
Method performs regular operations onto the server.
+ +
bool HandleReceivedMessage(Server server, ClientData client, Message message)
Handles the received message.
+
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
List< ClientData > Clients
List of clients currently connected to the server.
Definition: Server.cs:47
+
bool HandleClient(Server server, ClientData client)
Handles a new client.
+
void LogDebug(string debugMessage)
Adds a debug message to be logged by the associated loggers.
Definition: Server.cs:156
+
bool HandleSendMessage(Server server, ClientData client, ref Message message)
Handles a message before sending.
+
+
+ + + + diff --git a/docs/db/db3/_release_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html b/docs/db/db3/_release_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html new file mode 100644 index 0000000..64740f7 --- /dev/null +++ b/docs/db/db3/_release_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net48/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
+
+
+
+
+ + + + diff --git a/docs/db/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception-members.html b/docs/db/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception-members.html new file mode 100644 index 0000000..112b85d --- /dev/null +++ b/docs/db/db8/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidStatusCodeException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidStatusCodeException, including all inherited members.

+ + + + + +
InvalidStatusCodeException() (defined in MTSC.Exceptions.InvalidStatusCodeException)MTSC.Exceptions.InvalidStatusCodeException
InvalidStatusCodeException(string message) (defined in MTSC.Exceptions.InvalidStatusCodeException)MTSC.Exceptions.InvalidStatusCodeException
InvalidStatusCodeException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidStatusCodeException)MTSC.Exceptions.InvalidStatusCodeException
InvalidStatusCodeException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidStatusCodeException)MTSC.Exceptions.InvalidStatusCodeExceptionprotected
+
+ + + + diff --git a/docs/db/dbd/_chat_module_8cs_source.html b/docs/db/dbd/_chat_module_8cs_source.html new file mode 100644 index 0000000..aa14d7c --- /dev/null +++ b/docs/db/dbd/_chat_module_8cs_source.html @@ -0,0 +1,125 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ClientModules/ChatModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ChatModule.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Security.Cryptography;
4 using System.Text;
5 using MTSC.Client;
6 using MTSC.Client.Handlers;
7 
9 {
11  {
12  static RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
13  #region Public Methods
14  public void SendMessage(WebsocketHandler websocketHandler, string message)
15  {
16  WebsocketMessage websocketMessage = new WebsocketMessage();
17  websocketMessage.Data = Encoding.UTF8.GetBytes(message);
18  websocketMessage.Opcode = WebsocketMessage.Opcodes.Text;
19  websocketMessage.FIN = true;
20  websocketMessage.Masked = true;
21  rng.GetBytes(websocketMessage.Mask);
22  websocketHandler.QueueMessage(websocketMessage);
23  }
24  #endregion
25  #region Interface Implementation
26  bool IWebsocketModule.HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage receivedMessage)
27  {
28  string messageString = Encoding.UTF8.GetString(receivedMessage.Data);
29  client.Log(">" + messageString);
30  return false;
31  }
32  void IWebsocketModule.ConnectionClosed(Client.Client client, WebsocketHandler handler)
33  {
34 
35  }
36 
38  {
39 
40  }
41  #endregion
42  }
43 }
bool HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)
Handle received message.
+
void QueueMessage(WebsocketMessage message)
Add a message to the queue to be sent.
+ +
void ConnectionClosed(Client.Client client, WebsocketHandler handler)
Called when an existing websocket connection is being closed.
+ +
void ConnectionInitialized(Client.Client client, WebsocketHandler handler)
Called when a new websocket connection has been initialized.
+ + + + + +
Class containing the bytes of a websocket received message.
+ + +
Handler implementing websocket protocol.
+
Definition: Client.cs:14
+
Base class for TCP Client.
Definition: Client.cs:19
+ +
+
+ + + + diff --git a/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.dot b/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.dot new file mode 100644 index 0000000..4c18564 --- /dev/null +++ b/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Client.Handlers.BroadcastHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Client.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 b/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 new file mode 100644 index 0000000..8bcc844 --- /dev/null +++ b/docs/db/dbe/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler__coll__graph.md5 @@ -0,0 +1 @@ +560a853b616b637a393ef14954f6e13e \ No newline at end of file diff --git a/docs/db/dbe/namespace_m_t_s_c_1_1_logging.html b/docs/db/dbe/namespace_m_t_s_c_1_1_logging.html new file mode 100644 index 0000000..8d8e6d4 --- /dev/null +++ b/docs/db/dbe/namespace_m_t_s_c_1_1_logging.html @@ -0,0 +1,121 @@ + + + + + + + +MTSC: MTSC.Logging Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Logging Namespace Reference
+
+
+ + + + + + + + + + +

+Classes

class  ConsoleLogger
 Basic logger that outputs the log messages to the console. More...
 
class  DebugConsoleLogger
 
interface  ILogger
 Interface for loggers. More...
 
+
+
+ + + + diff --git a/docs/db/dbe/namespace_m_t_s_c_1_1_logging.js b/docs/db/dbe/namespace_m_t_s_c_1_1_logging.js new file mode 100644 index 0000000..b3980da --- /dev/null +++ b/docs/db/dbe/namespace_m_t_s_c_1_1_logging.js @@ -0,0 +1,6 @@ +var namespace_m_t_s_c_1_1_logging = +[ + [ "ConsoleLogger", "de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html", "de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger" ], + [ "DebugConsoleLogger", "da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html", "da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger" ], + [ "ILogger", "d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html", "d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger" ] +]; \ No newline at end of file diff --git a/docs/db/dca/namespace_m_t_s_c_1_1_common.html b/docs/db/dca/namespace_m_t_s_c_1_1_common.html new file mode 100644 index 0000000..ccfb54c --- /dev/null +++ b/docs/db/dca/namespace_m_t_s_c_1_1_common.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: MTSC.Common Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common Namespace Reference
+
+
+
+
+ + + + diff --git a/docs/db/dca/namespace_m_t_s_c_1_1_common.js b/docs/db/dca/namespace_m_t_s_c_1_1_common.js new file mode 100644 index 0000000..bd1c792 --- /dev/null +++ b/docs/db/dca/namespace_m_t_s_c_1_1_common.js @@ -0,0 +1,5 @@ +var namespace_m_t_s_c_1_1_common = +[ + [ "Http", "d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html", "d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http" ], + [ "WebSockets", "de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html", "de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets" ] +]; \ No newline at end of file diff --git a/docs/db/dd9/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception-members.html b/docs/db/dd9/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception-members.html new file mode 100644 index 0000000..f73fd05 --- /dev/null +++ b/docs/db/dd9/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidHeaderException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidHeaderException, including all inherited members.

+ + + + + +
InvalidHeaderException() (defined in MTSC.Exceptions.InvalidHeaderException)MTSC.Exceptions.InvalidHeaderException
InvalidHeaderException(string message) (defined in MTSC.Exceptions.InvalidHeaderException)MTSC.Exceptions.InvalidHeaderException
InvalidHeaderException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidHeaderException)MTSC.Exceptions.InvalidHeaderException
InvalidHeaderException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidHeaderException)MTSC.Exceptions.InvalidHeaderExceptionprotected
+
+ + + + diff --git a/docs/db/ddd/struct_m_t_s_c_1_1_message-members.html b/docs/db/ddd/struct_m_t_s_c_1_1_message-members.html new file mode 100644 index 0000000..e230a1e --- /dev/null +++ b/docs/db/ddd/struct_m_t_s_c_1_1_message-members.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Message Member List
+
+
+ +

This is the complete list of members for MTSC.Message, including all inherited members.

+ + + + +
Message(uint messageLength, byte[] messageBytes) (defined in MTSC.Message)MTSC.Message
MessageBytes (defined in MTSC.Message)MTSC.Message
MessageLength (defined in MTSC.Message)MTSC.Message
+
+ + + + diff --git a/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.dot b/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.dot new file mode 100644 index 0000000..f27d57d --- /dev/null +++ b/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.NoDataException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.NoDataException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.md5 b/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.md5 new file mode 100644 index 0000000..84ad4c8 --- /dev/null +++ b/docs/db/df2/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception__inherit__graph.md5 @@ -0,0 +1 @@ +9eab2cf599725705ed93eb8543451dcf \ No newline at end of file diff --git a/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.dot b/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.dot new file mode 100644 index 0000000..bce061c --- /dev/null +++ b/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.ExceptionConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.Exception\lConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Logs the received exceptions to the console."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IExceptionHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html",tooltip="Handler to be used for handling exception."]; +} diff --git a/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.md5 b/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.md5 new file mode 100644 index 0000000..a23b17a --- /dev/null +++ b/docs/db/df5/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__inherit__graph.md5 @@ -0,0 +1 @@ +b9527438348b3e0866fe56c39ebb5257 \ No newline at end of file diff --git a/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html b/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html new file mode 100644 index 0000000..a2d04ff --- /dev/null +++ b/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html @@ -0,0 +1,132 @@ + + + + + + + +MTSC: MTSC.Server.Handlers.BroadcastHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Server.Handlers.BroadcastHandler Class Reference
+
+
+ +

Broadcast handler. + More...

+
+Inheritance diagram for MTSC.Server.Handlers.BroadcastHandler:
+
+
+ + +MTSC.Server.Handlers.IHandler + +
+ + +

+Additional Inherited Members

+

Detailed Description

+

Broadcast handler.

+ +

Definition at line 10 of file BroadcastHandler.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.js b/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.js new file mode 100644 index 0000000..4d7c2cc --- /dev/null +++ b/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler = +[ + [ "BroadcastHandler", "dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html#ad4c3cc235d32102c5d74807e5328e7f8", null ] +]; \ No newline at end of file diff --git a/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.png b/docs/dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..71dd50157458d41fdfd4b00445ee97ca76fb0dc0 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^zkxV_gBeJ^DF3_@NJ#|vgt-3y{~yRabLxh%q4NYF z3ycpOIIziWkqMB?Q4-`A%m7pb0#{Fk7%?y~-Sl*E45?szJNI_q69pa@f32YZ|JC!q zvvi!*^|XJJalI!*a@LU<%&nEF_rKe&xS^`KL~OUp(aTBGmsIRJyl?9N+aJH@{j;&J z-5I!5HFJ%Kw&zy6X73>Xr*|KFcxIJ!+a^!j^0e^Zr(DljFXpGOf1dE&{^pW3{VzYg zIo{pBIH=1dfw^n8%H&pJr5Q$etYlN>~qONOLKS2RM*v;#GdXeY_si}vZQlg zihuI;$J5VweM?`*v(&=GJA`$PXVAi(vYMX4ch{624ZP~3a#GX(y^ZY2_Pn)oig&Z* z^-O%OuMBk6`x~DZ+rD3Rd6T*Mv5ebi-d#=I^8RNx(8`zZWS@8c+H$V?`cD7#H(v+8 zo>qM7UMI-1zkKF-R6E)xJ0G5v^{pxKX=_S&#vW1^*ldr z0S3vurp@nv?>jDX;QdQhfsn?V@#}YdXuNsQe73PUqJJ{%!HB>~s zVE}4ke3ZG7`N-uY_KxL8`2_sY6zpG=dwbi0Bxa74FiEcJxTbP#6`%lF6r+v3S{`{+9?7Y7f z9}7dgCO%7IJ{31x)qYR<=A|j6&;36~+P(idX}!%#*<_p3=IQ7AzwNpG=bG`?Uc*}q=|TD5?5cmC z&wY5{v-rJC_si$|oGrP({o0AISL4`y?`{?E zv3|d8iM&AQ-1Fux!Oz!!iY#kLKn~O3f^WdUoAHY|;FZbKizQV>z=Y4>>FVdQ&MBb@ E0EN4(YybcN literal 0 HcmV?d00001 diff --git a/docs/dc/d46/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module-members.html b/docs/dc/d46/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module-members.html new file mode 100644 index 0000000..f19f06d --- /dev/null +++ b/docs/dc/d46/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module-members.html @@ -0,0 +1,108 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.WebSockets.ServerModules.BroadcastModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.WebSockets.ServerModules.BroadcastModule, including all inherited members.

+
+
+ + + + diff --git a/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html b/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html new file mode 100644 index 0000000..d389635 --- /dev/null +++ b/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html @@ -0,0 +1,197 @@ + + + + + + + +MTSC: MTSC.Client.Handlers.BroadcastHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers.BroadcastHandler Class Reference
+
+
+
+Inheritance diagram for MTSC.Client.Handlers.BroadcastHandler:
+
+
+ + +MTSC.Client.Handlers.IHandler + +
+ + + + + + + + +

+Public Member Functions

 BroadcastHandler ()
 Creates a new instance of BroadcastHandler. More...
 
void Broadcast (Client client, string message)
 Broadcast a message to all other clients connected to the server. More...
 
+

Detailed Description

+
+

Definition at line 8 of file BroadcastHandler.cs.

+

Constructor & Destructor Documentation

+ +

◆ BroadcastHandler()

+ +
+
+ + + + + + + +
MTSC.Client.Handlers.BroadcastHandler.BroadcastHandler ()
+
+ +

Creates a new instance of BroadcastHandler.

+ +

Definition at line 14 of file BroadcastHandler.cs.

+ +
+
+

Member Function Documentation

+ +

◆ Broadcast()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Client.Handlers.BroadcastHandler.Broadcast (Client client,
string message 
)
+
+ +

Broadcast a message to all other clients connected to the server.

+
Parameters
+ + + +
messageMessage to be broadcasted.
clientClient object containing the communication channel.
+
+
+ +

Definition at line 24 of file BroadcastHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.js b/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.js new file mode 100644 index 0000000..de9b3bc --- /dev/null +++ b/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.js @@ -0,0 +1,5 @@ +var class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler = +[ + [ "BroadcastHandler", "dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a3bb5d75cc804dbf9b42ec893967b365a", null ], + [ "Broadcast", "dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a74fb30591fe06d29601c645937e3b4da", null ] +]; \ No newline at end of file diff --git a/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.png b/docs/dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..18d9abfb90b7f157cb522a28395a4da5ce963cbe GIT binary patch literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^Uw}A(gBeIl)~qlAQW60^A+G=b{|7S9oVsCb=sW?) z0^*Vq#I~roUTB)Ogkx6Yy*KZ_{rtYC=KsET zPrI`|%$k1XkH2})1eLF!7PalXJ#msr2A9?6$jINCi?bfAeX!o)d-ev$D3^QRu1Lz3 z*#16u*JZETngVuPVNK8Dv$EfZEREXs`H}UDJ1EvDB`e_xH?oFRKsbtOj1+k}# z%69Gfv-sP$Z`lTR+xO}#slN2s>>ieVb^5#78~2XieYx#B&laG~>c9A^Y?cRGUwdBi za@)Q0pK{E&uQ$K`{HSb+iflGp)TDn?;2w^;FiFHQaN+mb`^}sWrhj4RSk`f&-`(L= z#|8gq6;~7&POoM@a-oT>V*x9#fFrk*LX((@1B-4(14q;a2Ei>07?m;{nO)En95|nO zdzvJncj8?fQB0ap99s)y|9yDehtTVKrk@kNGRn7iZEr z-z@K0)foQRexd(`ImNMz7ndRK+ix{1o+K*WEv{#>QW6@4h$3aDQcHarL%)mRqtT&-qPP zmD{@g`!n{(#S8!Xy~?_?_PSi;+R*r2-)}DBTebVGEo<%b*>>zSrIUp1iZO{M+Ayd)L3ZdVwJjCBRl(xV + + + + + + +MTSC: MTSC.Client.Client Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Client Class Reference
+
+
+ +

Base class for TCP Client. + More...

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

+Public Member Functions

Client (bool useSsl=false)
 
void QueueMessage (byte[] message)
 Add a message to the message queue. More...
 
void Log (string log)
 Logs the message onto the associated loggers. More...
 
void LogDebug (string debugMessage)
 Logs the debug message onto the associated loggers. More...
 
Client SetServerAddress (string address)
 Sets the server address. More...
 
Client SetPort (int port)
 Sets the server port. More...
 
Client AddHandler (IHandler handler)
 Adds a handler onto the client. More...
 
Client AddExceptionHandler (IExceptionHandler handler)
 Adds an exception handler to the client. More...
 
Client AddLogger (ILogger logger)
 Adds a logger onto the client. More...
 
bool Connect ()
 Attemps to connect to the specified server. More...
 
Task< bool > ConnectAsync ()
 Attempts to connect to the specified server. More...
 
void Disconnect ()
 Disconnects from the server. More...
 
+ + + + + + + + + + +

+Properties

+bool Connected [get]
 
+string Address [get]
 
+int Port [get]
 
RemoteCertificateValidationCallback CertificateValidationCallback [get, set]
 Callback function used to determine if the remote certificate is valid. More...
 
+

Detailed Description

+

Base class for TCP Client.

+ +

Definition at line 19 of file Client.cs.

+

Member Function Documentation

+ +

◆ AddExceptionHandler()

+ +
+
+ + + + + + + + +
Client MTSC.Client.Client.AddExceptionHandler (IExceptionHandler handler)
+
+ +

Adds an exception handler to the client.

+
Parameters
+ + +
handlerException handler to be added.
+
+
+
Returns
This client object.
+ +

Definition at line 120 of file Client.cs.

+ +
+
+ +

◆ AddHandler()

+ +
+
+ + + + + + + + +
Client MTSC.Client.Client.AddHandler (IHandler handler)
+
+ +

Adds a handler onto the client.

+
Parameters
+ + +
handlerConnection handler object.
+
+
+
Returns
This client object.
+ +

Definition at line 110 of file Client.cs.

+ +
+
+ +

◆ AddLogger()

+ +
+
+ + + + + + + + +
Client MTSC.Client.Client.AddLogger (ILogger logger)
+
+ +

Adds a logger onto the client.

+
Parameters
+ + +
loggerLogger to be added.
+
+
+
Returns
This client object.
+ +

Definition at line 130 of file Client.cs.

+ +
+
+ +

◆ Connect()

+ +
+
+ + + + + + + +
bool MTSC.Client.Client.Connect ()
+
+ +

Attemps to connect to the specified server.

+
Returns
True if connection was successful.
+ +

Definition at line 143 of file Client.cs.

+ +
+
+ +

◆ ConnectAsync()

+ +
+
+ + + + + + + +
Task<bool> MTSC.Client.Client.ConnectAsync ()
+
+ +

Attempts to connect to the specified server.

+
Returns
True if the connection was successful.
+ +

Definition at line 193 of file Client.cs.

+ +
+
+ +

◆ Disconnect()

+ +
+
+ + + + + + + +
void MTSC.Client.Client.Disconnect ()
+
+ +

Disconnects from the server.

+ +

Definition at line 200 of file Client.cs.

+ +
+
+ +

◆ Log()

+ +
+
+ + + + + + + + +
void MTSC.Client.Client.Log (string log)
+
+ +

Logs the message onto the associated loggers.

+
Parameters
+ + +
logMessage to be logged.
+
+
+ +

Definition at line 67 of file Client.cs.

+ +
+
+ +

◆ LogDebug()

+ +
+
+ + + + + + + + +
void MTSC.Client.Client.LogDebug (string debugMessage)
+
+ +

Logs the debug message onto the associated loggers.

+
Parameters
+ + +
debugMessage
+
+
+ +

Definition at line 78 of file Client.cs.

+ +
+
+ +

◆ QueueMessage()

+ +
+
+ + + + + + + + +
void MTSC.Client.Client.QueueMessage (byte [] message)
+
+ +

Add a message to the message queue.

+
Parameters
+ + +
messageMessage to be sent.
+
+
+ +

Definition at line 59 of file Client.cs.

+ +
+
+ +

◆ SetPort()

+ +
+
+ + + + + + + + +
Client MTSC.Client.Client.SetPort (int port)
+
+ +

Sets the server port.

+
Parameters
+ + +
portPort of the server.
+
+
+
Returns
This client object.
+ +

Definition at line 100 of file Client.cs.

+ +
+
+ +

◆ SetServerAddress()

+ +
+
+ + + + + + + + +
Client MTSC.Client.Client.SetServerAddress (string address)
+
+ +

Sets the server address.

+
Parameters
+ + +
addressAddress of the server.
+
+
+
Returns
This client object.
+ +

Definition at line 90 of file Client.cs.

+ +
+
+

Property Documentation

+ +

◆ CertificateValidationCallback

+ +
+
+ + + + + +
+ + + + +
RemoteCertificateValidationCallback MTSC.Client.Client.CertificateValidationCallback
+
+getset
+
+ +

Callback function used to determine if the remote certificate is valid.

+ +

Definition at line 138 of file Client.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dc/d7c/class_m_t_s_c_1_1_client_1_1_client.js b/docs/dc/d7c/class_m_t_s_c_1_1_client_1_1_client.js new file mode 100644 index 0000000..ec575c2 --- /dev/null +++ b/docs/dc/d7c/class_m_t_s_c_1_1_client_1_1_client.js @@ -0,0 +1,19 @@ +var class_m_t_s_c_1_1_client_1_1_client = +[ + [ "Client", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a67664f53d83d5759015067ed8348725b", null ], + [ "AddExceptionHandler", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4a466715c54b39553de4e06a051d20ef", null ], + [ "AddHandler", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4e50b197b82fb2d921939fc7af8b1e20", null ], + [ "AddLogger", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a0b628912644ae436441aa9407b4c1b3e", null ], + [ "Connect", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a568cfb39545571778388106fc3dfe536", null ], + [ "ConnectAsync", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a3c3183ea32b519482cec9a41d436fa11", null ], + [ "Disconnect", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aae7c24c33b16d9023fe0f07aacb3adfa", null ], + [ "Log", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a180b7a8c584e5c073c2ecbd8fde44e8b", null ], + [ "LogDebug", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ac4b8e6be3de6ad2e646815c577f5a7e3", null ], + [ "QueueMessage", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ab4ebbd8217aea0c1d57ede542c404183", null ], + [ "SetPort", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#afe946bd8ea5c8d02db19175e5fbe95e0", null ], + [ "SetServerAddress", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ae4eab6784f731a25a4ed47fa2dc5c217", null ], + [ "Address", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a2214d7f50bda67f457229e69b155b9de", null ], + [ "CertificateValidationCallback", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aedd2779b640467b253fa48152c0ec22b", null ], + [ "Connected", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ab3f95d97639b277d2fabd5ae386081b3", null ], + [ "Port", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ae7bb734f78cc4a805d9cb4693afa0575", null ] +]; \ No newline at end of file diff --git a/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html b/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html new file mode 100644 index 0000000..c700de8 --- /dev/null +++ b/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html @@ -0,0 +1,168 @@ + + + + + + + +MTSC: MTSC.Exceptions.ExceptionThrower Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.ExceptionThrower Class Reference
+
+
+ +

Throws all handled exceptions. + More...

+
+Inheritance diagram for MTSC.Exceptions.ExceptionThrower:
+
+
+ + +MTSC.Exceptions.IExceptionHandler + +
+ + + + + +

+Public Member Functions

bool HandleException (Exception e)
 Handles exceptions. More...
 
+

Detailed Description

+

Throws all handled exceptions.

+ +

Definition at line 10 of file ExceptionThrower.cs.

+

Member Function Documentation

+ +

◆ HandleException()

+ +
+
+ + + + + + + + +
bool MTSC.Exceptions.ExceptionThrower.HandleException (Exception e)
+
+ +

Handles exceptions.

+
Parameters
+ + +
eException to be handled.
+
+
+
Returns
True if it handled the exception. Otherwise returns false.
+ +

Implements MTSC.Exceptions.IExceptionHandler.

+ +

Definition at line 12 of file ExceptionThrower.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.js b/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.js new file mode 100644 index 0000000..22cd983 --- /dev/null +++ b/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_exceptions_1_1_exception_thrower = +[ + [ "HandleException", "dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html#a1597553012627d61aa7813a6c98db46e", null ] +]; \ No newline at end of file diff --git a/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.png b/docs/dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.png new file mode 100644 index 0000000000000000000000000000000000000000..b8270b311df1df8ad9500f890d19e35b69116fcc GIT binary patch literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^w}Ci-gBeIJ*ZPnNq$C1-LR|m<{|{uIId#L>(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ0ws^WYhEy=VoqN0QwSoXk_qHkj|38_0 zq@lh0qpnqyz|Ae<9e3w3rB$RxPD>5g=y7Sntei<#=Bv$C`MUhXvp)@!qwU{6`~FLk zyLYRk^`wwjpO>gyeOjAe@gqV-GyLyV>F5I;Y#%p$ofWv;&?Cq<_tUiF=WiC7ckj?^ zjQ8FDB>VSm9g8Rw*uPXeX zDIEQ|?Wxz|V?TF^9)B~>r26?T_bBzpORl_1Ii}{xU;60Iq$SJh9tO_IpY$bQvhSpC zU&C*zywuO!i_R!C?=Z0$Uj6|d(V zTzhEyM%Eq6Wq7+=7=yHw@NzwSLe~LEp<_UC#`>*f4;}{_iwg`odO9J zW~2*v&utIF}uip7T>InV;v7>K}pp8#j_pFS)Kad%tcf_sgXEQ%Y-G z|6Wn>7Tg_mllk`U9NkE9tJqaG>$kJ#X6*ZB;&l4^lhkJ6oWx6h8;(xNcz^QNn{cPw z_b03Ke!F>X|0X+?bcdIl!_|E+$u03_e%y7?PMVKPcH`9N(Gfp%wY5{<6>m&E_wFP+ zo9gW_@zZsu*ggdG&#eiL}szu0$Q)IC$-zx@O-O*449 L`njxgN@xNA!)1$5 literal 0 HcmV?d00001 diff --git a/docs/dc/da0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module-members.html b/docs/dc/da0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module-members.html new file mode 100644 index 0000000..9b35579 --- /dev/null +++ b/docs/dc/da0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module-members.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.WebSockets.ClientModules.IWebsocketModule Member List
+
+
+ +

This is the complete list of members for MTSC.Common.WebSockets.ClientModules.IWebsocketModule, including all inherited members.

+ + + + +
ConnectionClosed(Client.Client client, WebsocketHandler handler)MTSC.Common.WebSockets.ClientModules.IWebsocketModule
ConnectionInitialized(Client.Client client, WebsocketHandler handler)MTSC.Common.WebSockets.ClientModules.IWebsocketModule
HandleReceivedMessage(Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)MTSC.Common.WebSockets.ClientModules.IWebsocketModule
+
+ + + + diff --git a/docs/dc/da7/_server_2_handlers_2_i_handler_8cs_source.html b/docs/dc/da7/_server_2_handlers_2_i_handler_8cs_source.html new file mode 100644 index 0000000..b3b0800 --- /dev/null +++ b/docs/dc/da7/_server_2_handlers_2_i_handler_8cs_source.html @@ -0,0 +1,118 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers/IHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IHandler.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Net.Sockets;
4 using System.Text;
5 
6 namespace MTSC.Server.Handlers
7 {
11  public interface IHandler
12  {
19  bool HandleClient(Server server, ClientData client);
27  bool HandleSendMessage(Server server, ClientData client, ref Message message);
36  bool PreHandleReceivedMessage(Server server, ClientData client, ref Message message);
43  bool HandleReceivedMessage(Server server, ClientData client, Message message);
49  void ClientRemoved(Server server, ClientData client);
54  void Tick(Server server);
55  }
56 }
Interface for communication handlers.
Definition: IHandler.cs:11
+
bool PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
Called before the message handling. Perform here any processing of the message.
+
Structure containing client information.
Definition: Server.cs:402
+ +
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+
void Tick(Server server)
Method performs regular operations onto the server.
+ +
bool HandleReceivedMessage(Server server, ClientData client, Message message)
Handles the received message.
+
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleClient(Server server, ClientData client)
Handles a new client.
+
bool HandleSendMessage(Server server, ClientData client, ref Message message)
Handles a message before sending.
+
+
+ + + + diff --git a/docs/dc/da8/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler-members.html b/docs/dc/da8/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler-members.html new file mode 100644 index 0000000..92b69ab --- /dev/null +++ b/docs/dc/da8/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler-members.html @@ -0,0 +1,112 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Handlers.HttpHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Server.Handlers.HttpHandler, including all inherited members.

+ + + + +
AddHttpModule(IHttpModule module)MTSC.Server.Handlers.HttpHandler
HttpHandler() (defined in MTSC.Server.Handlers.HttpHandler)MTSC.Server.Handlers.HttpHandler
QueueResponse(ClientData client, HttpMessage response)MTSC.Server.Handlers.HttpHandler
+
+ + + + diff --git a/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.dot b/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.dot new file mode 100644 index 0000000..6d85a83 --- /dev/null +++ b/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Logging.DebugConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Logging.DebugConsole\lLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="ILogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html",tooltip="Interface for loggers."]; +} diff --git a/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.md5 b/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.md5 new file mode 100644 index 0000000..b1f9917 --- /dev/null +++ b/docs/dc/dbb/class_m_t_s_c_1_1_logging_1_1_debug_console_logger__inherit__graph.md5 @@ -0,0 +1 @@ +44a37c32f189ef83aa454031a40cb050 \ No newline at end of file diff --git a/docs/dc/dbf/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module-members.html b/docs/dc/dbf/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module-members.html new file mode 100644 index 0000000..a8bbfbd --- /dev/null +++ b/docs/dc/dbf/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Common.WebSockets.ClientModules.ChatModule Member List
+
+ +
+ + + + diff --git a/docs/dc/dc2/_invalid_status_code_exception_8cs_source.html b/docs/dc/dc2/_invalid_status_code_exception_8cs_source.html new file mode 100644 index 0000000..19c9a16 --- /dev/null +++ b/docs/dc/dc2/_invalid_status_code_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidStatusCodeException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidStatusCodeException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidStatusCodeException : Exception
12  {
14  {
15  }
16 
17  public InvalidStatusCodeException(string message) : base(message)
18  {
19  }
20 
21  public InvalidStatusCodeException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidStatusCodeException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+
Exception for invalid response status code.
+
+
+ + + + diff --git a/docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html b/docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html new file mode 100644 index 0000000..0c94594 --- /dev/null +++ b/docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html @@ -0,0 +1,132 @@ + + + + + + + +MTSC: MTSC.Common.Http.ServerModules.Http404Module Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ServerModules.Http404Module Class Reference
+
+
+ +

Simple module that returns status code 404. + More...

+
+Inheritance diagram for MTSC.Common.Http.ServerModules.Http404Module:
+
+
+ + +MTSC.Common.Http.ServerModules.IHttpModule + +
+ + +

+Additional Inherited Members

+

Detailed Description

+

Simple module that returns status code 404.

+ +

Definition at line 12 of file Http404Module.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.png b/docs/dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ee01e12ee54d0c71aae647e41eed0603484e27 GIT binary patch literal 1076 zcmeAS@N?(olHy`uVBq!ia0y~yU^E1>12~w0q+7}+K_Dd&;1lBd|Nnm=^USFm#)i%l zfGjXRaNxiuw?!sEE=Ng_UoZnu5eQs86=KA|z@9Nx+jbvJh(Gwyx!$txv4-sN!kjMWNnVq-ELBqTloU1eJhh_3Gsw-= zXOht_q3p-?zrTKuw5_k-_Vv_L$4Pl#4PG8C&7FC6Gp z^B*;<+cJmjrzuz+6XX*P(>ZY3UwtG2D zyRY|twaPp6=3Pi%Wq(BSM6n~g{#){eOUnLzy5ZWg<83cCZ)BGDO)Ok<_KtI&dF=Na zkDF_aJvZkFzUKZoX~q>jRhPNqkCSYaT_)7W_wciVKb$!Wfg#l^e4{9E-@SDl=C^P#@@WZ7l2%{L#( znLODy-|Xg%n9Q3;cW`dLenjPE^_E+oCw;kErJpA_c}Y*#43*R`=AE9G{x8P};9n|b zGRFh0`X1j9K48C+zd`80vMvb+Cwci+o`iT;9)*Se2|!jfkhS~~>x4i-<`XMA7*j%y zFc@hiF#zMLp$Dkk4Jf@>iH$<(i~GITY`x~ScI!4xDF@C3Z!|+qI!X)X^Y%|E2y?S4 z-6@(7&p$aXX%Sn+TFY&ruaAByz3@4)bA_L=SR%W-nns4rEJ!j z$hljm{FUAKqw#k3-|Fz0viBC`-^)H9^Lg{;^CwJZZv2`id}D8&@Rc9um)BO;Yb|%> zH@}wYxMufU=fbHMAM*c+$h(~E{AJ_q#J*)4EUu;HDQ{mmk0n;<_O|`XY1=*&Ctc7} zJtiTZ{HAmHkryYA)V%MSu~TuqyIINCv@hOy^R-!BnFP~-tJ=Kr51-wH|~7@=kmV2%3?x~U&s7p+gNb3MOlJr zJ^$-1GuiWB%S9i(wSB*0*}BHnUqW64De;D%H&c>}pMGAT zH=kMe)z-bLY#(fYeQT&U%Yeq<7x50pKgZGI&_8MI*08L#TW$X`tUhDkHaY1M3owf_ Nc)I$ztaD0e0sy;j^rHX( literal 0 HcmV?d00001 diff --git a/docs/dc/dd4/struct_m_t_s_c_1_1_message.html b/docs/dc/dd4/struct_m_t_s_c_1_1_message.html new file mode 100644 index 0000000..0747a21 --- /dev/null +++ b/docs/dc/dd4/struct_m_t_s_c_1_1_message.html @@ -0,0 +1,133 @@ + + + + + + + +MTSC: MTSC.Message Struct Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Message Struct Reference
+
+
+ + + + +

+Public Member Functions

Message (uint messageLength, byte[] messageBytes)
 
+ + + + + +

+Properties

+uint MessageLength [get]
 
+byte [] MessageBytes [get]
 
+

Detailed Description

+
+

Definition at line 7 of file Message.cs.

+

The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/docs/dc/dd4/struct_m_t_s_c_1_1_message.js b/docs/dc/dd4/struct_m_t_s_c_1_1_message.js new file mode 100644 index 0000000..c803c72 --- /dev/null +++ b/docs/dc/dd4/struct_m_t_s_c_1_1_message.js @@ -0,0 +1,6 @@ +var struct_m_t_s_c_1_1_message = +[ + [ "Message", "dc/dd4/struct_m_t_s_c_1_1_message.html#a93398c196abaf56b807f993ea1545b8f", null ], + [ "MessageBytes", "dc/dd4/struct_m_t_s_c_1_1_message.html#a6e433b006003c3de59119d53f1789dcd", null ], + [ "MessageLength", "dc/dd4/struct_m_t_s_c_1_1_message.html#ae82b503dac3835f9b5fbbe5e7a641d12", null ] +]; \ No newline at end of file diff --git a/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html b/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html new file mode 100644 index 0000000..38948cd --- /dev/null +++ b/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html @@ -0,0 +1,262 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ClientModules.IWebsocketModule Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ClientModules.IWebsocketModule Interface Reference
+
+
+ +

Interface for websocket modules. + More...

+
+Inheritance diagram for MTSC.Common.WebSockets.ClientModules.IWebsocketModule:
+
+
+ + +MTSC.Common.WebSockets.ClientModules.ChatModule + +
+ + + + + + + + + + + +

+Public Member Functions

void ConnectionInitialized (Client.Client client, WebsocketHandler handler)
 Called when a new websocket connection has been initialized. More...
 
bool HandleReceivedMessage (Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)
 Handle received message. More...
 
void ConnectionClosed (Client.Client client, WebsocketHandler handler)
 Called when an existing websocket connection is being closed. More...
 
+

Detailed Description

+

Interface for websocket modules.

+ +

Definition at line 11 of file IWebsocketModule.cs.

+

Member Function Documentation

+ +

◆ ConnectionClosed()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionClosed (Client.Client client,
WebsocketHandler handler 
)
+
+ +

Called when an existing websocket connection is being closed.

+
Parameters
+ + + +
clientClient object.
handlerHandler that closes the connection.
+
+
+ +
+
+ +

◆ ConnectionInitialized()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionInitialized (Client.Client client,
WebsocketHandler handler 
)
+
+ +

Called when a new websocket connection has been initialized.

+
Parameters
+ + + +
clientClient object.
handlerHandler that performed the initialization.
+
+
+ +
+
+ +

◆ HandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MTSC.Common.WebSockets.ClientModules.IWebsocketModule.HandleReceivedMessage (Client.Client client,
WebsocketHandler handler,
WebsocketMessage messageBytes 
)
+
+ +

Handle received message.

+
Parameters
+ + + + +
clientClient object.
handlerHandler currently processing the message.
messageBytesArray containing the message.
+
+
+
Returns
True if no other module should handle this message.
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.js b/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.js new file mode 100644 index 0000000..3a68b8b --- /dev/null +++ b/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.js @@ -0,0 +1,6 @@ +var interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module = +[ + [ "ConnectionClosed", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a01f67a29451915afa859be4680d1a056", null ], + [ "ConnectionInitialized", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#accef43d19c0b3d3de384c5b6c18cde4c", null ], + [ "HandleReceivedMessage", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a5ed526a19ac6cb5eda22740fdbf166ea", null ] +]; \ No newline at end of file diff --git a/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.png b/docs/dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.png new file mode 100644 index 0000000000000000000000000000000000000000..0f90ad7bf249c21e3dd6adec0729056d8f4c9eba GIT binary patch literal 1213 zcmeAS@N?(olHy`uVBq!ia0y~yV9W!u12~w0Bwuy@6(A)M;1lBd|Nnm=^USFm#)i%l zfGjXRaNxiuw?!sEE=Ng_UoZnu5eQs86=KA|z~bZS;uuoF_;&8=yf->LuHx1~_y14a zKQmK-%}4KVl}_lVz%qW$2dAYr{15WdTp8rmDZr}0`r-Z59gK&jAmJ+o;jh;7SM&en z*|-1d!7oe&E5CnQb#P|->fc5_@1^e@WW1Za?`!eq==9n0@&^_e?n<}gzcV!_`tm=S z{Kwn}woZHbW1C;Wbzbc}vv!R;{WWn9!Mom>b7ME14S#?5R?JcJypM}_zy8cs{`ah3q4Ugn2ag|rC9&+U=kKDLm<@fW zrM_3bGJbOMnby9S20Jd^{c5?*E0}*z+6V0&-_`D1*D_b!TomY2m8|xA^Ofw)Z?*3# z?faUT@mlVO&GEP2mdZbzC$;Wu!m+#Z?Hjj#TVCDwMCohl?y^U_h3_iQmwk6|wRA`G ziUS|!Jbst;*vMgh*=^qR?blW>KKAqu|Fw^IJKrrk&wXdU_XXZtwo=li@@;#YoUMYN zf3N;u$NGJ@we@$KTJx-6_HVpfwMwe_W{ZD}b^Cr``BB~pOh2Z3-C;5QHPOjb}vN!#u%|4)D4fBnPf?|;|wEfe?Lb)~xU>Vq?zuhvQ~ z`_B9Rfl6ur&uiz;=BdtnzTv0zwRex!rOaOX?RkZCyvoZc?>qa}3g0Phe*VAME=S9p z@uyjR*4z3=poDcqE>l_tEnyvkC#-&kvvSv$aXwmT>N%@4&PQsCl=Ii;kJj1QCzdup z&Y3Z#kJCES=7z}|uj)^1clH`?-t2s-=Br)W?9WZRuc@58=zQnvblao4Q(sCdS4PV! z-kQHf|M+p%*E`k}&S##bsGmD){)368o<$`WwR~+qL>*iI;NI+l_|-9Y(w;7w@#PrL zVq=G`hE-@}1zrTWiwq9CnnB-&0f|KjHSey!)~b>E_GExIQlS z@tJb=NuXih`oHHMUpjxz*8hI*t!piNjozm1vfX!f+k$O>f&R$6CYk5y<#}nnW}$b` s4595RtvDEQJGSTE4!XT9m+=?>RX!hS`-j570*Zmb)78&qol`;+0Ha@AhX4Qo literal 0 HcmV?d00001 diff --git a/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.dot b/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.dot new file mode 100644 index 0000000..782a092 --- /dev/null +++ b/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.Http.ServerModules.Http404Module" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.Http.ServerModules.\lHttp404Module",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Simple module that returns status code 404."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.md5 b/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.md5 new file mode 100644 index 0000000..3aeed6d --- /dev/null +++ b/docs/dc/deb/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__inherit__graph.md5 @@ -0,0 +1 @@ +58d297a546e097c84823117fc7ae556d \ No newline at end of file diff --git a/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.dot b/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.dot new file mode 100644 index 0000000..60a1606 --- /dev/null +++ b/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidHeaderException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidHeader\lException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception for invalid headers."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.md5 b/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.md5 new file mode 100644 index 0000000..46b2396 --- /dev/null +++ b/docs/dc/dfc/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception__inherit__graph.md5 @@ -0,0 +1 @@ +40bf2be2d2aa0e73a9d0a048779e51fc \ No newline at end of file diff --git a/docs/dd/d2f/_communication_primitives_8cs_source.html b/docs/dd/d2f/_communication_primitives_8cs_source.html new file mode 100644 index 0000000..4e177da --- /dev/null +++ b/docs/dd/d2f/_communication_primitives_8cs_source.html @@ -0,0 +1,108 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/CommunicationPrimitives.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
CommunicationPrimitives.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Net.Security;
5 using System.Net.Sockets;
6 using System.Text;
7 
8 namespace MTSC
9 {
10  static class CommunicationPrimitives
11  {
12  public static string RequestPublicKey = "REQPBKEY";
13  public static string SendPublicKey = "PUBKEY";
14  public static string SendEncryptionKey = "SYMKEY";
15  public static string AcceptEncryptionKey = "SYMKEYOK";
16 
17  public static Message GetMessage(TcpClient client, SslStream sslStream = null)
18  {
19  Stream stream;
20  if (sslStream != null)
21  {
22  stream = sslStream;
23  }
24  else
25  {
26  stream = client.GetStream();
27  }
28  uint messageLength = (uint)client.Available;
29  byte[] messageBuffer = new byte[messageLength];
30  if (messageLength > 0)
31  {
32  stream.Read(messageBuffer, 0, (int)messageLength);
33  }
34  Message message = new Message(messageLength, messageBuffer);
35  return message;
36  }
37 
38  public static void SendMessage(TcpClient client, Message message, SslStream sslStream = null)
39  {
40  Stream stream;
41  if (sslStream != null)
42  {
43  stream = sslStream;
44  }
45  else
46  {
47  stream = client.GetStream();
48  }
49  stream.Write(message.MessageBytes, 0, (int)message.MessageLength);
50  stream.Flush();
51  }
52 
53  public static Message BuildMessage(byte[] msgData)
54  {
55  Message message = new Message((ushort)msgData.Length, msgData);
56  return message;
57  }
58  }
59 }
Definition: Client.cs:14
+
+
+ + + + diff --git a/docs/dd/d31/_release_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html b/docs/dd/d31/_release_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html new file mode 100644 index 0000000..1212938 --- /dev/null +++ b/docs/dd/d31/_release_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/netcoreapp2.1/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
+
+
+
+
+ + + + diff --git a/docs/dd/d37/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception-members.html b/docs/dd/d37/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception-members.html new file mode 100644 index 0000000..c77d945 --- /dev/null +++ b/docs/dd/d37/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidFirstByteException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidFirstByteException, including all inherited members.

+ + + + + +
InvalidFirstByteException() (defined in MTSC.Exceptions.InvalidFirstByteException)MTSC.Exceptions.InvalidFirstByteException
InvalidFirstByteException(string message) (defined in MTSC.Exceptions.InvalidFirstByteException)MTSC.Exceptions.InvalidFirstByteException
InvalidFirstByteException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidFirstByteException)MTSC.Exceptions.InvalidFirstByteException
InvalidFirstByteException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidFirstByteException)MTSC.Exceptions.InvalidFirstByteExceptionprotected
+
+ + + + diff --git a/docs/dd/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception-members.html b/docs/dd/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception-members.html new file mode 100644 index 0000000..a1f3cb8 --- /dev/null +++ b/docs/dd/d38/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception-members.html @@ -0,0 +1,113 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.InvalidPostFormException Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.InvalidPostFormException, including all inherited members.

+ + + + + +
InvalidPostFormException() (defined in MTSC.Exceptions.InvalidPostFormException)MTSC.Exceptions.InvalidPostFormException
InvalidPostFormException(string message) (defined in MTSC.Exceptions.InvalidPostFormException)MTSC.Exceptions.InvalidPostFormException
InvalidPostFormException(string message, Exception innerException) (defined in MTSC.Exceptions.InvalidPostFormException)MTSC.Exceptions.InvalidPostFormException
InvalidPostFormException(SerializationInfo info, StreamingContext context) (defined in MTSC.Exceptions.InvalidPostFormException)MTSC.Exceptions.InvalidPostFormExceptionprotected
+
+ + + + diff --git a/docs/dd/d39/_release_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html b/docs/dd/d39/_release_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html new file mode 100644 index 0000000..a8b53b8 --- /dev/null +++ b/docs/dd/d39/_release_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/netcoreapp2.1/MTSC.AssemblyInfo.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.AssemblyInfo.cs
+
+
+
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 
11 using System;
12 using System.Reflection;
13 
14 [assembly: System.Reflection.AssemblyCompanyAttribute("Alexandru-Victor Macocian")]
15 [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
16 [assembly: System.Reflection.AssemblyDescriptionAttribute("Modular TCP Server and Client")]
17 [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")]
18 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
19 [assembly: System.Reflection.AssemblyProductAttribute("MTSC")]
20 [assembly: System.Reflection.AssemblyTitleAttribute("MTSC")]
21 [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
22 
23 // Generated by the MSBuild WriteCodeFragment class.
24 
+
+ + + + diff --git a/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.dot b/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.dot new file mode 100644 index 0000000..2cb962f --- /dev/null +++ b/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.dot @@ -0,0 +1,16 @@ +digraph "MTSC.Client.Handlers.IHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Client.Handlers.IHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler interface for client communication."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Client.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Client.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html",tooltip=" "]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Client.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html",tooltip="Handler for handling client http communication."]; + Node0 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="MTSC.Client.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html",tooltip="Handler implementing websocket protocol."]; +} diff --git a/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.md5 b/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.md5 new file mode 100644 index 0000000..4696795 --- /dev/null +++ b/docs/dd/d47/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler__inherit__graph.md5 @@ -0,0 +1 @@ +2139b426c397eafad857bb2fab280938 \ No newline at end of file diff --git a/docs/dd/d58/_client_modules_2_i_http_module_8cs_source.html b/docs/dd/d58/_client_modules_2_i_http_module_8cs_source.html new file mode 100644 index 0000000..a489e9d --- /dev/null +++ b/docs/dd/d58/_client_modules_2_i_http_module_8cs_source.html @@ -0,0 +1,117 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ClientModules/IHttpModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IHttpModule.cs
+
+
+
1 using MTSC.Client.Handlers;
2 using MTSC.Common.Http;
3 using System;
4 using System.Collections.Generic;
5 using System.Net.Sockets;
6 using System.Text;
7 
9 {
10  public interface IHttpModule
11  {
18  bool HandleResponse(IHandler handler, HttpMessage response);
19  }
20 }
bool HandleResponse(IHandler handler, HttpMessage response)
Handle a response received from the server.
+ + + + + + + +
Handler interface for client communication.
Definition: IHandler.cs:11
+
Definition: Client.cs:14
+
+
+ + + + diff --git a/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html b/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html new file mode 100644 index 0000000..652c56e --- /dev/null +++ b/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html @@ -0,0 +1,160 @@ + + + + + + + +MTSC: MTSC.Client.Handlers.EncryptionHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers.EncryptionHandler Class Reference
+
+
+
+Inheritance diagram for MTSC.Client.Handlers.EncryptionHandler:
+
+
+ + +MTSC.Client.Handlers.IHandler + +
+ + + + + +

+Public Member Functions

 EncryptionHandler ()
 Creates an instance of EncryptionHandler. More...
 
+

Detailed Description

+
+

Definition at line 11 of file EncryptionHandler.cs.

+

Constructor & Destructor Documentation

+ +

◆ EncryptionHandler()

+ +
+
+ + + + + + + +
MTSC.Client.Handlers.EncryptionHandler.EncryptionHandler ()
+
+ +

Creates an instance of EncryptionHandler.

+
Parameters
+ + +
clientClient object that this handler manages.
+
+
+ +

Definition at line 29 of file EncryptionHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.js b/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.js new file mode 100644 index 0000000..d445892 --- /dev/null +++ b/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler = +[ + [ "EncryptionHandler", "dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html#a8eb742cf50a76a170acc597ab1a4ce9d", null ] +]; \ No newline at end of file diff --git a/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.png b/docs/dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3ab8ac0d210e13e7fec3214edef99721612114 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^KY%!ZgBeINJ9z8@QW60^A+G=b{|7S9oVsCb=sW?) z0^Wpu>p?@zi;Tj|C7zd z<69Xf`@GF_o9C6DloM&CaBKaV*Sp+AR;wJn%rbq6$E*jFL_Cupc>mnL=ifW~`S<&? zf4Uo2obi5T_tJ@Ll8Ux|mT|dd&?Fh&ru1WzcGX-BH2$#ahwp=JeMTOwPma&GI?}Lx z^ZC8IR~&co%sJq$r25ih@!EMtrc15)4>UYqwtlf#jq&X@)qyiMcu$;EvSRze%m0)g z#OjMpHV`pewa-2E=~NF-t1BCJPOUS#D$}Sg{pR59w$jt<*(xu*S`O5(r2Js4bn(23 zT8`?q?`*gCO72=)C#325Tgv`i6}Nrq*Slf&--m3!>V9A@$e7&^ZWr5ZO{?y^er~he z^z_Y@JMP_?r#xL5=&0lelfIlbIjE{RNo|LU>m`uSyLk4kdo2~f@ZZP0p`(kdZa1rH zKUdxJK2JHZnq5{7I=%%Bz|disXmXHIDYJ>$}?O+3w2svQ<|F2Wg-sk;Ef9`62h}yq1^={ZZ-mi;(J!XC2@_VKJlQj=!Zp;bT z_iBY?g{2(}yTrx1SMn^|cTaV^rDy-|isG`4vTr-f#lL#R$rar$UdjAv(WNBIvuU5R zEq{mkzn*<*?(K{N#jd4S#5T^%y|y>&X4_j`Bk7+j*^B2jE)NBUv%BbIgRM7K{E{nu zzoT$MTH^NRon@-aO}AeX%{5hj5Vtn=_DN!GhNM$0i+bhrf*brknWR Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/dd/d5d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__coll__graph.md5 b/docs/dd/d5d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__coll__graph.md5 new file mode 100644 index 0000000..01c564b --- /dev/null +++ b/docs/dd/d5d/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module__coll__graph.md5 @@ -0,0 +1 @@ +39ace6412c24207ef1a55ab5caf128b5 \ No newline at end of file diff --git a/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.dot b/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.dot new file mode 100644 index 0000000..c1793cb --- /dev/null +++ b/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.Http.ServerModules.FileServerModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.Http.ServerModules.\lFileServerModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.md5 b/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.md5 new file mode 100644 index 0000000..e812ccb --- /dev/null +++ b/docs/dd/d80/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__inherit__graph.md5 @@ -0,0 +1 @@ +761f20011e973b90e13e32aa45303100 \ No newline at end of file diff --git a/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.dot b/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.dot new file mode 100644 index 0000000..feddb81 --- /dev/null +++ b/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.Http.ServerModules.FileServerModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Common.Http.ServerModules.\lFileServerModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; +} diff --git a/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.md5 b/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.md5 new file mode 100644 index 0000000..8b8f6c0 --- /dev/null +++ b/docs/dd/d84/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module__coll__graph.md5 @@ -0,0 +1 @@ +db605fb3790edc2950469b9fd6537876 \ No newline at end of file diff --git a/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.dot b/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.dot new file mode 100644 index 0000000..1568615 --- /dev/null +++ b/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.ExceptionThrower" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.Exception\lThrower",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Throws all handled exceptions."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IExceptionHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html",tooltip="Handler to be used for handling exception."]; +} diff --git a/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.md5 b/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.md5 new file mode 100644 index 0000000..e322eb0 --- /dev/null +++ b/docs/dd/d87/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower__inherit__graph.md5 @@ -0,0 +1 @@ +51222ce874536a7c87b1106458c7da2c \ No newline at end of file diff --git a/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html b/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html new file mode 100644 index 0000000..9a642ad --- /dev/null +++ b/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.InvalidStatusCodeException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.InvalidStatusCodeException Class Reference
+
+
+ +

Exception for invalid response status code. + More...

+
+Inheritance diagram for MTSC.Exceptions.InvalidStatusCodeException:
+
+
+ +
+ + + + + + +

+Public Member Functions

InvalidStatusCodeException (string message)
 
InvalidStatusCodeException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

InvalidStatusCodeException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Exception for invalid response status code.

+ +

Definition at line 11 of file InvalidStatusCodeException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.js b/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.js new file mode 100644 index 0000000..f3141b8 --- /dev/null +++ b/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception = +[ + [ "InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html#ae9a4c00231200b4b5ef149c6f83c01d0", null ], + [ "InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html#af8d84871a40ac7e99c7e4abee4dfbab9", null ], + [ "InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html#a8c357d700153e9ffebd4a2e1a0e53e57", null ], + [ "InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html#a407b38e2dfbb41a12b20786855e9d494", null ] +]; \ No newline at end of file diff --git a/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.png b/docs/dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..367cb88421d265d46e8be4d6067bed2197e86698 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0y~yU=#qd12~w04woM{Mo>p73Uu%DV zannKN<()X0jq4dd74B|5B&2(KZOr@ApO4#Dt9zc`B<^}*lKAOKx7T{;0r~!$!mm!) z^}qL0L;7*AN%KdVi(J?=mAzf6aU z?9FNmA&Bi?-GH`z6+<`$=%P|qkUPs5_q4_`Br!4>Y(A~((y)$!(I;F^QAmNIT}-Ay z+kqjxfdMEM!^pIQiKT#*;{lhz0Z|1qBwpt>ObPN@6ED&b(cKTU1a4rKLzv!m@vXP& zY_>FKSWIT%dwWedAM!Nr?|%Dt!+QDeo0uc7-)qaW|9k&s(0kpVdJ}qA zH=o{}_wGs#M}x8Tx5qLkwyiFXY+CWogLmE2oq0vo*W1>g&bj?w{+hj<_Unq;3#BU* zrCzZdPT;S!T;`Me@^qZ!*#mlUzrCitkKJ823eE|Mjr^56bywL&edpZky*F`HREz&Iso=D&rjyhi zbUKf9+dCWJ%w`HC>vn|2w>W15FPgY#l3H%kHF8E1T|9En_P0%^NnZI5M z-?S{uw)bsZC#*0#;^vm~J8KS}ws!dCx!>-~8=IB)e^=cPPTN24S0eYhdzEiPXHQ>R zaZvWzy)(ZSOy^^HF#B7vGUFfJ-H%ftab(ZQ@?idU Q1Ey>SPgg&ebxsLQ05#5JqyPW_ literal 0 HcmV?d00001 diff --git a/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.dot b/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.dot new file mode 100644 index 0000000..f73e9b4 --- /dev/null +++ b/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Logging.ConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Logging.ConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Basic logger that outputs the log messages to the console."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="ILogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html",tooltip="Interface for loggers."]; +} diff --git a/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.md5 b/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.md5 new file mode 100644 index 0000000..60ec38c --- /dev/null +++ b/docs/dd/d9c/class_m_t_s_c_1_1_logging_1_1_console_logger__coll__graph.md5 @@ -0,0 +1 @@ +d54ce930ec4c051e80734aa1cabee632 \ No newline at end of file diff --git a/docs/dd/d9c/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler-members.html b/docs/dd/d9c/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler-members.html new file mode 100644 index 0000000..53c7fce --- /dev/null +++ b/docs/dd/d9c/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler-members.html @@ -0,0 +1,115 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Handlers.WebsocketHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Server.Handlers.WebsocketHandler, including all inherited members.

+ + + + + + + +
AddWebsocketHandler(IWebsocketModule module)MTSC.Server.Handlers.WebsocketHandler
CloseConnection(ClientData client)MTSC.Server.Handlers.WebsocketHandler
QueueMessage(ClientData client, byte[] message)MTSC.Server.Handlers.WebsocketHandler
QueueMessage(ClientData client, WebsocketMessage message)MTSC.Server.Handlers.WebsocketHandler
SocketState enum name (defined in MTSC.Server.Handlers.WebsocketHandler)MTSC.Server.Handlers.WebsocketHandler
webSockets (defined in MTSC.Server.Handlers.WebsocketHandler)MTSC.Server.Handlers.WebsocketHandler
+
+ + + + diff --git a/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.dot b/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.dot new file mode 100644 index 0000000..c216f51 --- /dev/null +++ b/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.MethodInvalidException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.MethodInvalid\lException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Invalid HTTP Method Exception."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.md5 b/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.md5 new file mode 100644 index 0000000..36b5d04 --- /dev/null +++ b/docs/dd/da3/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__inherit__graph.md5 @@ -0,0 +1 @@ +b8f1b69a8a636c3bea2eed82295f1ff1 \ No newline at end of file diff --git a/docs/dd/dc4/_debug_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html b/docs/dd/dc4/_debug_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html new file mode 100644 index 0000000..78b7beb --- /dev/null +++ b/docs/dd/dc4/_debug_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/netcoreapp2.1/MTSC.AssemblyInfo.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.AssemblyInfo.cs
+
+
+
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 
11 using System;
12 using System.Reflection;
13 
14 [assembly: System.Reflection.AssemblyCompanyAttribute("Alexandru-Victor Macocian")]
15 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
16 [assembly: System.Reflection.AssemblyDescriptionAttribute("Modular TCP Server and Client")]
17 [assembly: System.Reflection.AssemblyFileVersionAttribute("0.1.0.0")]
18 [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
19 [assembly: System.Reflection.AssemblyProductAttribute("MTSC")]
20 [assembly: System.Reflection.AssemblyTitleAttribute("MTSC")]
21 [assembly: System.Reflection.AssemblyVersionAttribute("0.1.0.0")]
22 
23 // Generated by the MSBuild WriteCodeFragment class.
24 
+
+ + + + diff --git a/docs/dd/de1/_file_server_module_8cs_source.html b/docs/dd/de1/_file_server_module_8cs_source.html new file mode 100644 index 0000000..3067f6a --- /dev/null +++ b/docs/dd/de1/_file_server_module_8cs_source.html @@ -0,0 +1,120 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ServerModules/FileServerModule.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
FileServerModule.cs
+
+
+
1 using System;
2 using System.Collections.Concurrent;
3 using System.Collections.Generic;
4 using System.IO;
5 using System.Text;
6 using MTSC.Server;
7 using MTSC.Server.Handlers;
8 
10 {
12  {
13  private string rootFolder;
14  ConcurrentDictionary<string, Tuple<byte[], DateTime>> fileCache = new ConcurrentDictionary<string, Tuple<byte[], DateTime>>();
15  List<string> toRemoveCache = new List<string>();
16  public FileServerModule(string rootFolder = "src")
17  {
18  this.rootFolder = Path.GetFullPath(rootFolder);
19  }
20  #region Interface Implementation
21  bool IHttpModule.HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
22  {
23  if(request.Method == HttpMessage.MethodEnum.Get)
24  {
25  if(request.RequestURI == @"/")
26  {
27  request.RequestURI = @"/index.html";
28  }
29  string requestFile = this.rootFolder + request.RequestURI;
30  if(requestFile.IsSubPathOf(this.rootFolder) && File.Exists(requestFile))
31  {
32  /*
33  * If file is in cache, retrieve it from cache.
34  */
35  byte[] bodyData;
36  if (fileCache.ContainsKey(requestFile))
37  {
38  bodyData = fileCache[requestFile].Item1;
39  }
40  else
41  {
42  bodyData = File.ReadAllBytes(requestFile);
43  }
44  /*
45  * Insert or update cache with the requested file.
46  */
47  Tuple<byte[], DateTime> tuple = new Tuple<byte[], DateTime>(bodyData, DateTime.Now);
48  fileCache.AddOrUpdate(requestFile, tuple, (key, oldValue) => oldValue = tuple);
49  /*
50  * Build the response packet.
51  */
52  response.Body = bodyData;
53  response.StatusCode = HttpMessage.StatusCodes.OK;
54  response[HttpMessage.EntityHeadersEnum.ContentType] = "text/html";
55  if (!fileCache.ContainsKey(requestFile))
56  {
57  server.LogDebug("Adding " + requestFile + " to server cache.");
58  }
59  return true;
60  }
61  else
62  {
63  server.LogDebug("File not found: " + requestFile);
64  response.StatusCode = HttpMessage.StatusCodes.NotFound;
65  }
66  }
67  return false;
68  }
69 
70  void IHttpModule.Tick(Server.Server server, HttpHandler handler)
71  {
72  foreach(KeyValuePair<string, Tuple<byte[], DateTime>> keyValuePair in fileCache)
73  {
74  if((DateTime.Now - keyValuePair.Value.Item2).TotalSeconds > 60)
75  {
76  toRemoveCache.Add(keyValuePair.Key);
77  }
78  }
79  foreach(string fileName in toRemoveCache)
80  {
81  Tuple<byte[], DateTime> tp;
82  while(!fileCache.TryRemove(fileName, out tp)) { };
83  server.LogDebug("Removed " + fileName + " from cache.");
84  }
85  toRemoveCache.Clear();
86  }
87 
88  #endregion
89  }
90 }
void Tick(Server.Server server, HttpHandler handler)
Perform periodic operations.
+
Structure containing client information.
Definition: Server.cs:402
+ +
Handler for handling server http requests.
Definition: HttpHandler.cs:15
+ +
Server()
Creates an instance of server with default values.
Definition: Server.cs:68
+ +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
Handle the received request.
+ +
Definition: Client.cs:14
+ +
Interface for Http modules used by the server http handler.
Definition: IHttpModule.cs:13
+
+
+ + + + diff --git a/docs/dd/df1/_invalid_first_byte_exception_8cs_source.html b/docs/dd/df1/_invalid_first_byte_exception_8cs_source.html new file mode 100644 index 0000000..5fbde06 --- /dev/null +++ b/docs/dd/df1/_invalid_first_byte_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidFirstByteException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidFirstByteException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidFirstByteException : Exception
12  {
14  {
15  }
16 
17  public InvalidFirstByteException(string message) : base(message)
18  {
19  }
20 
21  public InvalidFirstByteException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidFirstByteException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+
Exception in case of first invalid byte for websocket communication.
+
+
+ + + + diff --git a/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.dot b/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.dot new file mode 100644 index 0000000..ca389d0 --- /dev/null +++ b/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.MethodInvalidException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.MethodInvalid\lException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Invalid HTTP Method Exception."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.md5 b/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.md5 new file mode 100644 index 0000000..5762f87 --- /dev/null +++ b/docs/de/d16/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception__coll__graph.md5 @@ -0,0 +1 @@ +799957a2909dbad2d0b543ed0a8d1fda \ No newline at end of file diff --git a/docs/de/d19/_exception_thrower_8cs_source.html b/docs/de/d19/_exception_thrower_8cs_source.html new file mode 100644 index 0000000..a0d424b --- /dev/null +++ b/docs/de/d19/_exception_thrower_8cs_source.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/ExceptionThrower.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ExceptionThrower.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 
5 namespace MTSC.Exceptions
6 {
11  {
12  public bool HandleException(Exception e)
13  {
14  throw e;
15  }
16  }
17 }
+
Throws all handled exceptions.
+
bool HandleException(Exception e)
Handles exceptions.
+
Handler to be used for handling exception.
+
+
+ + + + diff --git a/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.dot b/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.dot new file mode 100644 index 0000000..2679668 --- /dev/null +++ b/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidWebsocketFormatException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidWebsocket\lFormatException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.md5 b/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.md5 new file mode 100644 index 0000000..624d565 --- /dev/null +++ b/docs/de/d23/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception__coll__graph.md5 @@ -0,0 +1 @@ +f0e81be7eff8c6b8fba361e2794024de \ No newline at end of file diff --git a/docs/de/d28/_invalid_http_version_exception_8cs_source.html b/docs/de/d28/_invalid_http_version_exception_8cs_source.html new file mode 100644 index 0000000..138810f --- /dev/null +++ b/docs/de/d28/_invalid_http_version_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/InvalidHttpVersionException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
InvalidHttpVersionException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class InvalidHttpVersionException : Exception
12  {
14  {
15  }
16 
17  public InvalidHttpVersionException(string message) : base(message)
18  {
19  }
20 
21  public InvalidHttpVersionException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected InvalidHttpVersionException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+
Exception in case of Invalid HTTP Version.
+
+
+ + + + diff --git a/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.dot b/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.dot new file mode 100644 index 0000000..0b3059a --- /dev/null +++ b/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidPostFormException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidPost\lFormException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception for invalid post forms."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.md5 b/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.md5 new file mode 100644 index 0000000..d3071dc --- /dev/null +++ b/docs/de/d2b/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception__coll__graph.md5 @@ -0,0 +1 @@ +f4dd4b9a04a813393306009b806b676f \ No newline at end of file diff --git a/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.dot b/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.dot new file mode 100644 index 0000000..7bbf9bf --- /dev/null +++ b/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidRequestURIException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidRequest\lURIException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception cause by an invalid request URI."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.md5 b/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.md5 new file mode 100644 index 0000000..c167ac9 --- /dev/null +++ b/docs/de/d54/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception__inherit__graph.md5 @@ -0,0 +1 @@ +28cb282108820db76c72d642790468fe \ No newline at end of file diff --git a/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.dot b/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.dot new file mode 100644 index 0000000..c64cfd4 --- /dev/null +++ b/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ServerModules.EchoModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.WebSockets.Server\lModules.EchoModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html",tooltip=" "]; +} diff --git a/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.md5 b/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.md5 new file mode 100644 index 0000000..83c3557 --- /dev/null +++ b/docs/de/d59/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module__inherit__graph.md5 @@ -0,0 +1 @@ +6c8d4f4ad9a14a5ba603426d22422130 \ No newline at end of file diff --git a/docs/de/d73/_method_invalid_exception_8cs_source.html b/docs/de/d73/_method_invalid_exception_8cs_source.html new file mode 100644 index 0000000..6306a40 --- /dev/null +++ b/docs/de/d73/_method_invalid_exception_8cs_source.html @@ -0,0 +1,109 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions/MethodInvalidException.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MethodInvalidException.cs
+
+
+
1 using System;
2 using System.Collections.Generic;
3 using System.Runtime.Serialization;
4 using System.Text;
5 
6 namespace MTSC.Exceptions
7 {
11  public class MethodInvalidException : Exception
12  {
13  public MethodInvalidException()
14  {
15  }
16 
17  public MethodInvalidException(string message) : base(message)
18  {
19  }
20 
21  public MethodInvalidException(string message, Exception innerException) : base(message, innerException)
22  {
23  }
24 
25  protected MethodInvalidException(SerializationInfo info, StreamingContext context) : base(info, context)
26  {
27  }
28  }
29 }
+ +
+
+ + + + diff --git a/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.dot b/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.dot new file mode 100644 index 0000000..70193af --- /dev/null +++ b/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "MTSC.Exceptions.IExceptionHandler" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.IException\lHandler",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Handler to be used for handling exception."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Exceptions.Exception\lConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html",tooltip="Logs the received exceptions to the console."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Exceptions.Exception\lThrower",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html",tooltip="Throws all handled exceptions."]; +} diff --git a/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.md5 b/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.md5 new file mode 100644 index 0000000..01be5a6 --- /dev/null +++ b/docs/de/d8e/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler__inherit__graph.md5 @@ -0,0 +1 @@ +f821ddd015123adcf2857248a61c3afe \ No newline at end of file diff --git a/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html b/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html new file mode 100644 index 0000000..51aec64 --- /dev/null +++ b/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html @@ -0,0 +1,117 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets Namespace Reference
+
+
+ + + + + +

+Classes

class  WebsocketMessage
 Class containing the bytes of a websocket received message. More...
 
+
+
+ + + + diff --git a/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.js b/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.js new file mode 100644 index 0000000..aad8f63 --- /dev/null +++ b/docs/de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.js @@ -0,0 +1,6 @@ +var namespace_m_t_s_c_1_1_common_1_1_web_sockets = +[ + [ "ClientModules", "df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html", "df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules" ], + [ "ServerModules", "d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html", "d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules" ], + [ "WebsocketMessage", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message" ] +]; \ No newline at end of file diff --git a/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html b/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html new file mode 100644 index 0000000..08a4c7b --- /dev/null +++ b/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html @@ -0,0 +1,143 @@ + + + + + + + +MTSC: MTSC.Exceptions.MethodInvalidException Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.MethodInvalidException Class Reference
+
+
+ +

Invalid HTTP Method Exception. + More...

+
+Inheritance diagram for MTSC.Exceptions.MethodInvalidException:
+
+
+ +
+ + + + + + +

+Public Member Functions

MethodInvalidException (string message)
 
MethodInvalidException (string message, Exception innerException)
 
+ + + +

+Protected Member Functions

MethodInvalidException (SerializationInfo info, StreamingContext context)
 
+

Detailed Description

+

Invalid HTTP Method Exception.

+ +

Definition at line 11 of file MethodInvalidException.cs.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.js b/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.js new file mode 100644 index 0000000..21beab9 --- /dev/null +++ b/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception = +[ + [ "MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html#a2e272666a7bfd79a603b8bbf116316a2", null ], + [ "MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html#a1d519d75dbc3c670969936ab52986ded", null ], + [ "MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html#afc52e368396fcdfe3518558d4a492232", null ], + [ "MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html#ad5b17998b16b049a9f547202dbe66d2b", null ] +]; \ No newline at end of file diff --git a/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.png b/docs/de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.png new file mode 100644 index 0000000000000000000000000000000000000000..1575c2c6215b1e092c6260f5ff281b5c2e8d8623 GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^zkoP^gBeJ&Z=KN&q$C1-LR|m<{|{uIId#L>(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ0+&ov`ic;26T|9k7V zE@kI)E#%(pn-;^g^uii5-t9AH{$!b~(%-U6rBeBd>PhMJ70au%JZIl|KW`t)@)h2f zW@rb!clrAK;l@3h%$E+nJ6`f{Pu4A!m#gROe5JX1a*XASEB|JhdHzyc{_g9ZWvO<% zIwQ_>snkvm{$90w-m=4;RbQi{|HOx#PkqUCH1&9}d+yZZiF++Eq#?yc+}+*dGHC|_aRBlwEp z9!Dudev4Iuxs&Vx>4kg`dIQ)$xS>cla2ptZ=45*?5h}BIg}-q@{)w;eD}(Hq?tW)T zn0$OP!|N-BZGYMIS8gxrVSl{x)#TL9)qk$8UU(&jFTvCNT;SK~YL)u)Y`^|o{FY~l z=lPuzgw^KSub;KeZL4hhskO_lU$KmQ`t4B3RJ~tc>-Fc^J^VaZ%ffZ%#Pz`(UlT6; z6U*IP`0Dc3>uVBAXGAVn{`h94fA;0)+4rK~uI;^$);{sqqR&y)%OgVgjvDJ1n>KIT z9=!8K+o{w-gOJH-sdIka=&OpHxa@z8-~FESHF4k0TRgn3R-L=zsl{EVeGB$|{g?dl zi~RO|bNaPv@~RT^*S2n*e52d<-tkS_uHWxXcdz{!yS_R*Ah7u5+NV1_f8;58Pfzm| z7p;>E2v)sx^I%0(X#@Yy@_eQrbLLh!$v#MyS%9TuSd=l9K=>Hd$Q)purb@y@$DF6Tf literal 0 HcmV?d00001 diff --git a/docs/de/db6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message-members.html b/docs/de/db6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message-members.html new file mode 100644 index 0000000..b2e80f9 --- /dev/null +++ b/docs/de/db6/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message-members.html @@ -0,0 +1,119 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html b/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html new file mode 100644 index 0000000..14fc21d --- /dev/null +++ b/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html @@ -0,0 +1,201 @@ + + + + + + + +MTSC: MTSC.Logging.ConsoleLogger Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Logging.ConsoleLogger Class Reference
+
+
+ +

Basic logger that outputs the log messages to the console. + More...

+
+Inheritance diagram for MTSC.Logging.ConsoleLogger:
+
+
+ + +MTSC.Logging.ILogger + +
+ + + + + + + + +

+Public Member Functions

bool Log (string message)
 Outputs the message to the console. More...
 
bool LogDebug (string message)
 Ignores debug messages. More...
 
+

Detailed Description

+

Basic logger that outputs the log messages to the console.

+ +

Definition at line 10 of file ConsoleLogger.cs.

+

Member Function Documentation

+ +

◆ Log()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.ConsoleLogger.Log (string message)
+
+ +

Outputs the message to the console.

+
Parameters
+ + +
message
+
+
+ +

Implements MTSC.Logging.ILogger.

+ +

Definition at line 16 of file ConsoleLogger.cs.

+ +
+
+ +

◆ LogDebug()

+ +
+
+ + + + + + + + +
bool MTSC.Logging.ConsoleLogger.LogDebug (string message)
+
+ +

Ignores debug messages.

+
Parameters
+ + +
message
+
+
+
Returns
False
+ +

Implements MTSC.Logging.ILogger.

+ +

Definition at line 26 of file ConsoleLogger.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.js b/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.js new file mode 100644 index 0000000..0cbce76 --- /dev/null +++ b/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.js @@ -0,0 +1,5 @@ +var class_m_t_s_c_1_1_logging_1_1_console_logger = +[ + [ "Log", "de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#a9fd52d789f68285f284aa902175638b7", null ], + [ "LogDebug", "de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#aa52943a8f24372455b11ede5ee236f55", null ] +]; \ No newline at end of file diff --git a/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.png b/docs/de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.png new file mode 100644 index 0000000000000000000000000000000000000000..bca64a2b5ec8f19ad4f1ab51b66088eef1895dff GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^yMQ==gBeK9(0Kxo z1;z&s9N6Tx$OOpcC<*clW&kPzfvcxNj2IZ05ZDKXaPx~I%~y6TN-)oFD}e)fuK2Jbob zRy@v-dht3*C-Q36q~gZBpGO)!CM`VuBKtt{mt8A)#i|xRFASQScX`LF)CIY#?)B}P z)=+)%@!OA)_V@oiKe|y*-Cgw9nXjknRIjU^yb}7QHdbH!#wvr%>rh{z8@9)Sn)cma3=OK0VNul>Xy@`y?LQDF&0iYytV_G{|FV zUx5BpWc@HFjv+ZK=F9c$h;M}#(?12?WOw_{#e5;YkMBY>2{?d5u}72XKu1wY!#xo8 zdQr%-Iq~lP)6QB>FHIeykL^AryR(0>zJz7;F+diG-n%|SX{*iF@gFkyMX0iSHHB)tUlyA|wdlyw5D&NlQJ9NBp z&Z6~u`!4!2aqmsBanEPbElYhR8(urPrhmcn$j-~Z*73MMy#DteW7Qtp=6eM;{QK9o zhQ4R3T7787&bXVaxh_jRyI=HIrZ)ci>CnwuK3?rII$w47Cx*;u{;>1VozhuRtpAq< z-?H=H=X`&8+1?h0_!C_9r`Lq<+_0UwMp^rhFDLT{eVAWoU3BJ1^!Upl+o9fZ@!E7g QVESY5boFyt=akR{056bV=Kufz literal 0 HcmV?d00001 diff --git a/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.dot b/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.dot new file mode 100644 index 0000000..a6d2592 --- /dev/null +++ b/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.ExceptionConsoleLogger" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.Exception\lConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Logs the received exceptions to the console."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IExceptionHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html",tooltip="Handler to be used for handling exception."]; +} diff --git a/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.md5 b/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.md5 new file mode 100644 index 0000000..66c0c85 --- /dev/null +++ b/docs/df/d01/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger__coll__graph.md5 @@ -0,0 +1 @@ +07db90db4595520848abf55eab64c311 \ No newline at end of file diff --git a/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html b/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html new file mode 100644 index 0000000..87f28ce --- /dev/null +++ b/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html @@ -0,0 +1,118 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ClientModules Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ClientModules Namespace Reference
+
+
+ + + + + + + +

+Classes

class  ChatModule
 
interface  IWebsocketModule
 Interface for websocket modules. More...
 
+
+
+ + + + diff --git a/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.js b/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.js new file mode 100644 index 0000000..a60ba61 --- /dev/null +++ b/docs/df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.js @@ -0,0 +1,5 @@ +var namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules = +[ + [ "ChatModule", "df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html", "df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module" ], + [ "IWebsocketModule", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module" ] +]; \ No newline at end of file diff --git a/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.dot b/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.dot new file mode 100644 index 0000000..e71d1fd --- /dev/null +++ b/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidHttpVersionException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Exceptions.InvalidHttp\lVersionException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception in case of Invalid HTTP Version."]; + Node1 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.md5 b/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.md5 new file mode 100644 index 0000000..a17691e --- /dev/null +++ b/docs/df/d22/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception__inherit__graph.md5 @@ -0,0 +1 @@ +62dc50bec4a4562f6f01ad4b569c6be8 \ No newline at end of file diff --git a/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html b/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html new file mode 100644 index 0000000..c595203 --- /dev/null +++ b/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html @@ -0,0 +1,204 @@ + + + + + + + +MTSC: MTSC.Client.Handlers.WebsocketHandler Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers.WebsocketHandler Class Reference
+
+
+ +

Handler implementing websocket protocol. + More...

+
+Inheritance diagram for MTSC.Client.Handlers.WebsocketHandler:
+
+
+ + +MTSC.Client.Handlers.IHandler + +
+ + + + + + + + +

+Public Member Functions

WebsocketHandler AddModule (IWebsocketModule websocketModule)
 Add a module to the websocket handler. More...
 
void QueueMessage (WebsocketMessage message)
 Add a message to the queue to be sent. More...
 
+ + + +

+Properties

+string WebsocketURI [get, set]
 
+

Detailed Description

+

Handler implementing websocket protocol.

+ +

Definition at line 14 of file WebsocketHandler.cs.

+

Member Function Documentation

+ +

◆ AddModule()

+ +
+
+ + + + + + + + +
WebsocketHandler MTSC.Client.Handlers.WebsocketHandler.AddModule (IWebsocketModule websocketModule)
+
+ +

Add a module to the websocket handler.

+
Parameters
+ + +
websocketModuleModule to be added.
+
+
+
Returns
This handler object.
+ +

Definition at line 51 of file WebsocketHandler.cs.

+ +
+
+ +

◆ QueueMessage()

+ +
+
+ + + + + + + + +
void MTSC.Client.Handlers.WebsocketHandler.QueueMessage (WebsocketMessage message)
+
+ +

Add a message to the queue to be sent.

+
Parameters
+ + +
messageMessage to be sent.
+
+
+ +

Definition at line 60 of file WebsocketHandler.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.js b/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.js new file mode 100644 index 0000000..bce60c4 --- /dev/null +++ b/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.js @@ -0,0 +1,7 @@ +var class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler = +[ + [ "WebsocketHandler", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#a245524ee02c83ff95e4699739c90b887", null ], + [ "AddModule", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#a30f0f192ec1d875f28a7e07529feecb8", null ], + [ "QueueMessage", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#aab375ecfc0b27c0a0ed8355c5904eb15", null ], + [ "WebsocketURI", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#a1a326df81e341f7ba442338308fb031d", null ] +]; \ No newline at end of file diff --git a/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.png b/docs/df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad0c8aca06357a7e4fbb2eed1cba679a2b14210 GIT binary patch literal 796 zcmeAS@N?(olHy`uVBq!ia0vp^KY%!ZgBeINJ9z8@QW60^A+G=b{|7S9oVsCb=sW?) z0^O{wLR) z*}N7lui3-h!V`2?*IT6WjnUWB``%Z(Z1fJYQQe{98r0++q;i+}{;lud{#O6}Q?qaV zRr$0J^QN2pna-{1F)6Jw@bsO>9-c)d!h4LiU3t5>|IC5akMtYQmu_*?Tw?d{(FD#r z=jy)6ExISH`;nziJ!sOolIyQjCu`oVWDu?}t(A}bka}&+?;xMVekIkHA^X|%f8S@6 z-*aQu5f?-Euisa!tr61nT)yk>omumjWt}_VEiH3!ZQ|We)y*~=f2A%_nfr44gFNZt zc@^~>?qT2O-M+*VyE@**>(a(|^6AOk``^5353?^@mHpNFfge!utL+b7TgI))Jpb|C zo}I_9-n?aV=U&eFiN_~SDp^+jVA7Z4Qyxqb@#NI=oCs!2Jovr#J~P*Y`7hZO7A`|)7KHI-#iHfFnjTmR%Sxpm{2#CqFPmgd`^b$v9oX4TIv&^dMM zobDoXkK|HrJC<+1_cv@WJzq4hd3Wxa%17CO?b~a6X7Nv1I{BN^+}YV0Hml>G$n3b{KRP=H?0 + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Logging.ILogger Member List
+
+
+ +

This is the complete list of members for MTSC.Logging.ILogger, including all inherited members.

+ + + +
Log(string message)MTSC.Logging.ILogger
LogDebug(string message)MTSC.Logging.ILogger
+
+ + + + diff --git a/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html b/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html new file mode 100644 index 0000000..418f16b --- /dev/null +++ b/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html @@ -0,0 +1,349 @@ + + + + + + + +MTSC: MTSC.Client.Handlers.IHandler Interface Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Client.Handlers.IHandler Interface Reference
+
+
+ +

Handler interface for client communication. + More...

+
+Inheritance diagram for MTSC.Client.Handlers.IHandler:
+
+
+ + +MTSC.Client.Handlers.BroadcastHandler +MTSC.Client.Handlers.EncryptionHandler +MTSC.Client.Handlers.HttpHandler +MTSC.Client.Handlers.WebsocketHandler + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool InitializeConnection (Client client)
 Called when the connection is being initialized. More...
 
bool HandleSendMessage (Client client, ref Message message)
 Called when a message is being sent to the server. More...
 
bool PreHandleReceivedMessage (Client client, ref Message message)
 Called before the message is handled. Use this method to modify the message if necesarry. More...
 
bool HandleReceivedMessage (Client client, Message message)
 Called when a message has been received. More...
 
void Tick (Client client)
 Called every cycle. This method should perform regular actions on the connection. More...
 
void Disconnected (Client client)
 Called when the client is disconnected. More...
 
+

Detailed Description

+

Handler interface for client communication.

+ +

Definition at line 11 of file IHandler.cs.

+

Member Function Documentation

+ +

◆ Disconnected()

+ +
+
+ + + + + + + + +
void MTSC.Client.Handlers.IHandler.Disconnected (Client client)
+
+ +

Called when the client is disconnected.

+
Parameters
+ + +
clientClient object.
+
+
+ +
+
+ +

◆ HandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MTSC.Client.Handlers.IHandler.HandleReceivedMessage (Client client,
Message message 
)
+
+ +

Called when a message has been received.

+
Parameters
+ + + +
clientClient object.
messageMessage to be handled.
+
+
+
Returns
True if the message has been handled and no other handler should process it.
+ +
+
+ +

◆ HandleSendMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MTSC.Client.Handlers.IHandler.HandleSendMessage (Client client,
ref Message message 
)
+
+ +

Called when a message is being sent to the server.

+
Parameters
+ + + +
clientClient socket.
messageMessage to be sent.
+
+
+
Returns
+ +
+
+ +

◆ InitializeConnection()

+ +
+
+ + + + + + + + +
bool MTSC.Client.Handlers.IHandler.InitializeConnection (Client client)
+
+ +

Called when the connection is being initialized.

+
Parameters
+ + +
clientClient object.
+
+
+
Returns
True if the initialization is successful.
+

If this method returns false, the connection will fail and return false.

+ +
+
+ +

◆ PreHandleReceivedMessage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MTSC.Client.Handlers.IHandler.PreHandleReceivedMessage (Client client,
ref Message message 
)
+
+ +

Called before the message is handled. Use this method to modify the message if necesarry.

+
Parameters
+ + + +
clientClient object.
messageMessage to be preprocessed.
+
+
+
Returns
True if the message has been preprocessed and no other handler should modify the message.
+ +
+
+ +

◆ Tick()

+ +
+
+ + + + + + + + +
void MTSC.Client.Handlers.IHandler.Tick (Client client)
+
+ +

Called every cycle. This method should perform regular actions on the connection.

+
Parameters
+ + +
clientClient object.
+
+
+ +
+
+
The documentation for this interface was generated from the following file: +
+
+ + + + diff --git a/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.js b/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.js new file mode 100644 index 0000000..30439c4 --- /dev/null +++ b/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.js @@ -0,0 +1,9 @@ +var interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler = +[ + [ "Disconnected", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab6cd7a214480e15a9a310e4ac2cf842b", null ], + [ "HandleReceivedMessage", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a3541fed25473836601b6f90cc885beef", null ], + [ "HandleSendMessage", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a6a18b7706a9d3423c659c37ab62cb5dd", null ], + [ "InitializeConnection", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a28c55fc1af4995b8e3a95ba07d6bffde", null ], + [ "PreHandleReceivedMessage", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#acd8845050e973018c1a57e23a3e06247", null ], + [ "Tick", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab03755cacb365c29a3bc6dbe17884b64", null ] +]; \ No newline at end of file diff --git a/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.png b/docs/df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.png new file mode 100644 index 0000000000000000000000000000000000000000..4000c23b48251ce96babb018aa348c061c025827 GIT binary patch literal 1654 zcmb7FX;f236b>2@w~DwS_83%LDn$@PZ4nZ7Xf>elTrsf<3aDY$ZsnSHxa??P^*d9Sky={Vv}v?rf`20MKQDW3 zWo^2PXHsH=Y21+MnL}mp*RGK0I*yLaAMw8%Sp^UGjr_7>F&28E=LQ;Sh;Sh+I@tDN z7o&qP0lxu{dZSU=?8I(WveSk=a++lK84<6$mIo;pCbdj6al;>bu!wlu;>`vLRa2lZ zZIc@$v9vElfr&Y?u3a2KDO5nmx!5sWTnRA9J)DnJJ(R@BlwfJ6n7MO+t*!j%v8vw* z!#da6y#15VL`Jv4DW}i1-cFdoF*zVy0%u%_Jxszrxlhdb}qupI>q5 z#C1APf>zYucT z;t*^<#SgT-__;&R8k~ADSZTXpe??|lokTL7K(kbrMs!MI{pWe z=yl+t`vzhw12n!&t+q9292*q%;(Oz~wj?f99o`i|+nt_rPok~W=n`T28U%q|3&Mc$ z3^+5;QludUtvu8|Qlf&OYfIUA{1-(@UV<4{rCz%xDm4NkH%dk)ay^F{0B5kRS9Y~a z%6e8+G0Mo-JyOWxS~}6@G3I1ZNJ1&B8ZOT~Xvu_8$Fhye4Bo*;2$G&Y^r2V3RZhE? zc2v{twPRud!lm)boNs0=GW4E3k^_ICZBJ2F?vbWI@J{yu3i5s1NrXZ+EpA5Fw&cS< z3kPfX8*8KPZbA1SuU;oBb)x{nq^It$VaZ&t)Up*Oks?89mww$Wy;nM84TVNL3ZO;^ zk$cG1)$fFo=G*9H6-SP0eA27XuIXN#Xqr#PZFF=22ZDbZu#29j%YW9V?Wi;M*hOop z$>QO!x6R7uIx^h@d1vR`FR`4VJWMJ{#3+!6z^h?yOv8cxfuyX^6O`T<4GdwB+&=Q<4;N(LLg}YmormQgD)6K2=>X6^tDB^&6|DED(w~^S zna<37Eu#YN-!bN44|~hl;666g`-E6TQg5w-3`!$oN;qJ0VxdG=Exq6&1jkvMu7etM zeL2F1YsM~-0HI`wVdh3HrnhgR0D!^sw?oXDJg8ccXU=U?Y`}EL*ASWQQj3^!B-@KQ d*(_nyV(iB^b{{RyWMH2JF4&*!$M)I#`(KEAX$k-U literal 0 HcmV?d00001 diff --git a/docs/df/d5f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower-members.html b/docs/df/d5f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower-members.html new file mode 100644 index 0000000..2ccfba7 --- /dev/null +++ b/docs/df/d5f/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Exceptions.ExceptionThrower Member List
+
+
+ +

This is the complete list of members for MTSC.Exceptions.ExceptionThrower, including all inherited members.

+ + +
HandleException(Exception e)MTSC.Exceptions.ExceptionThrower
+
+ + + + diff --git a/docs/df/d65/_debug_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html b/docs/df/d65/_debug_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html new file mode 100644 index 0000000..50adb6e --- /dev/null +++ b/docs/df/d65/_debug_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/net48/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
+
+
+
+
+ + + + diff --git a/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.dot b/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.dot new file mode 100644 index 0000000..65845f5 --- /dev/null +++ b/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Common.WebSockets.ClientModules.IWebsocketModule" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node0 [label="MTSC.Common.WebSockets.Client\lModules.IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Interface for websocket modules."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.WebSockets.Client\lModules.ChatModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html",tooltip=" "]; +} diff --git a/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.md5 b/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.md5 new file mode 100644 index 0000000..6854a07 --- /dev/null +++ b/docs/df/d66/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module__inherit__graph.md5 @@ -0,0 +1 @@ +f3a6231d8b694126df0188236dbcefc8 \ No newline at end of file diff --git a/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html b/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html new file mode 100644 index 0000000..2eca3da --- /dev/null +++ b/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html @@ -0,0 +1,168 @@ + + + + + + + +MTSC: MTSC.Exceptions.ExceptionConsoleLogger Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Exceptions.ExceptionConsoleLogger Class Reference
+
+
+ +

Logs the received exceptions to the console. + More...

+
+Inheritance diagram for MTSC.Exceptions.ExceptionConsoleLogger:
+
+
+ + +MTSC.Exceptions.IExceptionHandler + +
+ + + + + +

+Public Member Functions

bool HandleException (Exception e)
 Handles exceptions. More...
 
+

Detailed Description

+

Logs the received exceptions to the console.

+ +

Definition at line 10 of file ExceptionConsoleLogger.cs.

+

Member Function Documentation

+ +

◆ HandleException()

+ +
+
+ + + + + + + + +
bool MTSC.Exceptions.ExceptionConsoleLogger.HandleException (Exception e)
+
+ +

Handles exceptions.

+
Parameters
+ + +
eException to be handled.
+
+
+
Returns
True if it handled the exception. Otherwise returns false.
+ +

Implements MTSC.Exceptions.IExceptionHandler.

+ +

Definition at line 12 of file ExceptionConsoleLogger.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.js b/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.js new file mode 100644 index 0000000..1e127c7 --- /dev/null +++ b/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger = +[ + [ "HandleException", "df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html#a14297ad13521dcb5f54c0d5795920bae", null ] +]; \ No newline at end of file diff --git a/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.png b/docs/df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.png new file mode 100644 index 0000000000000000000000000000000000000000..b76ff9d46049ae65b62dc4493868dc9c7309a61e GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0y~yU}OZc12~w0q~3G`O&}!^;1lBd|Nnm=^USFm#)i%l zfGjXRaNxiuw?!sEE=Ng_UoZnu5eQs86=KA|z;xBq#WAFU@$KB#MXwcjTBd*Xx&MFS z>?1KOVmFSw-12;br1mih{TI$c^&4|pHcoWA6vH_I(c-Hux8H zZr)z6etG)Sw@K-yT#d~oBEDX=GLLmSRu?=Gf0tdlz2);51t$ zd$x+e)+{E?_P48#ah^Ba&gYYL+hz zYzK=_#H25|eGca?7m8Kfu23;J*W@kLuJa-3!4i@AbK6QE%Fkt8_Gr$N4Ub>`ma@HW zKb3XuZp+s}i=TX0(0BaSoZmTOGcx90Uva*v=bSaS$EB@;jFa|cUhhkp^yap@iN~g7 zB?TsXp9YoxJ31RUIvO}^IC5@pTbsl1Vf8mw2JhRSSoZA;bKhXo$lh>Nu%kh1AxI4Y zbRb?qz=^|Knu$Rt2WUDF&2(V;_@YDg)72BlT}z7?9InrcXKKjL=blrSW;g5RRVM|@ z*`lA~D|aoaeI>`xb4E5voROjLFHd9GxuzS3Ro?mY%-{RB%BVK-UoPY0xr=B2%31xz zp8f6nGZWtIJlUiXGi~OAiaFmsdN(hPW_VNjVz+w0zW2Oqznr;Yw1?+pwULs5`&E`8 zsoUYb^7HcLg+J^%&nc6??ZZr4Px)}kr^g)LI;@#f%gz^RpnX9xAmox-`a-?NEzHkZ zidOY)K5+Y_a-*YIjL-|gf=vkmQDG;QFNplR7@3fD(o>3G%v?F(t-F0p+N%SWjYUk$ z-MSVA>COp?n|{ZNJC9?EYsId&krT4dzR=0wU^w8rd+nE2`aEiFOkMa6c)7LYu Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; +} diff --git a/docs/df/d93/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__coll__graph.md5 b/docs/df/d93/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__coll__graph.md5 new file mode 100644 index 0000000..1f64c51 --- /dev/null +++ b/docs/df/d93/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler__coll__graph.md5 @@ -0,0 +1 @@ +eeb713d8e97757b51bd04b4f1135ebf9 \ No newline at end of file diff --git a/docs/df/d94/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler-members.html b/docs/df/d94/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler-members.html new file mode 100644 index 0000000..6e56fac --- /dev/null +++ b/docs/df/d94/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler-members.html @@ -0,0 +1,110 @@ + + + + + + + +MTSC: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC.Server.Handlers.BroadcastHandler Member List
+
+
+ +

This is the complete list of members for MTSC.Server.Handlers.BroadcastHandler, including all inherited members.

+ + +
BroadcastHandler() (defined in MTSC.Server.Handlers.BroadcastHandler)MTSC.Server.Handlers.BroadcastHandler
+
+ + + + diff --git a/docs/df/db4/_server_2_handlers_2_http_handler_8cs_source.html b/docs/df/db4/_server_2_handlers_2_http_handler_8cs_source.html new file mode 100644 index 0000000..107ed69 --- /dev/null +++ b/docs/df/db4/_server_2_handlers_2_http_handler_8cs_source.html @@ -0,0 +1,126 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers/HttpHandler.cs Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
HttpHandler.cs
+
+
+
1 using MTSC.Common;
2 using MTSC.Common.Http;
4 using System;
5 using System.Collections.Concurrent;
6 using System.Collections.Generic;
7 using System.Text;
8 using System.Threading;
9 
10 namespace MTSC.Server.Handlers
11 {
15  public class HttpHandler : IHandler
16  {
17  #region Fields
18  List<IHttpModule> httpModules = new List<IHttpModule>();
19  ConcurrentQueue<Tuple<ClientData,HttpMessage>> messageQueue = new ConcurrentQueue<Tuple<ClientData, HttpMessage>>();
20  #endregion
21  #region Constructors
22  public HttpHandler()
23  {
24 
25  }
26  #endregion
27  #region Public Methods
34  {
35  this.httpModules.Add(module);
36  return this;
37  }
42  public void QueueResponse(ClientData client, HttpMessage response)
43  {
44  messageQueue.Enqueue(new Tuple<ClientData, HttpMessage>(client, response));
45  }
46  #endregion
47  #region Interface Implementation
48  void IHandler.ClientRemoved(Server server, ClientData client)
53  {
54 
55  }
61  bool IHandler.HandleClient(Server server, ClientData client)
62  {
63  return false;
64  }
71  bool IHandler.HandleReceivedMessage(Server server, ClientData client, Message message)
72  {
73  HttpMessage httpMessage = new HttpMessage();
74  HttpMessage responseMessage = new HttpMessage();
75  httpMessage.ParseRequest(message.MessageBytes);
76  if(httpMessage.ContainsHeader(HttpMessage.GeneralHeadersEnum.Connection) &&
77  httpMessage[HttpMessage.GeneralHeadersEnum.Connection].ToLower() == "close")
78  {
79  responseMessage[HttpMessage.GeneralHeadersEnum.Connection] = "close";
80  client.ToBeRemoved = true;
81  }
82  else
83  {
84  responseMessage[HttpMessage.GeneralHeadersEnum.Connection] = "keep-alive";
85  }
86  foreach(IHttpModule module in httpModules)
87  {
88  if(module.HandleRequest(server, this, client, httpMessage, ref responseMessage))
89  {
90  break;
91  }
92  }
93  QueueResponse(client, responseMessage);
94  return false;
95  }
102  bool IHandler.HandleSendMessage(Server server, ClientData client, ref Message message)
103  {
104  return false;
105  }
112  bool IHandler.PreHandleReceivedMessage(Server server, ClientData client, ref Message message)
113  {
114  return false;
115  }
119  void IHandler.Tick(Server server)
120  {
121  while (messageQueue.Count > 0)
122  {
123  Tuple<ClientData, HttpMessage> tuple = null;
124  if (messageQueue.TryDequeue(out tuple))
125  {
126  server.QueueMessage(tuple.Item1, tuple.Item2.GetResponse(true));
127  }
128  }
129  foreach (IHttpModule module in httpModules)
130  {
131  module.Tick(server, this);
132  }
133  }
134  #endregion
135  }
136 }
void QueueResponse(ClientData client, HttpMessage response)
Send a response back to the client.
Definition: HttpHandler.cs:42
+
Interface for communication handlers.
Definition: IHandler.cs:11
+
void Tick(Server.Server server, HttpHandler handler)
Perform periodic operations.
+
Structure containing client information.
Definition: Server.cs:402
+ + +
Handler for handling server http requests.
Definition: HttpHandler.cs:15
+ +
void ClientRemoved(Server server, ClientData client)
Handles the removal of a client from the server.
+ + +
Basic server class to handle TCP connections.
Definition: Server.cs:20
+
bool ContainsHeader(ResponseHeadersEnum header)
Check if the message contains a header.
Definition: HttpMessage.cs:462
+
bool HandleRequest(Server.Server server, HttpHandler handler, ClientData client, HttpMessage request, ref HttpMessage response)
Handle the received request.
+
HttpHandler AddHttpModule(IHttpModule module)
Add a http module onto the server.
Definition: HttpHandler.cs:33
+ +
Definition: Client.cs:14
+
void ParseRequest(byte[] requestBytes)
Parse the received bytes and populate the message contents.
Definition: HttpMessage.cs:247
+
Interface for Http modules used by the server http handler.
Definition: IHttpModule.cs:13
+
+
+ + + + diff --git a/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.dot b/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.dot new file mode 100644 index 0000000..6247e30 --- /dev/null +++ b/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "MTSC.Exceptions.InvalidFirstByteException" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node2 [label="MTSC.Exceptions.InvalidFirst\lByteException",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="Exception in case of first invalid byte for websocket communication."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.md5 b/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.md5 new file mode 100644 index 0000000..b8d4ead --- /dev/null +++ b/docs/df/dcc/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception__coll__graph.md5 @@ -0,0 +1 @@ +786ac080eea1c56df00a815e76bedd47 \ No newline at end of file diff --git a/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html b/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html new file mode 100644 index 0000000..d3dbe6a --- /dev/null +++ b/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html @@ -0,0 +1,123 @@ + + + + + + + +MTSC: MTSC.Common.Http.ServerModules Namespace Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.ServerModules Namespace Reference
+
+
+ + + + + + + + + + + + +

+Classes

class  FileServerModule
 
class  HelloWorldModule
 
class  Http404Module
 Simple module that returns status code 404. More...
 
interface  IHttpModule
 Interface for Http modules used by the server http handler. More...
 
+
+
+ + + + diff --git a/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.js b/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.js new file mode 100644 index 0000000..9c83e5a --- /dev/null +++ b/docs/df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.js @@ -0,0 +1,7 @@ +var namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules = +[ + [ "FileServerModule", "d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html", "d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module" ], + [ "HelloWorldModule", "d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html", null ], + [ "Http404Module", "dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html", null ], + [ "IHttpModule", "d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html", "d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module" ] +]; \ No newline at end of file diff --git a/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html b/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html new file mode 100644 index 0000000..cb145a7 --- /dev/null +++ b/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html @@ -0,0 +1,142 @@ + + + + + + + +MTSC: MTSC.Common.WebSockets.ClientModules.ChatModule Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.WebSockets.ClientModules.ChatModule Class Reference
+
+
+
+Inheritance diagram for MTSC.Common.WebSockets.ClientModules.ChatModule:
+
+
+ + +MTSC.Common.WebSockets.ClientModules.IWebsocketModule + +
+ + + + + + + + + + + + + + +

+Public Member Functions

+void SendMessage (WebsocketHandler websocketHandler, string message)
 
- Public Member Functions inherited from MTSC.Common.WebSockets.ClientModules.IWebsocketModule
void ConnectionInitialized (Client.Client client, WebsocketHandler handler)
 Called when a new websocket connection has been initialized. More...
 
bool HandleReceivedMessage (Client.Client client, WebsocketHandler handler, WebsocketMessage messageBytes)
 Handle received message. More...
 
void ConnectionClosed (Client.Client client, WebsocketHandler handler)
 Called when an existing websocket connection is being closed. More...
 
+

Detailed Description

+
+

Definition at line 10 of file ChatModule.cs.

+

The documentation for this class was generated from the following file:
    +
  • D:/Projects/MTSC/MTSC/Common/WebSockets/ClientModules/ChatModule.cs
  • +
+
+
+ + + + diff --git a/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.js b/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.js new file mode 100644 index 0000000..d060d2b --- /dev/null +++ b/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.js @@ -0,0 +1,4 @@ +var class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module = +[ + [ "SendMessage", "df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html#a693ca9f498725ee8acd15e04d78089ff", null ] +]; \ No newline at end of file diff --git a/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.png b/docs/df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a86a508f1b4e48e5e0fb2b6040af5a637ac02d GIT binary patch literal 1206 zcmeAS@N?(olHy`uVBq!ia0y~yV9W!u12~w0Bwuy@6(A)M;1lBd|Nnm=^USFm#)i%l zfGjXRaNxiuw?!sEE=Ng_UoZnu5eQs86=KA|z~buZ;uuoF_;&8=yf0cjuHx1~_y12k zf5t?BS#A2fYnRk_o?7R@5Pz-V@ATZ;+pcWOjc&Q2qN(axzy64>XQJ1gNg~VOjJDlx zuXBT{=7W^$2FPGoLn=N>kd48>7=7p@dtCPBSNBy>V!*+cA zz2zyJR!u(E%zI(omgSWP?n)b5?@pP${$Bgmon85N9=Vrae=hp&*X+5Erk(o2V`mq3 z+~BSMt?7>+HhyCj=PB>>sJ*#v?vHma z-%q5sSATfL_DDhN(uX;Z-(@{Ea#&w>n>T&?wbhG{J-x$!?c?3fcgxOm-m)ryzd`0yfeK2Yv)bfgn5Ub + + + + + + +MTSC: MTSC.Common.Http.HttpMessage Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MTSC.Common.Http.HttpMessage Class Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

enum  StatusCodes {
+  Continue = 100, +SwitchingProtocols = 101, +OK = 200, +Created = 201, +
+  Accepted = 202, +NonAuthoritativeInformation = 203, +NoContent = 204, +ResetContent = 205, +
+  PartialContent = 206, +MultipleChoices = 300, +MovedPermanently = 301, +Found = 302, +
+  SeeOther = 303, +NotModified = 304, +UseProxy = 305, +TemporaryRedirect = 307, +
+  BadRequest = 400, +Unauthorized = 401, +PaymentRequired = 402, +Forbidden = 403, +
+  NotFound = 404, +MethodNotAllowed = 405, +NotAcceptable = 406, +ProxyAuthenticationRequired = 407, +
+  RequestTimeout = 408, +Conflict = 409, +Gone = 410, +LengthRequired = 411, +
+  PreconditionFailed = 412, +RequestEntityTooLarge = 413, +RequestURITooLarge = 414, +UnsupportedMediaType = 415, +
+  RequestRangeNotSatisfiable = 416, +ExpectationFailed = 417, +InternalServerError = 500, +NotImplemented = 501, +
+  BadGateway = 502, +ServiceUnavailable = 503, +GatewayTimeout = 504, +HTTPVersionNotSupported = 505 +
+ }
 
enum  MethodEnum {
+  Options = 0, +Get = 1, +Head = 2, +Post = 3, +
+  Put = 4, +Delete = 5, +Trace = 6, +Connect = 7, +
+  ExtensionMethod = 8 +
+ }
 
enum  GeneralHeadersEnum {
+  CacheControl = 0, +Connection = 1, +Date = 2, +Pragma = 3, +
+  Trailer = 4, +TransferEncoding = 5, +Upgrade = 6, +Via = 7, +
+  Warning = 8 +
+ }
 
enum  RequestHeadersEnum {
+  Accept = 0, +AcceptCharset = 1, +AcceptEncoding = 2, +AcceptLanguage = 3, +
+  Authorization = 4, +Expect = 5, +From = 6, +Host = 7, +
+  IfMatch = 8, +IfModifiedSince = 9, +IfNoneMatch = 10, +IfRange = 11, +
+  IfUnmodifiedSince = 12, +MaxForwards = 13, +ProxyAuthorization = 14, +Range = 15, +
+  Referer = 16, +TE = 17, +UserAgent = 18 +
+ }
 
enum  ResponseHeadersEnum {
+  AcceptRanges = 0, +Age = 1, +ETag = 2, +Location = 3, +
+  ProxyAuthentication = 4, +RetryAfter = 5, +Server = 6, +Vary = 7, +
+  WWWAuthenticate = 8 +
+ }
 
enum  EntityHeadersEnum {
+  Allow = 0, +ContentEncoding = 1, +ContentLanguage = 2, +ContentLength = 3, +
+  ContentLocation = 4, +ContentMD5 = 5, +ContentRange = 6, +ContentType = 7, +
+  Expired = 8, +LastModified = 9 +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void AddGeneralHeader (GeneralHeadersEnum header, string value)
 Add a general header to the message. More...
 
void AddRequestHeader (RequestHeadersEnum requestHeader, string value)
 Add a request header to the message. More...
 
void AddResponseHeader (ResponseHeadersEnum responseHeader, string value)
 Add a response header to the message. More...
 
void AddEntityHeaders (EntityHeadersEnum entityHeader, string value)
 Add an entity header to the message. More...
 
byte [] GetRequest ()
 Build the request bytes based on the message contents. More...
 
void ParseRequest (byte[] requestBytes)
 Parse the received bytes and populate the message contents. More...
 
byte [] GetResponse (bool includeContentLengthHeader)
 Build the response bytes based on the message contents. More...
 
void ParseResponse (byte[] responseBytes)
 Parse the received bytes and populate the message contents. More...
 
bool ContainsHeader (ResponseHeadersEnum header)
 Check if the message contains a header. More...
 
bool ContainsHeader (RequestHeadersEnum header)
 Check if the message contains a header. More...
 
bool ContainsHeader (GeneralHeadersEnum header)
 Check if the message contains a header. More...
 
bool ContainsHeader (string header)
 Check if the message contains a header. More...
 
Dictionary< string, string > GetPostForm ()
 Parse the body into a posted from respecting the reference manual. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+MethodEnum Method [get, set]
 
+string RequestURI [get, set]
 
+string RequestQuery [get, set]
 
+byte [] Body [get, set]
 
+StatusCodes StatusCode [get, set]
 
string this[string headerKey] [get, set]
 Headers dictionary. More...
 
string this[GeneralHeadersEnum headerKey] [get, set]
 Headers dictionary. More...
 
string this[ResponseHeadersEnum headerKey] [get, set]
 Headers dictionary. More...
 
string this[RequestHeadersEnum headerKey] [get, set]
 Headers dictionary. More...
 
string this[EntityHeadersEnum headerKey] [get, set]
 Headers dictionary. More...
 
+

Detailed Description

+
+

Definition at line 8 of file HttpMessage.cs.

+

Member Function Documentation

+ +

◆ AddEntityHeaders()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.Http.HttpMessage.AddEntityHeaders (EntityHeadersEnum entityHeader,
string value 
)
+
+ +

Add an entity header to the message.

+
Parameters
+ + + +
entityHeaderHeader key.
valueHeader value.
+
+
+ +

Definition at line 217 of file HttpMessage.cs.

+ +
+
+ +

◆ AddGeneralHeader()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.Http.HttpMessage.AddGeneralHeader (GeneralHeadersEnum header,
string value 
)
+
+ +

Add a general header to the message.

+
Parameters
+ + + +
headerHeader key.
valueHeader value.
+
+
+ +

Definition at line 190 of file HttpMessage.cs.

+ +
+
+ +

◆ AddRequestHeader()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.Http.HttpMessage.AddRequestHeader (RequestHeadersEnum requestHeader,
string value 
)
+
+ +

Add a request header to the message.

+
Parameters
+ + + +
requestHeaderHeader key.
valueHeader value.
+
+
+ +

Definition at line 199 of file HttpMessage.cs.

+ +
+
+ +

◆ AddResponseHeader()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MTSC.Common.Http.HttpMessage.AddResponseHeader (ResponseHeadersEnum responseHeader,
string value 
)
+
+ +

Add a response header to the message.

+
Parameters
+ + + +
responseHeaderHeader key.
valueHeader value.
+
+
+ +

Definition at line 208 of file HttpMessage.cs.

+ +
+
+ +

◆ ContainsHeader() [1/4]

+ +
+
+ + + + + + + + +
bool MTSC.Common.Http.HttpMessage.ContainsHeader (ResponseHeadersEnum header)
+
+ +

Check if the message contains a header.

+
Parameters
+ + +
headerKey of the header.
+
+
+
Returns
True if the message contains a header with the provided key.
+ +

Definition at line 462 of file HttpMessage.cs.

+ +
+
+ +

◆ ContainsHeader() [2/4]

+ +
+
+ + + + + + + + +
bool MTSC.Common.Http.HttpMessage.ContainsHeader (RequestHeadersEnum header)
+
+ +

Check if the message contains a header.

+
Parameters
+ + +
headerKey of the header.
+
+
+
Returns
True if the message contains a header with the provided key.
+ +

Definition at line 471 of file HttpMessage.cs.

+ +
+
+ +

◆ ContainsHeader() [3/4]

+ +
+
+ + + + + + + + +
bool MTSC.Common.Http.HttpMessage.ContainsHeader (GeneralHeadersEnum header)
+
+ +

Check if the message contains a header.

+
Parameters
+ + +
headerKey of the header.
+
+
+
Returns
True if the message contains a header with the provided key.
+ +

Definition at line 480 of file HttpMessage.cs.

+ +
+
+ +

◆ ContainsHeader() [4/4]

+ +
+
+ + + + + + + + +
bool MTSC.Common.Http.HttpMessage.ContainsHeader (string header)
+
+ +

Check if the message contains a header.

+
Parameters
+ + +
headerKey of the header.
+
+
+
Returns
True if the message contains a header with the provided key.
+ +

Definition at line 489 of file HttpMessage.cs.

+ +
+
+ +

◆ GetPostForm()

+ +
+
+ + + + + + + +
Dictionary<string, string> MTSC.Common.Http.HttpMessage.GetPostForm ()
+
+ +

Parse the body into a posted from respecting the reference manual.

+
Returns
Dictionary with posted from.
+ +

Definition at line 497 of file HttpMessage.cs.

+ +
+
+ +

◆ GetRequest()

+ +
+
+ + + + + + + +
byte [] MTSC.Common.Http.HttpMessage.GetRequest ()
+
+ +

Build the request bytes based on the message contents.

+
Returns
Array of bytes.
+ +

Definition at line 225 of file HttpMessage.cs.

+ +
+
+ +

◆ GetResponse()

+ +
+
+ + + + + + + + +
byte [] MTSC.Common.Http.HttpMessage.GetResponse (bool includeContentLengthHeader)
+
+ +

Build the response bytes based on the message contents.

+
Parameters
+ + +
includeContentLengthHeaderIf set to true, add an extra Content-Length header specifying the length of the body.
+
+
+
Returns
Array of bytes.
+ +

Definition at line 345 of file HttpMessage.cs.

+ +
+
+ +

◆ ParseRequest()

+ +
+
+ + + + + + + + +
void MTSC.Common.Http.HttpMessage.ParseRequest (byte [] requestBytes)
+
+ +

Parse the received bytes and populate the message contents.

+
Parameters
+ + +
requestBytesMessage bytes to be parsed.
+
+
+ +

Definition at line 247 of file HttpMessage.cs.

+ +
+
+ +

◆ ParseResponse()

+ +
+
+ + + + + + + + +
void MTSC.Common.Http.HttpMessage.ParseResponse (byte [] responseBytes)
+
+ +

Parse the received bytes and populate the message contents.

+
Parameters
+ + +
responseBytesArray of bytes to be parsed.
+
+
+ +

Definition at line 375 of file HttpMessage.cs.

+ +
+
+

Property Documentation

+ +

◆ this[EntityHeadersEnum headerKey]

+ +
+
+ + + + + +
+ + + + +
string MTSC.Common.Http.HttpMessage.this[EntityHeadersEnum headerKey]
+
+getset
+
+ +

Headers dictionary.

+
Parameters
+ + +
headerKeyKey of the header.
+
+
+
Returns
Value of the header.
+ +

Definition at line 184 of file HttpMessage.cs.

+ +
+
+ +

◆ this[GeneralHeadersEnum headerKey]

+ +
+
+ + + + + +
+ + + + +
string MTSC.Common.Http.HttpMessage.this[GeneralHeadersEnum headerKey]
+
+getset
+
+ +

Headers dictionary.

+
Parameters
+ + +
headerKeyKey of the header.
+
+
+
Returns
Value of the header.
+ +

Definition at line 166 of file HttpMessage.cs.

+ +
+
+ +

◆ this[RequestHeadersEnum headerKey]

+ +
+
+ + + + + +
+ + + + +
string MTSC.Common.Http.HttpMessage.this[RequestHeadersEnum headerKey]
+
+getset
+
+ +

Headers dictionary.

+
Parameters
+ + +
headerKeyKey of the header.
+
+
+
Returns
Value of the header.
+ +

Definition at line 178 of file HttpMessage.cs.

+ +
+
+ +

◆ this[ResponseHeadersEnum headerKey]

+ +
+
+ + + + + +
+ + + + +
string MTSC.Common.Http.HttpMessage.this[ResponseHeadersEnum headerKey]
+
+getset
+
+ +

Headers dictionary.

+
Parameters
+ + +
headerKeyKey of the header.
+
+
+
Returns
Value of the header.
+ +

Definition at line 172 of file HttpMessage.cs.

+ +
+
+ +

◆ this[string headerKey]

+ +
+
+ + + + + +
+ + + + +
string MTSC.Common.Http.HttpMessage.this[string headerKey]
+
+getset
+
+ +

Headers dictionary.

+
Parameters
+ + +
headerKeyKey of the header.
+
+
+
Returns
Value of the header.
+ +

Definition at line 160 of file HttpMessage.cs.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs/df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.js b/docs/df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.js new file mode 100644 index 0000000..7b9e6f5 --- /dev/null +++ b/docs/df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.js @@ -0,0 +1,135 @@ +var class_m_t_s_c_1_1_common_1_1_http_1_1_http_message = +[ + [ "EntityHeadersEnum", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0", [ + [ "Allow", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a45f0fb72a0defdfdb01de4b5a5a6876b", null ], + [ "ContentEncoding", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a94b393cfdfb356ba5e95a9f0f552e5f4", null ], + [ "ContentLanguage", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a89605743f4f361ed80572f7e6b552886", null ], + [ "ContentLength", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a132d1f967127cbce22710ae8939b0ad3", null ], + [ "ContentLocation", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0ab26f70c88f76ea0bb0e43d77189e04bc", null ], + [ "ContentMD5", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a64abb03bef870bfc54b15e0022bde75a", null ], + [ "ContentRange", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a93d83df6cb26cf9359ef1b111c2d3de9", null ], + [ "ContentType", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0ab8178dd7819d7531e93b9d8112c16e11", null ], + [ "Expired", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0a24fe48030f7d3097d5882535b04c3fa8", null ], + [ "LastModified", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a921133650bdb1352352e9bfc94cfe0f0ae262f42297bdd5776f68bd3b43868a16", null ] + ] ], + [ "GeneralHeadersEnum", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3", [ + [ "CacheControl", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3a9499572d046f5c2faebd1050147d7a68", null ], + [ "Connection", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3ac2cc7082a89c1ad6631a2f66af5f00c0", null ], + [ "Date", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3a44749712dbec183e983dcd78a7736c41", null ], + [ "Pragma", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3af607fdcea4127aad4f0cdae948a4f3f7", null ], + [ "Trailer", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3a7777d162b1fa729345ddb7de48654012", null ], + [ "TransferEncoding", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3a5a34a26799128ce8229982506e8f7398", null ], + [ "Upgrade", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3af683581d3e75f05f9d9215f9b4696cef", null ], + [ "Via", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3ad794d3f7b3a0a8fdbd7582f6cacb5de0", null ], + [ "Warning", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a64038f009478db2a0f73736baab372d3a0eaadb4fcb48a0a0ed7bc9868be9fbaa", null ] + ] ], + [ "MethodEnum", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204f", [ + [ "Options", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fadae8ace18bdcbcc6ae5aece263e14fe8", null ], + [ "Get", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fac55582518cba2c464f29f5bae1c68def", null ], + [ "Head", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fa98921133d10fbdb0fb6dbb7b2648befe", null ], + [ "Post", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fa03d947a2158373c3b9d74325850cb8b9", null ], + [ "Put", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fad0bf1810982e9728fcf3ac444a015373", null ], + [ "Delete", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204faf2a6c498fb90ee345d997f888fce3b18", null ], + [ "Trace", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fadd4ec0ac4e58f7c32a01244ae91150b1", null ], + [ "Connect", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fa49ab28040dfa07f53544970c6d147e1e", null ], + [ "ExtensionMethod", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a81cd0ed968fbead9d58013e20781204fab4b459723783455f351a8dffeca16ba4", null ] + ] ], + [ "RequestHeadersEnum", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6", [ + [ "Accept", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6ac4408d335012a56ff58937d78050efad", null ], + [ "AcceptCharset", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6aeb5379f6a18ebd4bb7e8b8308fe7a635", null ], + [ "AcceptEncoding", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a47fd783476889265dd4b92dee87225a6", null ], + [ "AcceptLanguage", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6aaba45ed0d8bc2eda624f56caad3abf40", null ], + [ "Authorization", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a9cd8a2455b1839ff98ef70c05b9b5983", null ], + [ "Expect", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a7f036407d75c774176a7effbe959366b", null ], + [ "From", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a5da618e8e4b89c66fe86e32cdafde142", null ], + [ "Host", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6ac2ca16d048ec66e04bca283eab048ec2", null ], + [ "IfMatch", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6ac518519c3fc8af1cb7cc73111419feab", null ], + [ "IfModifiedSince", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a9bfede32ce846ff11527e145f6e9d12b", null ], + [ "IfNoneMatch", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a6947efa30b7a4b701974f68105e333e5", null ], + [ "IfRange", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a568c1c30703cbe23863f072b7a58d4ad", null ], + [ "IfUnmodifiedSince", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a7ab474ae484d7d38c978ab3b46584baa", null ], + [ "MaxForwards", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6ad382272d35e62a3d9d96d3e14b8368b1", null ], + [ "ProxyAuthorization", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6ab1d325fe085c6078662aeeb18c98b3ee", null ], + [ "Range", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a87ba2ecc8b6915e8bd6f5089918229fd", null ], + [ "Referer", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a6144bb91c094de745cab7863f75f7ba6", null ], + [ "TE", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a83f56f37a245ccaf8c885814074777f6", null ], + [ "UserAgent", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aed05e397178ac91224e98040b9292bb6a7a1c9344ffcbe2316169f2cbbc867973", null ] + ] ], + [ "ResponseHeadersEnum", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bc", [ + [ "AcceptRanges", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bca2a0f9c5ce0ab16d6359fe86bc8c5c1fe", null ], + [ "Age", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bca9d8d2d5ab12b515182a505f54db7f538", null ], + [ "ETag", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bca611a2b5dcde004cf68ffd56345584d40", null ], + [ "Location", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bcace5bf551379459c1c61d2a204061c455", null ], + [ "ProxyAuthentication", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bcaa06c24787ac2c9d2391c9e43ea36616c", null ], + [ "RetryAfter", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bcafe8b9b68b9708454a8b46f8a5b7457bd", null ], + [ "Server", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bca9aa1b03934893d7134a660af4204f2a9", null ], + [ "Vary", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bcad82a834165b99c4ea0969316296a2bc2", null ], + [ "WWWAuthenticate", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#aa8b86f07257008958988a0d323daf9bca2384aa66f91dec54bc2a635481d473dd", null ] + ] ], + [ "StatusCodes", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93", [ + [ "Continue", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93aa0bfb8e59e6c13fc8d990781f77694fe", null ], + [ "SwitchingProtocols", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a548c5a637eddf65132b21411aeafc6a1", null ], + [ "OK", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93ae0aa021e21dddbd6d8cecec71e9cf564", null ], + [ "Created", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a0eceeb45861f9585dd7a97a3e36f85c6", null ], + [ "Accepted", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a382ab522931673c11e398ead1b7b1678", null ], + [ "NonAuthoritativeInformation", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a2d0ea43e788b779c0aec92366b711c2f", null ], + [ "NoContent", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93acd447f1ec89f564ebac583d60087df12", null ], + [ "ResetContent", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a4e9202c31896211f63be5b7345a897ed", null ], + [ "PartialContent", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a750de7eda10d780b3bbaefb57128c24b", null ], + [ "MultipleChoices", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93aa589749d075c3423333bdc93e3b4e774", null ], + [ "MovedPermanently", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a32638c25f4c913fce6214c2c4afff9dc", null ], + [ "Found", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a5d695cc28c6a7ea955162fbdd0ae42b9", null ], + [ "SeeOther", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a7843649eb3841f496a79303fd815029e", null ], + [ "NotModified", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93ac169e6d9a1b9442001384de8dcf49ab9", null ], + [ "UseProxy", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a0a272f25fd5e8a06065ef8ee41a88bea", null ], + [ "TemporaryRedirect", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a1b73a351faf2b550d06fae9cc6e0a894", null ], + [ "BadRequest", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a9edf8fbf00a57d95a0af4923c9a1ec6f", null ], + [ "Unauthorized", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93ae06d1ba70f1331e9f9a113cc2f887d3f", null ], + [ "PaymentRequired", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a4c99006c75b53fe48865cdfa0ac065ba", null ], + [ "Forbidden", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a722969577a96ca3953e84e3d949dee81", null ], + [ "NotFound", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a38c300f4fc9ce8a77aad4a30de05cad8", null ], + [ "MethodNotAllowed", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a8ba68fee5542f5fd071aed140c39bd8e", null ], + [ "NotAcceptable", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93af83a928e6a3f3b502ffadd2a414ce48c", null ], + [ "ProxyAuthenticationRequired", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a59a2898a8bf9da75a5855e76110f06f2", null ], + [ "RequestTimeout", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a3632c2e4e6225d4d9fcd2a6fd2c65048", null ], + [ "Conflict", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93af1d4ac54357cc0932f385d56814ba7e4", null ], + [ "Gone", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a0b497b33b1a05057bc1634e607170bf6", null ], + [ "LengthRequired", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a8282fb93cb1cf45b135ea191668ca583", null ], + [ "PreconditionFailed", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a3542a02d18f11f46d53990d91752a6d4", null ], + [ "RequestEntityTooLarge", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a1d2dd18ee1a925e5887cbc2f9202e779", null ], + [ "RequestURITooLarge", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a4896a92527b74e68134933dcb77a7017", null ], + [ "UnsupportedMediaType", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93aa3219a6843adbb23de79b4df9c307f5d", null ], + [ "RequestRangeNotSatisfiable", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a8aebe7aae400f2d81ea72f08cf8da83e", null ], + [ "ExpectationFailed", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a6af78095a2be4a230ba87f03dd131830", null ], + [ "InternalServerError", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93aecbf01325f1c744e9d7bb586ac2eb5ed", null ], + [ "NotImplemented", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a997ca4ce119685f40f03a9a8a6c5346e", null ], + [ "BadGateway", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a0e7c9ad08be0653518bf456c9994ace5", null ], + [ "ServiceUnavailable", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a2a4581043d849bcb0e4747970ef1489b", null ], + [ "GatewayTimeout", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93ada405cbc74723dfdda615e3f679ef2be", null ], + [ "HTTPVersionNotSupported", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a593bfe14671a26d05c6abc5a03642a93a036c4283fc4ecb1686f44462f75208e5", null ] + ] ], + [ "HttpMessage", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#af71e0ec107f46975a65a22620dcff051", null ], + [ "AddEntityHeaders", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#abe600f8b5b6dcff10ec21999229ec4ba", null ], + [ "AddGeneralHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a959c91a346a8fc3fd21cc8b3ff5f4c88", null ], + [ "AddRequestHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a598978cd10bc3160ab2656d59596b27e", null ], + [ "AddResponseHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a354738dd74b0be81f81f2ce25e02f39e", null ], + [ "ContainsHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab2112e24bfb1830b9061d9f804246316", null ], + [ "ContainsHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a97021b8cc907ff0a9dc47ad5cbd37a89", null ], + [ "ContainsHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a5d224be02f00fc5793efdfd9bc659725", null ], + [ "ContainsHeader", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a020cf8a3319bad005fb7dc66cfe40ce6", null ], + [ "GetPostForm", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a82a557dc8206fb11dfb17e0fb72aa7d0", null ], + [ "GetRequest", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#acef383459a1111f43d8912a8d386ff7b", null ], + [ "GetResponse", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a27858b4066156d6ad11c3c38694fa7b5", null ], + [ "ParseRequest", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a85656b5625b7572777ab218ba345f612", null ], + [ "ParseResponse", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a039d2c6c8d2a0d26ca0432fbe0a372cf", null ], + [ "Body", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a1dc48f77e0badb0151d4be5b79caabf0", null ], + [ "Method", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a5fcd6f0dc796a74e36c3caa4e2958630", null ], + [ "RequestQuery", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a293dd77642bcdd3fb11721a1b868fe8c", null ], + [ "RequestURI", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a3c241b1c28e779cff58e5de4b2a9bf23", null ], + [ "StatusCode", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#af9ff2f1e7b774c73bde7d1f06c62dc2b", null ], + [ "this[EntityHeadersEnum headerKey]", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab321ca65351ec6f136003703c0149535", null ], + [ "this[GeneralHeadersEnum headerKey]", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7feec018ede979bceaa2526ae31e9b49", null ], + [ "this[RequestHeadersEnum headerKey]", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7d39f260b970569a93b19005abf5006a", null ], + [ "this[ResponseHeadersEnum headerKey]", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a6346e2f51cb58303646014cef59393c9", null ], + [ "this[string headerKey]", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7a7505189a9f2a15ce0a563fcf1ac246", null ] +]; \ No newline at end of file diff --git a/docs/dir_060ae041221bd5ec93acd9997d59bc4a.html b/docs/dir_060ae041221bd5ec93acd9997d59bc4a.html new file mode 100644 index 0000000..fac1f77 --- /dev/null +++ b/docs/dir_060ae041221bd5ec93acd9997d59bc4a.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client/Handlers Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Handlers Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_060ae041221bd5ec93acd9997d59bc4a.js b/docs/dir_060ae041221bd5ec93acd9997d59bc4a.js new file mode 100644 index 0000000..b78c480 --- /dev/null +++ b/docs/dir_060ae041221bd5ec93acd9997d59bc4a.js @@ -0,0 +1,8 @@ +var dir_060ae041221bd5ec93acd9997d59bc4a = +[ + [ "BroadcastHandler.cs", "d8/d3e/_client_2_handlers_2_broadcast_handler_8cs_source.html", null ], + [ "EncryptionHandler.cs", "d3/d42/_client_2_handlers_2_encryption_handler_8cs_source.html", null ], + [ "HttpHandler.cs", "d9/d13/_client_2_handlers_2_http_handler_8cs_source.html", null ], + [ "IHandler.cs", "d3/d96/_client_2_handlers_2_i_handler_8cs_source.html", null ], + [ "WebsocketHandler.cs", "d1/d35/_client_2_handlers_2_websocket_handler_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.html b/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.html new file mode 100644 index 0000000..454c5a7 --- /dev/null +++ b/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
WebSockets Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.js b/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.js new file mode 100644 index 0000000..21f4da5 --- /dev/null +++ b/docs/dir_191ea0d58bc4aa76598804cf9a9a4081.js @@ -0,0 +1,6 @@ +var dir_191ea0d58bc4aa76598804cf9a9a4081 = +[ + [ "ClientModules", "dir_2bed625b8678336fd3428040269a7e1f.html", "dir_2bed625b8678336fd3428040269a7e1f" ], + [ "ServerModules", "dir_3e6c9ca704d5ac39bea56d7971e0d054.html", "dir_3e6c9ca704d5ac39bea56d7971e0d054" ], + [ "WebsocketMessage.cs", "d0/da0/_websocket_message_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.html b/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.html new file mode 100644 index 0000000..7feb4c0 --- /dev/null +++ b/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net48 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
net48 Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.js b/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.js new file mode 100644 index 0000000..3767c4c --- /dev/null +++ b/docs/dir_1c549a8c0368fbf2d31a8f8dc0a70690.js @@ -0,0 +1,7 @@ +var dir_1c549a8c0368fbf2d31a8f8dc0a70690 = +[ + [ "MTSC.AssemblyInfo.cs", "d3/db9/_release_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html", null ], + [ "TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs", "db/db3/_release_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html", null ], + [ "TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs", "d9/deb/_release_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html", null ], + [ "TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs", "d8/d8a/_release_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.html b/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.html new file mode 100644 index 0000000..fc408d6 --- /dev/null +++ b/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Common Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.js b/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.js new file mode 100644 index 0000000..a20b299 --- /dev/null +++ b/docs/dir_2b786a618fa1a35d0fa6c1f0a951f035.js @@ -0,0 +1,5 @@ +var dir_2b786a618fa1a35d0fa6c1f0a951f035 = +[ + [ "Http", "dir_d18f251565efce6e2c7efbad3e34f789.html", "dir_d18f251565efce6e2c7efbad3e34f789" ], + [ "WebSockets", "dir_191ea0d58bc4aa76598804cf9a9a4081.html", "dir_191ea0d58bc4aa76598804cf9a9a4081" ] +]; \ No newline at end of file diff --git a/docs/dir_2bed625b8678336fd3428040269a7e1f.html b/docs/dir_2bed625b8678336fd3428040269a7e1f.html new file mode 100644 index 0000000..e22db91 --- /dev/null +++ b/docs/dir_2bed625b8678336fd3428040269a7e1f.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ClientModules Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ClientModules Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_2bed625b8678336fd3428040269a7e1f.js b/docs/dir_2bed625b8678336fd3428040269a7e1f.js new file mode 100644 index 0000000..63dd98d --- /dev/null +++ b/docs/dir_2bed625b8678336fd3428040269a7e1f.js @@ -0,0 +1,5 @@ +var dir_2bed625b8678336fd3428040269a7e1f = +[ + [ "ChatModule.cs", "db/dbd/_chat_module_8cs_source.html", null ], + [ "IWebsocketModule.cs", "d7/d60/_client_modules_2_i_websocket_module_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_358eb219223b877d278b694a4705d823.html b/docs/dir_358eb219223b877d278b694a4705d823.html new file mode 100644 index 0000000..585e196 --- /dev/null +++ b/docs/dir_358eb219223b877d278b694a4705d823.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Debug Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_358eb219223b877d278b694a4705d823.js b/docs/dir_358eb219223b877d278b694a4705d823.js new file mode 100644 index 0000000..9d1b188 --- /dev/null +++ b/docs/dir_358eb219223b877d278b694a4705d823.js @@ -0,0 +1,5 @@ +var dir_358eb219223b877d278b694a4705d823 = +[ + [ "net48", "dir_71304019a3d358fe52b6a8280ce6c97c.html", "dir_71304019a3d358fe52b6a8280ce6c97c" ], + [ "netcoreapp2.1", "dir_e1cb8f9b823681a26481b9089f7b7776.html", "dir_e1cb8f9b823681a26481b9089f7b7776" ] +]; \ No newline at end of file diff --git a/docs/dir_3c5620eb11971a15737f9176b123ece0.html b/docs/dir_3c5620eb11971a15737f9176b123ece0.html new file mode 100644 index 0000000..68b36e2 --- /dev/null +++ b/docs/dir_3c5620eb11971a15737f9176b123ece0.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ClientModules Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ClientModules Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_3c5620eb11971a15737f9176b123ece0.js b/docs/dir_3c5620eb11971a15737f9176b123ece0.js new file mode 100644 index 0000000..7f21dd4 --- /dev/null +++ b/docs/dir_3c5620eb11971a15737f9176b123ece0.js @@ -0,0 +1,4 @@ +var dir_3c5620eb11971a15737f9176b123ece0 = +[ + [ "IHttpModule.cs", "dd/d58/_client_modules_2_i_http_module_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.html b/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.html new file mode 100644 index 0000000..04de16c --- /dev/null +++ b/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/WebSockets/ServerModules Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ServerModules Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.js b/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.js new file mode 100644 index 0000000..1399d68 --- /dev/null +++ b/docs/dir_3e6c9ca704d5ac39bea56d7971e0d054.js @@ -0,0 +1,6 @@ +var dir_3e6c9ca704d5ac39bea56d7971e0d054 = +[ + [ "BroadcastModule.cs", "db/d68/_broadcast_module_8cs_source.html", null ], + [ "EchoModule.cs", "d2/d29/_echo_module_8cs_source.html", null ], + [ "IWebsocketModule.cs", "d5/d1b/_server_modules_2_i_websocket_module_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_3f72314963399eb45a5e5610bf0cc145.html b/docs/dir_3f72314963399eb45a5e5610bf0cc145.html new file mode 100644 index 0000000..1107c83 --- /dev/null +++ b/docs/dir_3f72314963399eb45a5e5610bf0cc145.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Client Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Client Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_3f72314963399eb45a5e5610bf0cc145.js b/docs/dir_3f72314963399eb45a5e5610bf0cc145.js new file mode 100644 index 0000000..45ebdcf --- /dev/null +++ b/docs/dir_3f72314963399eb45a5e5610bf0cc145.js @@ -0,0 +1,5 @@ +var dir_3f72314963399eb45a5e5610bf0cc145 = +[ + [ "Handlers", "dir_060ae041221bd5ec93acd9997d59bc4a.html", "dir_060ae041221bd5ec93acd9997d59bc4a" ], + [ "Client.cs", "db/d43/_client_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.html b/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.html new file mode 100644 index 0000000..67c3d17 --- /dev/null +++ b/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/netcoreapp2.1 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
netcoreapp2.1 Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.js b/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.js new file mode 100644 index 0000000..52148bb --- /dev/null +++ b/docs/dir_463cd4dabdde5d8586315ca59a2d23c1.js @@ -0,0 +1,7 @@ +var dir_463cd4dabdde5d8586315ca59a2d23c1 = +[ + [ "MTSC.AssemblyInfo.cs", "dd/d39/_release_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html", null ], + [ "TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs", "d7/db9/_release_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html", null ], + [ "TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs", "d8/d00/_release_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html", null ], + [ "TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs", "dd/d31/_release_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_57b0082ffa0af670f404eda33c530396.html b/docs/dir_57b0082ffa0af670f404eda33c530396.html new file mode 100644 index 0000000..efe063d --- /dev/null +++ b/docs/dir_57b0082ffa0af670f404eda33c530396.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
obj Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_57b0082ffa0af670f404eda33c530396.js b/docs/dir_57b0082ffa0af670f404eda33c530396.js new file mode 100644 index 0000000..4d9a38f --- /dev/null +++ b/docs/dir_57b0082ffa0af670f404eda33c530396.js @@ -0,0 +1,5 @@ +var dir_57b0082ffa0af670f404eda33c530396 = +[ + [ "Debug", "dir_358eb219223b877d278b694a4705d823.html", "dir_358eb219223b877d278b694a4705d823" ], + [ "Release", "dir_d2dabb60356392c82b7650f84b0a3306.html", "dir_d2dabb60356392c82b7650f84b0a3306" ] +]; \ No newline at end of file diff --git a/docs/dir_62d48bea4fe746cedac2516f67715e2f.html b/docs/dir_62d48bea4fe746cedac2516f67715e2f.html new file mode 100644 index 0000000..25fbd45 --- /dev/null +++ b/docs/dir_62d48bea4fe746cedac2516f67715e2f.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_62d48bea4fe746cedac2516f67715e2f.js b/docs/dir_62d48bea4fe746cedac2516f67715e2f.js new file mode 100644 index 0000000..d0a3902 --- /dev/null +++ b/docs/dir_62d48bea4fe746cedac2516f67715e2f.js @@ -0,0 +1,4 @@ +var dir_62d48bea4fe746cedac2516f67715e2f = +[ + [ "MTSC", "dir_dd7589cd703d467b08715c004924abac.html", "dir_dd7589cd703d467b08715c004924abac" ] +]; \ No newline at end of file diff --git a/docs/dir_70c99956df21f970f9dba0c1e1740f5c.html b/docs/dir_70c99956df21f970f9dba0c1e1740f5c.html new file mode 100644 index 0000000..a21a1c2 --- /dev/null +++ b/docs/dir_70c99956df21f970f9dba0c1e1740f5c.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server/Handlers Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Handlers Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_70c99956df21f970f9dba0c1e1740f5c.js b/docs/dir_70c99956df21f970f9dba0c1e1740f5c.js new file mode 100644 index 0000000..00023e4 --- /dev/null +++ b/docs/dir_70c99956df21f970f9dba0c1e1740f5c.js @@ -0,0 +1,8 @@ +var dir_70c99956df21f970f9dba0c1e1740f5c = +[ + [ "BroadcastHandler.cs", "db/d9a/_server_2_handlers_2_broadcast_handler_8cs_source.html", null ], + [ "EncryptionHandler.cs", "d7/d00/_server_2_handlers_2_encryption_handler_8cs_source.html", null ], + [ "HttpHandler.cs", "df/db4/_server_2_handlers_2_http_handler_8cs_source.html", null ], + [ "IHandler.cs", "dc/da7/_server_2_handlers_2_i_handler_8cs_source.html", null ], + [ "WebsocketHandler.cs", "d8/d00/_server_2_handlers_2_websocket_handler_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_71304019a3d358fe52b6a8280ce6c97c.html b/docs/dir_71304019a3d358fe52b6a8280ce6c97c.html new file mode 100644 index 0000000..193c230 --- /dev/null +++ b/docs/dir_71304019a3d358fe52b6a8280ce6c97c.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/net48 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
net48 Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_71304019a3d358fe52b6a8280ce6c97c.js b/docs/dir_71304019a3d358fe52b6a8280ce6c97c.js new file mode 100644 index 0000000..5f10d42 --- /dev/null +++ b/docs/dir_71304019a3d358fe52b6a8280ce6c97c.js @@ -0,0 +1,7 @@ +var dir_71304019a3d358fe52b6a8280ce6c97c = +[ + [ "MTSC.AssemblyInfo.cs", "d8/d92/_debug_2net48_2_m_t_s_c_8_assembly_info_8cs_source.html", null ], + [ "TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs", "d4/d6d/_debug_2net48_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html", null ], + [ "TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs", "df/d65/_debug_2net48_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html", null ], + [ "TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs", "d7/d42/_debug_2net48_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.html b/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.html new file mode 100644 index 0000000..eaffc26 --- /dev/null +++ b/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Server Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Server Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.js b/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.js new file mode 100644 index 0000000..511e596 --- /dev/null +++ b/docs/dir_7299b3d9bb46b9d6bcfef12b634e889c.js @@ -0,0 +1,5 @@ +var dir_7299b3d9bb46b9d6bcfef12b634e889c = +[ + [ "Handlers", "dir_70c99956df21f970f9dba0c1e1740f5c.html", "dir_70c99956df21f970f9dba0c1e1740f5c" ], + [ "Server.cs", "d8/dba/_server_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.html b/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.html new file mode 100644 index 0000000..e912d6b --- /dev/null +++ b/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release/net45 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
net45 Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.js b/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.js new file mode 100644 index 0000000..30078bd --- /dev/null +++ b/docs/dir_9a2c1c90aeb7330df3888fc4e386572a.js @@ -0,0 +1,7 @@ +var dir_9a2c1c90aeb7330df3888fc4e386572a = +[ + [ "MTSC.AssemblyInfo.cs", "d3/d4e/_release_2net45_2_m_t_s_c_8_assembly_info_8cs_source.html", null ], + [ "TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs", "d2/d00/_release_2net45_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html", null ], + [ "TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs", "d8/d77/_release_2net45_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html", null ], + [ "TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs", "d9/d83/_release_2net45_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html b/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html new file mode 100644 index 0000000..197ca12 --- /dev/null +++ b/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Logging Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Logging Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.js b/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.js new file mode 100644 index 0000000..2b80192 --- /dev/null +++ b/docs/dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.js @@ -0,0 +1,6 @@ +var dir_9dfefe4e1ff2dafff0ff7b183fb80a5d = +[ + [ "ConsoleLogger.cs", "d4/d2e/_console_logger_8cs_source.html", null ], + [ "DebugConsoleLogger.cs", "d2/dfb/_debug_console_logger_8cs_source.html", null ], + [ "ILogger.cs", "d3/de1/_i_logger_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.html b/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.html new file mode 100644 index 0000000..679fdd9 --- /dev/null +++ b/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Exceptions Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Exceptions Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.js b/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.js new file mode 100644 index 0000000..13448e1 --- /dev/null +++ b/docs/dir_aacd352a84a4f5db43a6bb63759aa0e5.js @@ -0,0 +1,15 @@ +var dir_aacd352a84a4f5db43a6bb63759aa0e5 = +[ + [ "ExceptionConsoleLogger.cs", "db/d27/_exception_console_logger_8cs_source.html", null ], + [ "ExceptionThrower.cs", "de/d19/_exception_thrower_8cs_source.html", null ], + [ "IExceptionHandler.cs", "d3/df4/_i_exception_handler_8cs_source.html", null ], + [ "InvalidFirstByteException.cs", "dd/df1/_invalid_first_byte_exception_8cs_source.html", null ], + [ "InvalidHeaderException.cs", "d1/d6d/_invalid_header_exception_8cs_source.html", null ], + [ "InvalidHttpVersionException.cs", "de/d28/_invalid_http_version_exception_8cs_source.html", null ], + [ "InvalidPostFormException.cs", "d5/dc6/_invalid_post_form_exception_8cs_source.html", null ], + [ "InvalidRequestURIException.cs", "d8/d17/_invalid_request_u_r_i_exception_8cs_source.html", null ], + [ "InvalidStatusCodeException.cs", "dc/dc2/_invalid_status_code_exception_8cs_source.html", null ], + [ "InvalidWebsocketFormatException.cs", "d1/d39/_invalid_websocket_format_exception_8cs_source.html", null ], + [ "MethodInvalidException.cs", "de/d73/_method_invalid_exception_8cs_source.html", null ], + [ "NoDataException.cs", "d6/dda/_no_data_exception_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_d18f251565efce6e2c7efbad3e34f789.html b/docs/dir_d18f251565efce6e2c7efbad3e34f789.html new file mode 100644 index 0000000..cd7086b --- /dev/null +++ b/docs/dir_d18f251565efce6e2c7efbad3e34f789.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Http Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_d18f251565efce6e2c7efbad3e34f789.js b/docs/dir_d18f251565efce6e2c7efbad3e34f789.js new file mode 100644 index 0000000..7a7ff5a --- /dev/null +++ b/docs/dir_d18f251565efce6e2c7efbad3e34f789.js @@ -0,0 +1,6 @@ +var dir_d18f251565efce6e2c7efbad3e34f789 = +[ + [ "ClientModules", "dir_3c5620eb11971a15737f9176b123ece0.html", "dir_3c5620eb11971a15737f9176b123ece0" ], + [ "ServerModules", "dir_d55ee0fc9b1e69611b98eb45cbf91143.html", "dir_d55ee0fc9b1e69611b98eb45cbf91143" ], + [ "HttpMessage.cs", "d5/d98/_http_message_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_d2dabb60356392c82b7650f84b0a3306.html b/docs/dir_d2dabb60356392c82b7650f84b0a3306.html new file mode 100644 index 0000000..092c864 --- /dev/null +++ b/docs/dir_d2dabb60356392c82b7650f84b0a3306.html @@ -0,0 +1,111 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Release Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Release Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/docs/dir_d2dabb60356392c82b7650f84b0a3306.js b/docs/dir_d2dabb60356392c82b7650f84b0a3306.js new file mode 100644 index 0000000..577a10a --- /dev/null +++ b/docs/dir_d2dabb60356392c82b7650f84b0a3306.js @@ -0,0 +1,6 @@ +var dir_d2dabb60356392c82b7650f84b0a3306 = +[ + [ "net45", "dir_9a2c1c90aeb7330df3888fc4e386572a.html", "dir_9a2c1c90aeb7330df3888fc4e386572a" ], + [ "net48", "dir_1c549a8c0368fbf2d31a8f8dc0a70690.html", "dir_1c549a8c0368fbf2d31a8f8dc0a70690" ], + [ "netcoreapp2.1", "dir_463cd4dabdde5d8586315ca59a2d23c1.html", "dir_463cd4dabdde5d8586315ca59a2d23c1" ] +]; \ No newline at end of file diff --git a/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.html b/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.html new file mode 100644 index 0000000..9d01a57 --- /dev/null +++ b/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/Common/Http/ServerModules Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ServerModules Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.js b/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.js new file mode 100644 index 0000000..0f8cd12 --- /dev/null +++ b/docs/dir_d55ee0fc9b1e69611b98eb45cbf91143.js @@ -0,0 +1,7 @@ +var dir_d55ee0fc9b1e69611b98eb45cbf91143 = +[ + [ "FileServerModule.cs", "dd/de1/_file_server_module_8cs_source.html", null ], + [ "HelloWorldModule.cs", "d3/d3f/_hello_world_module_8cs_source.html", null ], + [ "Http404Module.cs", "d3/d41/_http404_module_8cs_source.html", null ], + [ "IHttpModule.cs", "da/ded/_server_modules_2_i_http_module_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_dd7589cd703d467b08715c004924abac.html b/docs/dir_dd7589cd703d467b08715c004924abac.html new file mode 100644 index 0000000..504edca --- /dev/null +++ b/docs/dir_dd7589cd703d467b08715c004924abac.html @@ -0,0 +1,115 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC Directory Reference
+
+
+ + + + + + +

+Directories

directory  Common
 
directory  obj
 
+
+
+ + + + diff --git a/docs/dir_dd7589cd703d467b08715c004924abac.js b/docs/dir_dd7589cd703d467b08715c004924abac.js new file mode 100644 index 0000000..5b0a0b6 --- /dev/null +++ b/docs/dir_dd7589cd703d467b08715c004924abac.js @@ -0,0 +1,12 @@ +var dir_dd7589cd703d467b08715c004924abac = +[ + [ "Client", "dir_3f72314963399eb45a5e5610bf0cc145.html", "dir_3f72314963399eb45a5e5610bf0cc145" ], + [ "Common", "dir_2b786a618fa1a35d0fa6c1f0a951f035.html", "dir_2b786a618fa1a35d0fa6c1f0a951f035" ], + [ "Exceptions", "dir_aacd352a84a4f5db43a6bb63759aa0e5.html", "dir_aacd352a84a4f5db43a6bb63759aa0e5" ], + [ "Logging", "dir_9dfefe4e1ff2dafff0ff7b183fb80a5d.html", "dir_9dfefe4e1ff2dafff0ff7b183fb80a5d" ], + [ "obj", "dir_57b0082ffa0af670f404eda33c530396.html", "dir_57b0082ffa0af670f404eda33c530396" ], + [ "Server", "dir_7299b3d9bb46b9d6bcfef12b634e889c.html", "dir_7299b3d9bb46b9d6bcfef12b634e889c" ], + [ "CommunicationPrimitives.cs", "dd/d2f/_communication_primitives_8cs_source.html", null ], + [ "HelperFunctions.cs", "d5/d6c/_helper_functions_8cs_source.html", null ], + [ "Message.cs", "db/d0f/_message_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/dir_e1cb8f9b823681a26481b9089f7b7776.html b/docs/dir_e1cb8f9b823681a26481b9089f7b7776.html new file mode 100644 index 0000000..b589a62 --- /dev/null +++ b/docs/dir_e1cb8f9b823681a26481b9089f7b7776.html @@ -0,0 +1,107 @@ + + + + + + + +MTSC: D:/Projects/MTSC/MTSC/obj/Debug/netcoreapp2.1 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
netcoreapp2.1 Directory Reference
+
+
+
+
+ + + + diff --git a/docs/dir_e1cb8f9b823681a26481b9089f7b7776.js b/docs/dir_e1cb8f9b823681a26481b9089f7b7776.js new file mode 100644 index 0000000..a85077c --- /dev/null +++ b/docs/dir_e1cb8f9b823681a26481b9089f7b7776.js @@ -0,0 +1,7 @@ +var dir_e1cb8f9b823681a26481b9089f7b7776 = +[ + [ "MTSC.AssemblyInfo.cs", "dd/dc4/_debug_2netcoreapp2_81_2_m_t_s_c_8_assembly_info_8cs_source.html", null ], + [ "TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs", "da/d0a/_debug_2netcoreapp2_81_2_temporary_generated_file__036_c0_b5_b-1481-4323-8_d20-8_f5_a_d_c_b23_d92_8cs_source.html", null ], + [ "TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs", "d2/d34/_debug_2netcoreapp2_81_2_temporary_generated_file__5937a670-0e60-4077-877b-f7221da3dda1_8cs_source.html", null ], + [ "TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs", "d9/daf/_debug_2netcoreapp2_81_2_temporary_generated_file___e7_a71_f73-0_f8_d-4_b9_b-_b56_e-8_e70_b10_b_c5_d3_8cs_source.html", null ] +]; \ No newline at end of file diff --git a/docs/doc.png b/docs/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6a0b9f571b90717cd5ea2b0fa5ab79b9ffabfe GIT binary patch literal 876 zcmV-y1C#uTP)_>9LGQR;oQ6Xbau~nAGhn4b0aBc)3l$H-4(;=jSx{$tp*i34bjzB^KR(9{?8c*de0fX*}D$+1OE$$^F6=c z_xt;ux0XyM4KQn10cMj~7qA1|P0!I}CY73GeEhopKb4x|^2k;G`uhsGasaQ-O*oRr z!Us!Pw!GW|V1`Xqw*%Zk_tDSQ`S%qQ3i}BJa>YYE$hjWeZXcH}jSz_jd8nd{-j4<# zV^PcQjqLz1!mvdShaE|>VYl0{TCI4zE`lM2a9E+Vtb|{Ner53^_Y+@NMc;`pIo0=d z2EYiz3cg5wqn4Hx3IUrCuwb)U1vVrhY!MAP_tgL!o?FA5IU)RhnUg05i9`ZwL1BJY zC8j1joeqJ7%jLX%mSs2jqGi#@T%LJ)Baco=^Xy1Ir%4?js!(R{}LxyEmvPf4%VRAABkj0FXtffY6dx=DA6HSSYyz_25uhhN3XZ@d0|JquXRxS{x%fg2+ zfFY&=dNf4^$3GtA@Sz?WU*AFPiwzw4@ED!@dr`OVWB2ZMazqgPiWk5TQvsh?2U-Qo zsur-idL?b`2@Z7bVQ1SGRz16zxAwNu-SfWQN=*d72-6g4S5A(kd+^iHc}nJ%^ZOq^ zin;J`ab%c^g)78#2Y9t%4S*@;COgFBinr4|Xi02kTg&r?9%yf`-3MTV;i~BW^t`&_ zi3-v;(<1M7ii$(zie=~ZxhTG8+EA_U1qA{9Y!U0^?3qF0Yajn_tK!CuwAi42+#Z)$ zbne^8vR6k@WF2j7Ixn)?gnT8)lw&f`$Pf6;&u5agjA5I;-_PT$&?SA#`b9KJo&-L)RuIv4|uIpcm z>gp;0s3!n;0m%{o>Inc|OtP@Bcy5d|0OTtR0O|<<{y0@tRRVxnvI2nTpm;kw$6)zJ zNy&{Q`U!j10RT`>0Px4?c>xM8F8&>Wv@9*H7_cw^s3!pU_t5hKgo=u~E5+PC0Mruz zJe?Xgd^!Zr4bbDqbpv5;9{}nJ0G>{N1Rz@?9g)WHohtxQ@dN;Bk?DRj`=+d`CQ=!; z3fRW&;ycMEa(s>#0Qovaa-}A6Mn8-X+cVm(Q?D-D#Lue3PqxjnY%{$M+XbY@djOyy z($^Z!;8=|hpTV&z&NAau3CZPJ+E}pUt3vyy493puX~plC}=%ZQF0dZ2G_KVc&$ z_kiYP&c0_>kW&l$sXVLNx^_~zyLG`EuXh&q|8?m!&R@u32le!sbp2ZKGLp5WbBdZY zu?HZnva({9^Cp>}3^wC!Z5?>liO+-kWw3sw2>@vs^qfhr)SPYN`w~Bk_&x?dwLQB3 z4bAOa3O*h?u}5cWo4-lVgY-m@NI!`6om;r7$p*Tp`-$=gzuTg@`rE%)hr#Ap4;yr9 z`BYI+&T>f{-`m{>3Hf3_4*z$$j^=w3fh5d#IY3jbt!*MQzCDDtueX$K`wRce%PRn& z7V&-?SLbNfU74^6ef!BTl%#*~K(1;^=%_{HtlgE%MW2#R)@Z-!nwgPfMakd~!?Ab& zhG4Q8!ZuZ|9fJ=Y+As3+Fa3^w{kvhnyB{ESX@t1%J4lP4^N#6AFOI9uL4Fb58{$J%_eh9@&P?00J6oaG zyZ1Y|exop!Y(|*c^!Dz8(mS_eUE6p>?A`khaX)3`qq64pZM(S*KR<5 z9zRjD;;?1=@^sP-BwdYd)8-k+kLLiuGszea0o2n7klv$x_n6ew4N@`-iVztYj^B&& z(bBmsld$}0_%FvCQs|gJY5P4~-2k_0>g~I#zai73HKxzXC@u^5&J2&g}sSCbj zBihlSb;LjS9#EV+(!W3SVetyR2@|H^WX^uh?5BL0PW^BWfV8@KcOu{`JcyTP%Jb^l z9#vIU9t|2a%sYAfX8_Wg7afnRLz{&6;X^|pk0T)91LU1M5kq)P64A7y2*#M-)vF_e=5QE?EtI(7A>}&)m zFD`bYs@FSjiUK1?4oBhD^Re{GC7SX5F=b#q-tNRdLeNLPJ0bJi0^ViglMPjp zxG8l%TDNf&W!~xSB_xw<7Lc9zu3r6uS9}?-upyVE||WVxO^huP~B?=jf3$2%j0qdCH<3X|j(> z?XRZleQ>9&*q3Jzw>MSSZtd}?{Bcc!3U4qtrF>hB3Pv6P`BK|9bx`ouuiMCnrXN0- zD@5wkSKXiXwEFNVq73WYy!D%!^mzEjojQFmc;ov0(E9QG1{|I26ux}9Y6ib1k@o%F6Ks&yf9cv zPX8P-L5&-~lDK`F)ap!RV@X!LEC!vTuUGA|b!jbC+MvNbF*hn1-FtLU>~X8$)*di2 zTr)OkxYQ;52cfL&wlCSvdYYdMuBk2nJd0#`j5C*G13($(eB%nDt5S`J4+u=3ChWq$^^L3hLbl@;i?$@g~aWVf#eoe09{B3{#dy;N? zc(}OnX2+g*^R2d`-K9&GFgVF%zm)6?aVhLj+;Tt6`Dx6Fxf}pMU8Kn4GjeRsH=%-T zZ0s^tui7H@{LMSDbw`4tg3@S?$RB^2Gh9KhxAlx!5c9dX9~m_bm-2s#B6*=YNKXG8 zGSSWLog-ExtOo!EEm$xIXU=9Pk!+aB`C8IRk?Z{S>rJ$BaS*>lLdW1%aZw=YrjvZe zh@qjH5hI6)e7!yxzZK<&5I^~8esTqw>Kgn4fTt1XFp21{xf~lS$khIXiGH|yx5SqL zQZ=w@n74Y>4gk^$(hcGtC!#V2Xic(Io-)3#&8xN<3Gu1o{*E2Hcz9-!yZ|oArS$7F zN;_uEI8i1vEC6@!mHLuQ7V(GB`Dyd!Cd1j;9sp{QK72fiZ(oZgc}1He-J(S?>uu}O zD=I3+tf(=iq{HovW%X@cJH^bI9b3y+Ln6I8cIcrEpFT(A&zm2C{L4QxKrq$K&AEX1 zl~Z|!PNp-&=}+g_@(<1RMK4)e;c;b!2Ysu|<;e)p(Dx>3h7NtdR*o1T{>}@T6sPj^ zY$pmV{A?C3U&#}O+pDkIsy~li3qV@IQv|e~$&n)N`z=~DlX~~G(I_u}AXG=AM%Mb} zpKk;ptw|xnjB|l|$j0{vP0$P;JXqxK-n|?0?`zj?V{VL&b^Mc7?%XN!A;zPFw|;8q zCjg+J)yWAsnX^Bc?{$l`0%a8*GDBa4cLEg&cTLDOG zW7>Kg$==EBiSty#dz252ljCa`J~R}&|B-Ce&ow=p&)v0WwFr=D4yHwn!#x>5E4rvP zx}b4W07&cT(PP4IuU>BhfPzA&j^LlhL@^!QyXmJ)o+0wCQ$n|GUoE^3A2tC_GVoR= zeuiJppG-0 zlEv!)KtXe&r=Xci?!9Tz6Ka4)^Zg5drd~8*+SV$TCW%9RMik`n8f; z`{6SKi~zkxx90rtAtC7Q-2(v3(uw2WW82OZTnX;sj3scj7H(r^GQnKg(2batZ1J8&Qqnfum>01fOvR@1NF zK#?Ckf3gA~Vb9T_bwuE(a5Q&pDheJtl!=4iZAJ8)uK`Faa*i-l8ZVf)mfyMOCcfFR z7e@Mh2mrNc^Omn^s2*i-CUXns);KmG5^uOkiCvYn0ENF^NFtkIWOM4v1mK*=uK-AE z-hxSZ^ypzvk`dZ3$z}A{jMnt&BL&B2{dnd`GRX+-&BX6$Iy=IpWjnaLbrJTi6rST* zgO)8+m>3*s>Q5Be5!yBBdUCgu_pU-9sHmUsyGl&72HDkFV zuluq#iU66$u;{aoYXKyHM3ofL!pT+mxOcAvrFU*|Te--N0g$gGqA;F6{LqXLoF{!< zGdm|VY{VXVlQhPe&+kJ92dmYcy+zq&2{SnUK(ZsYNrMg6V>?>9 zL?9nT9-V8n$7d&#Zh@Itn4d%d?IeJBpfk_tj}RyE!b}0;hn?3N-r2aqIRJ_kHIs8H zJu!=eS)UKGHEfl#GbATC3IP9GL}%$;TD6M_8WSPz6%<@V%BI)?I*)HI0BMoD&Y^j$ z6-}EqM^RA$?mrNcDI~asQya+b@Ut*>5?8!4+2R-gpcau$HT{VFl4NUL3IH%i^A?T= z0J9_jME_FgT^K3=@E4)b>gww01K$0hO?$Vl;^wYBt8w}AS&ocvqz_S`kw@~&TD5%r zqY*DfP*d$AMPHujcm7aA@uV053ez;N{!z@^ZsQt=!+} z0-7lz@Asm7G^DmuQBlsH`Auw^fk45ff-^k3tO+Fs3NO9%5&+am-yPk7LYhki&L@T~ zd#*4$TSox+x6{pAzv5PLQB8FNz+a6THF|}5{hi)6Hg*;{xd%9r!hU)AeLQ(m$;2JO zhrkJRaHzR-*48!*np4T0o7G3McUDrXvyxXH16y$AEP;Pcn3+}8PZG)SC1On>aD4tO zZ~!Ql*y5}k+x(?k+=GXAQ>YZ$T3A}XEe1n>Rn=7|=yg9)8;VJ6Z<1cwaw?#n6mwUu zBv~S0Nx873%Brk<%){sck)CY40|0+EQG7y+GXlgzy&VAjKcK6I-_`)|2kAJG6Ok(b z{2$Rp0w~L>s;ZJdvJ3ixK>_Oa%t000000NkvXXu0mjf DHvVAO literal 0 HcmV?d00001 diff --git a/docs/dynsections.js b/docs/dynsections.js new file mode 100644 index 0000000..9bff51b --- /dev/null +++ b/docs/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +MTSC: File List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  MTSC
  MTSC
  Client
  Handlers
 BroadcastHandler.cs
 EncryptionHandler.cs
 HttpHandler.cs
 IHandler.cs
 WebsocketHandler.cs
 Client.cs
  Common
  Http
  ClientModules
 IHttpModule.cs
  ServerModules
 FileServerModule.cs
 HelloWorldModule.cs
 Http404Module.cs
 IHttpModule.cs
 HttpMessage.cs
  WebSockets
  ClientModules
 ChatModule.cs
 IWebsocketModule.cs
  ServerModules
 BroadcastModule.cs
 EchoModule.cs
 IWebsocketModule.cs
 WebsocketMessage.cs
  Exceptions
 ExceptionConsoleLogger.cs
 ExceptionThrower.cs
 IExceptionHandler.cs
 InvalidFirstByteException.cs
 InvalidHeaderException.cs
 InvalidHttpVersionException.cs
 InvalidPostFormException.cs
 InvalidRequestURIException.cs
 InvalidStatusCodeException.cs
 InvalidWebsocketFormatException.cs
 MethodInvalidException.cs
 NoDataException.cs
  Logging
 ConsoleLogger.cs
 DebugConsoleLogger.cs
 ILogger.cs
  obj
  Debug
  net48
 MTSC.AssemblyInfo.cs
 TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
 TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
 TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  netcoreapp2.1
 MTSC.AssemblyInfo.cs
 TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
 TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
 TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  Release
  net45
 MTSC.AssemblyInfo.cs
 TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
 TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
 TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  net48
 MTSC.AssemblyInfo.cs
 TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
 TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
 TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  netcoreapp2.1
 MTSC.AssemblyInfo.cs
 TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
 TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
 TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  Server
  Handlers
 BroadcastHandler.cs
 EncryptionHandler.cs
 HttpHandler.cs
 IHandler.cs
 WebsocketHandler.cs
 Server.cs
 CommunicationPrimitives.cs
 HelperFunctions.cs
 Message.cs
+
+
+
+ + + + diff --git a/docs/files_dup.js b/docs/files_dup.js new file mode 100644 index 0000000..ee95d5c --- /dev/null +++ b/docs/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "MTSC", "dir_62d48bea4fe746cedac2516f67715e2f.html", "dir_62d48bea4fe746cedac2516f67715e2f" ] +]; \ No newline at end of file diff --git a/docs/folderclosed.png b/docs/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..956676aec9237b221fbbdeb9bc4fb89ab138b701 GIT binary patch literal 634 zcmV-=0)_pFP)HW86vltC9g2d)+7Stfk3tglDy?5qW)0)Uah02n1kE?@x+ zO=cAFj%$O|G58Pu>i0i6zj>}n ztyZVem}j8XZYuB&d+p|PlTi*x*75YICge4NYyKDFT zuI+~Bp6BB@E~U~zfDAGMN-1`BIw|5vNa1TTxg5vqi_5-1!~uqpn}I|nWFn9zip1nR z&QSHv0P>J&^4a=Db>aUj*tXN(iwQ)u@B7+M{MIx~*4nRl-+qy5az>yrx1i?h3t_ZU zu27)&j6~}PUVoBQB67nt`S@v-we^=Nf!rSaw10#Vh9td_jIHOnnGp>I`~td&04Zby zJm00$`K~kYHBl5yOc)7j8f}e)h}=twBq$)Ya+~aWU0l}*Nu(sEVWmi8LSV2oQ(V$L z1#Dd+&x=O!cb{_+2oi*rl}nZ1gU_4MXCW$&u5E%SE?c}8pNlnfC7XJNzw2=$^0{ZJd UNz&!2>Hq)$07*qoM6N<$f^=gi00000 literal 0 HcmV?d00001 diff --git a/docs/folderopen.png b/docs/folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..a92943b0ad620b69cc2637bce91c0ec8a5c8cd7f GIT binary patch literal 704 zcmV;x0zdtUP)F|9R6lzUD0rNb!Rl2*)`kzla{h-WJN(#mp}~bQr7|@4LlTdbGsGMp%h9Ff(D8g zlaLA2Zb88lFHxtklSL`iLD;0-_j>Qy)XvUm1bK;;_woMB`+eW<-^^YW#wY-68&m+; zPW;0H^RtWW#lt7@-FMmeqh|~N{saL4@WcG<0_yk0QBqQjqN1QYo1C=q z)ZP$bj6qQps9FG;s$pcTUjcx8XsJ{`0C@0Z`gtl?7=)&&$Wn@;;zCqaSuo8?Se6OH zFc8%Zgi69#S^0>r^CxctKt4PvI(POeJ9Xj$d;R7GYn6&Ln4AsWLbR-sV<+^e zm@5zo>xh(AARLM!6e>d`QjX>2x43lqqAL>L8l=-}JT;nJQ@Y_4r5RA3cbd)clx2Ah zC|_sgT2(|EGqNrKT*D(kxk38t8Uk8@+$-EzoXKaLG@JP*i3Fi@Upy6JegaDVr=tDf z8D^RZ-WdVeC619GmtOx6V>~k9y(}cZC)TU0@9~n@u5R)~z>|RW^)w0!g3>D|3Wv-Q z$o*xx6GB|r0&opa1Z^#+nJA{pd)w*vpW=CUop)hFnBw!7Pgq!-`%MHQzr2tco@>WA zm&k9Qdk(-gHhq(G2{t3oCG->ARABkT5`bUBA$17-)?(gK90C9ryq^kMYP2Mekj92K zQdg5C)$#pg&+Y>x9;+oWtCpC%5+rWbk-gPTq$bf!>T6p`bJHQx+9GU{yA muXOYRz~93Ee>4Et65j!&Um{hCp+I*40000 + + + + + + +MTSC: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+
+ + + + diff --git a/docs/functions_func.html b/docs/functions_func.html new file mode 100644 index 0000000..9b517e1 --- /dev/null +++ b/docs/functions_func.html @@ -0,0 +1,337 @@ + + + + + + + +MTSC: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+
+ + + + diff --git a/docs/functions_prop.html b/docs/functions_prop.html new file mode 100644 index 0000000..cdb8098 --- /dev/null +++ b/docs/functions_prop.html @@ -0,0 +1,158 @@ + + + + + + + +MTSC: Class Members - Properties + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs/graph_legend.dot b/docs/graph_legend.dot new file mode 100644 index 0000000..3b0e746 --- /dev/null +++ b/docs/graph_legend.dot @@ -0,0 +1,23 @@ +digraph "Graph Legend" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",fillcolor="grey75",style="filled" fontcolor="black"]; + Node10 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; + Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; + Node13 -> Node9 [dir="back",color="darkgreen",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; + Node14 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; + Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node17 -> Node16 [dir="back",color="orange",fontsize="10",style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node18 -> Node9 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; +} diff --git a/docs/graph_legend.html b/docs/graph_legend.html new file mode 100644 index 0000000..b8ad157 --- /dev/null +++ b/docs/graph_legend.html @@ -0,0 +1,133 @@ + + + + + + + +MTSC: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
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:

+
+

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 gray 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 labelled 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 labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docs/graph_legend.md5 b/docs/graph_legend.md5 new file mode 100644 index 0000000..3b4f8ab --- /dev/null +++ b/docs/graph_legend.md5 @@ -0,0 +1 @@ +2779a1676ca72f29ac6dddfb5b5a4bb2 \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html new file mode 100644 index 0000000..0f446c6 --- /dev/null +++ b/docs/hierarchy.html @@ -0,0 +1,152 @@ + + + + + + + +MTSC: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CMTSC.Client.ClientBase class for TCP Client
 CMTSC.Server.ClientDataStructure containing client information
 CException
 CMTSC.Exceptions.InvalidFirstByteExceptionException in case of first invalid byte for websocket communication
 CMTSC.Exceptions.InvalidHeaderExceptionException for invalid headers
 CMTSC.Exceptions.InvalidHttpVersionExceptionException in case of Invalid HTTP Version
 CMTSC.Exceptions.InvalidPostFormExceptionException for invalid post forms
 CMTSC.Exceptions.InvalidRequestURIExceptionException cause by an invalid request URI
 CMTSC.Exceptions.InvalidStatusCodeExceptionException for invalid response status code
 CMTSC.Exceptions.InvalidWebsocketFormatException
 CMTSC.Exceptions.MethodInvalidExceptionInvalid HTTP Method Exception
 CMTSC.Exceptions.NoDataException
 CMTSC.Common.Http.HttpMessage
 CMTSC.Exceptions.IExceptionHandlerHandler to be used for handling exception
 CMTSC.Exceptions.ExceptionConsoleLoggerLogs the received exceptions to the console
 CMTSC.Exceptions.ExceptionThrowerThrows all handled exceptions
 CMTSC.Client.Handlers.IHandlerHandler interface for client communication
 CMTSC.Client.Handlers.BroadcastHandler
 CMTSC.Client.Handlers.EncryptionHandler
 CMTSC.Client.Handlers.HttpHandlerHandler for handling client http communication
 CMTSC.Client.Handlers.WebsocketHandlerHandler implementing websocket protocol
 CMTSC.Server.Handlers.IHandlerInterface for communication handlers
 CMTSC.Server.Handlers.BroadcastHandlerBroadcast handler
 CMTSC.Server.Handlers.EncryptionHandlerHandler that encrypts the communication
 CMTSC.Server.Handlers.HttpHandlerHandler for handling server http requests
 CMTSC.Server.Handlers.WebsocketHandler
 CMTSC.Common.Http.ServerModules.IHttpModuleInterface for Http modules used by the server http handler
 CMTSC.Common.Http.ServerModules.FileServerModule
 CMTSC.Common.Http.ServerModules.HelloWorldModule
 CMTSC.Common.Http.ServerModules.Http404ModuleSimple module that returns status code 404
 CMTSC.Common.Http.ClientModules.IHttpModule
 CMTSC.Logging.ILoggerInterface for loggers
 CMTSC.Logging.ConsoleLoggerBasic logger that outputs the log messages to the console
 CMTSC.Logging.DebugConsoleLogger
 CMTSC.Common.WebSockets.ClientModules.IWebsocketModuleInterface for websocket modules
 CMTSC.Common.WebSockets.ClientModules.ChatModule
 CMTSC.Common.WebSockets.ServerModules.IWebsocketModule
 CMTSC.Common.WebSockets.ServerModules.BroadcastModule
 CMTSC.Common.WebSockets.ServerModules.EchoModule
 CMTSC.Message
 CMTSC.Server.ServerBasic server class to handle TCP connections
 CMTSC.Common.WebSockets.WebsocketMessageClass containing the bytes of a websocket received message
+
+
+
+ + + + diff --git a/docs/hierarchy.js b/docs/hierarchy.js new file mode 100644 index 0000000..feb89b9 --- /dev/null +++ b/docs/hierarchy.js @@ -0,0 +1,53 @@ +var hierarchy = +[ + [ "MTSC.Client.Client", "dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html", null ], + [ "MTSC.Server.ClientData", "d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html", null ], + [ "Exception", null, [ + [ "MTSC.Exceptions.InvalidFirstByteException", "d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html", null ], + [ "MTSC.Exceptions.InvalidHeaderException", "d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html", null ], + [ "MTSC.Exceptions.InvalidHttpVersionException", "d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html", null ], + [ "MTSC.Exceptions.InvalidPostFormException", "d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html", null ], + [ "MTSC.Exceptions.InvalidRequestURIException", "d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html", null ], + [ "MTSC.Exceptions.InvalidStatusCodeException", "dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html", null ], + [ "MTSC.Exceptions.InvalidWebsocketFormatException", "d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html", null ], + [ "MTSC.Exceptions.MethodInvalidException", "de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html", null ], + [ "MTSC.Exceptions.NoDataException", "da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html", null ] + ] ], + [ "MTSC.Common.Http.HttpMessage", "df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html", null ], + [ "MTSC.Exceptions.IExceptionHandler", "d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html", [ + [ "MTSC.Exceptions.ExceptionConsoleLogger", "df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html", null ], + [ "MTSC.Exceptions.ExceptionThrower", "dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html", null ] + ] ], + [ "MTSC.Client.Handlers.IHandler", "df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html", [ + [ "MTSC.Client.Handlers.BroadcastHandler", "dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html", null ], + [ "MTSC.Client.Handlers.EncryptionHandler", "dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html", null ], + [ "MTSC.Client.Handlers.HttpHandler", "d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html", null ], + [ "MTSC.Client.Handlers.WebsocketHandler", "df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html", null ] + ] ], + [ "MTSC.Server.Handlers.IHandler", "da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html", [ + [ "MTSC.Server.Handlers.BroadcastHandler", "dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html", null ], + [ "MTSC.Server.Handlers.EncryptionHandler", "d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html", null ], + [ "MTSC.Server.Handlers.HttpHandler", "d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html", null ], + [ "MTSC.Server.Handlers.WebsocketHandler", "da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html", null ] + ] ], + [ "MTSC.Common.Http.ServerModules.IHttpModule", "d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html", [ + [ "MTSC.Common.Http.ServerModules.FileServerModule", "d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html", null ], + [ "MTSC.Common.Http.ServerModules.HelloWorldModule", "d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html", null ], + [ "MTSC.Common.Http.ServerModules.Http404Module", "dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html", null ] + ] ], + [ "MTSC.Common.Http.ClientModules.IHttpModule", "d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html", null ], + [ "MTSC.Logging.ILogger", "d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html", [ + [ "MTSC.Logging.ConsoleLogger", "de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html", null ], + [ "MTSC.Logging.DebugConsoleLogger", "da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html", null ] + ] ], + [ "MTSC.Common.WebSockets.ClientModules.IWebsocketModule", "dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html", [ + [ "MTSC.Common.WebSockets.ClientModules.ChatModule", "df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html", null ] + ] ], + [ "MTSC.Common.WebSockets.ServerModules.IWebsocketModule", "d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html", [ + [ "MTSC.Common.WebSockets.ServerModules.BroadcastModule", "d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html", null ], + [ "MTSC.Common.WebSockets.ServerModules.EchoModule", "d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html", null ] + ] ], + [ "MTSC.Message", "dc/dd4/struct_m_t_s_c_1_1_message.html", null ], + [ "MTSC.Server.Server", "d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html", null ], + [ "MTSC.Common.WebSockets.WebsocketMessage", "d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html", null ] +]; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..3581ecb --- /dev/null +++ b/docs/index.html @@ -0,0 +1,106 @@ + + + + + + + +MTSC: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MTSC Documentation
+
+
+
+
+ + + + diff --git a/docs/inherit_graph_0.dot b/docs/inherit_graph_0.dot new file mode 100644 index 0000000..3a33378 --- /dev/null +++ b/docs/inherit_graph_0.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Client.Client",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html",tooltip="Base class for TCP Client."]; +} diff --git a/docs/inherit_graph_0.md5 b/docs/inherit_graph_0.md5 new file mode 100644 index 0000000..5b8a916 --- /dev/null +++ b/docs/inherit_graph_0.md5 @@ -0,0 +1 @@ +15f351b6031f5d16df275daf9240a205 \ No newline at end of file diff --git a/docs/inherit_graph_1.dot b/docs/inherit_graph_1.dot new file mode 100644 index 0000000..50aa553 --- /dev/null +++ b/docs/inherit_graph_1.dot @@ -0,0 +1,16 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Client.Handlers.IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html",tooltip="Handler interface for client communication."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Client.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Client.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html",tooltip=" "]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Client.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html",tooltip="Handler for handling client http communication."]; + Node0 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="MTSC.Client.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html",tooltip="Handler implementing websocket protocol."]; +} diff --git a/docs/inherit_graph_1.md5 b/docs/inherit_graph_1.md5 new file mode 100644 index 0000000..2273049 --- /dev/null +++ b/docs/inherit_graph_1.md5 @@ -0,0 +1 @@ +f7a79003e74e1666f7347aea6f4ead6e \ No newline at end of file diff --git a/docs/inherit_graph_10.dot b/docs/inherit_graph_10.dot new file mode 100644 index 0000000..d6879d3 --- /dev/null +++ b/docs/inherit_graph_10.dot @@ -0,0 +1,12 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Logging.ILogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html",tooltip="Interface for loggers."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Logging.ConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html",tooltip="Basic logger that outputs the log messages to the console."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Logging.DebugConsole\lLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_10.md5 b/docs/inherit_graph_10.md5 new file mode 100644 index 0000000..c586e18 --- /dev/null +++ b/docs/inherit_graph_10.md5 @@ -0,0 +1 @@ +13f6894d8efa3945a6c5ff69e1e493b2 \ No newline at end of file diff --git a/docs/inherit_graph_11.dot b/docs/inherit_graph_11.dot new file mode 100644 index 0000000..ea56372 --- /dev/null +++ b/docs/inherit_graph_11.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Message",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/dd4/struct_m_t_s_c_1_1_message.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_11.md5 b/docs/inherit_graph_11.md5 new file mode 100644 index 0000000..af81dfa --- /dev/null +++ b/docs/inherit_graph_11.md5 @@ -0,0 +1 @@ +02171c26cf8e34665f6a360fb7d0f31d \ No newline at end of file diff --git a/docs/inherit_graph_12.dot b/docs/inherit_graph_12.dot new file mode 100644 index 0000000..c57cd2d --- /dev/null +++ b/docs/inherit_graph_12.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Server.ClientData",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html",tooltip="Structure containing client information."]; +} diff --git a/docs/inherit_graph_12.md5 b/docs/inherit_graph_12.md5 new file mode 100644 index 0000000..9b3ee48 --- /dev/null +++ b/docs/inherit_graph_12.md5 @@ -0,0 +1 @@ +5a0302b990851c9dfaa465e5ce0197cf \ No newline at end of file diff --git a/docs/inherit_graph_13.dot b/docs/inherit_graph_13.dot new file mode 100644 index 0000000..1b80c71 --- /dev/null +++ b/docs/inherit_graph_13.dot @@ -0,0 +1,16 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Server.Handlers.IHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html",tooltip="Interface for communication handlers."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Server.Handlers.Broadcast\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html",tooltip="Broadcast handler."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Server.Handlers.Encryption\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html",tooltip="Handler that encrypts the communication."]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Server.Handlers.Http\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html",tooltip="Handler for handling server http requests."]; + Node0 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="MTSC.Server.Handlers.Websocket\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_13.md5 b/docs/inherit_graph_13.md5 new file mode 100644 index 0000000..cdb579c --- /dev/null +++ b/docs/inherit_graph_13.md5 @@ -0,0 +1 @@ +94d4413498b18f671bdda7f18ce72aff \ No newline at end of file diff --git a/docs/inherit_graph_14.dot b/docs/inherit_graph_14.dot new file mode 100644 index 0000000..70ccaed --- /dev/null +++ b/docs/inherit_graph_14.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Server.Server",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html",tooltip="Basic server class to handle TCP connections."]; +} diff --git a/docs/inherit_graph_14.md5 b/docs/inherit_graph_14.md5 new file mode 100644 index 0000000..2ed35bf --- /dev/null +++ b/docs/inherit_graph_14.md5 @@ -0,0 +1 @@ +ed925efc6a067017bfee467c9037eb65 \ No newline at end of file diff --git a/docs/inherit_graph_2.dot b/docs/inherit_graph_2.dot new file mode 100644 index 0000000..f4ed2d3 --- /dev/null +++ b/docs/inherit_graph_2.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.Http.ClientModules.\lIHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_2.md5 b/docs/inherit_graph_2.md5 new file mode 100644 index 0000000..ba29441 --- /dev/null +++ b/docs/inherit_graph_2.md5 @@ -0,0 +1 @@ +efb26bf250df1e10bcc28dd8a783d00b \ No newline at end of file diff --git a/docs/inherit_graph_3.dot b/docs/inherit_graph_3.dot new file mode 100644 index 0000000..2b53f51 --- /dev/null +++ b/docs/inherit_graph_3.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.Http.HttpMessage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_3.md5 b/docs/inherit_graph_3.md5 new file mode 100644 index 0000000..b39a1e0 --- /dev/null +++ b/docs/inherit_graph_3.md5 @@ -0,0 +1 @@ +95fefb2df2f99971b4e6cd93b0ed6b72 \ No newline at end of file diff --git a/docs/inherit_graph_4.dot b/docs/inherit_graph_4.dot new file mode 100644 index 0000000..cda76f7 --- /dev/null +++ b/docs/inherit_graph_4.dot @@ -0,0 +1,14 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.Http.ServerModules.\lIHttpModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html",tooltip="Interface for Http modules used by the server http handler."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.Http.ServerModules.\lFileServerModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Common.Http.ServerModules.\lHelloWorldModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html",tooltip=" "]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="MTSC.Common.Http.ServerModules.\lHttp404Module",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html",tooltip="Simple module that returns status code 404."]; +} diff --git a/docs/inherit_graph_4.md5 b/docs/inherit_graph_4.md5 new file mode 100644 index 0000000..f95ff8b --- /dev/null +++ b/docs/inherit_graph_4.md5 @@ -0,0 +1 @@ +df2c4ff0303f2dd7024a84591bf8b090 \ No newline at end of file diff --git a/docs/inherit_graph_5.dot b/docs/inherit_graph_5.dot new file mode 100644 index 0000000..fd2b1f5 --- /dev/null +++ b/docs/inherit_graph_5.dot @@ -0,0 +1,10 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.WebSockets.Client\lModules.IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html",tooltip="Interface for websocket modules."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.WebSockets.Client\lModules.ChatModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_5.md5 b/docs/inherit_graph_5.md5 new file mode 100644 index 0000000..cd9ad42 --- /dev/null +++ b/docs/inherit_graph_5.md5 @@ -0,0 +1 @@ +86c031f667cd54526c238afee16c0112 \ No newline at end of file diff --git a/docs/inherit_graph_6.dot b/docs/inherit_graph_6.dot new file mode 100644 index 0000000..e0dce3a --- /dev/null +++ b/docs/inherit_graph_6.dot @@ -0,0 +1,12 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.WebSockets.Server\lModules.IWebsocketModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html",tooltip=" "]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Common.WebSockets.Server\lModules.BroadcastModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html",tooltip=" "]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Common.WebSockets.Server\lModules.EchoModule",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_6.md5 b/docs/inherit_graph_6.md5 new file mode 100644 index 0000000..5f41b48 --- /dev/null +++ b/docs/inherit_graph_6.md5 @@ -0,0 +1 @@ +2468e5b6dba0dae41ac3f433cab83329 \ No newline at end of file diff --git a/docs/inherit_graph_7.dot b/docs/inherit_graph_7.dot new file mode 100644 index 0000000..88315c3 --- /dev/null +++ b/docs/inherit_graph_7.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Common.WebSockets.Websocket\lMessage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html",tooltip="Class containing the bytes of a websocket received message."]; +} diff --git a/docs/inherit_graph_7.md5 b/docs/inherit_graph_7.md5 new file mode 100644 index 0000000..146f063 --- /dev/null +++ b/docs/inherit_graph_7.md5 @@ -0,0 +1 @@ +ead5f90b6953cad6187b085d6d347302 \ No newline at end of file diff --git a/docs/inherit_graph_8.dot b/docs/inherit_graph_8.dot new file mode 100644 index 0000000..6757bd5 --- /dev/null +++ b/docs/inherit_graph_8.dot @@ -0,0 +1,12 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="MTSC.Exceptions.IException\lHandler",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html",tooltip="Handler to be used for handling exception."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="MTSC.Exceptions.Exception\lConsoleLogger",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html",tooltip="Logs the received exceptions to the console."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="MTSC.Exceptions.Exception\lThrower",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html",tooltip="Throws all handled exceptions."]; +} diff --git a/docs/inherit_graph_8.md5 b/docs/inherit_graph_8.md5 new file mode 100644 index 0000000..9d38802 --- /dev/null +++ b/docs/inherit_graph_8.md5 @@ -0,0 +1 @@ +d34a5bcbe42ef5b9ee478a644139b625 \ No newline at end of file diff --git a/docs/inherit_graph_9.dot b/docs/inherit_graph_9.dot new file mode 100644 index 0000000..e264c9b --- /dev/null +++ b/docs/inherit_graph_9.dot @@ -0,0 +1,26 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node31 [label="Exception",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node31 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node0 [label="MTSC.Exceptions.InvalidFirst\lByteException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html",tooltip="Exception in case of first invalid byte for websocket communication."]; + Node31 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node33 [label="MTSC.Exceptions.InvalidHeader\lException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html",tooltip="Exception for invalid headers."]; + Node31 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node34 [label="MTSC.Exceptions.InvalidHttp\lVersionException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html",tooltip="Exception in case of Invalid HTTP Version."]; + Node31 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node35 [label="MTSC.Exceptions.InvalidPost\lFormException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html",tooltip="Exception for invalid post forms."]; + Node31 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node36 [label="MTSC.Exceptions.InvalidRequest\lURIException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html",tooltip="Exception cause by an invalid request URI."]; + Node31 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node37 [label="MTSC.Exceptions.InvalidStatus\lCodeException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html",tooltip="Exception for invalid response status code."]; + Node31 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node38 [label="MTSC.Exceptions.InvalidWebsocket\lFormatException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html",tooltip=" "]; + Node31 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node39 [label="MTSC.Exceptions.MethodInvalid\lException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html",tooltip="Invalid HTTP Method Exception."]; + Node31 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node40 [label="MTSC.Exceptions.NoDataException",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html",tooltip=" "]; +} diff --git a/docs/inherit_graph_9.md5 b/docs/inherit_graph_9.md5 new file mode 100644 index 0000000..f7f2da1 --- /dev/null +++ b/docs/inherit_graph_9.md5 @@ -0,0 +1 @@ +193e167f630669478fd63d6abdb5fc97 \ No newline at end of file diff --git a/docs/inherits.html b/docs/inherits.html new file mode 100644 index 0000000..35a5674 --- /dev/null +++ b/docs/inherits.html @@ -0,0 +1,140 @@ + + + + + + + +MTSC: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MTSC +  1.0.0 +
+
Build TCP servers out of modules with handlers for communication, exception and logging.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/docs/jquery.js b/docs/jquery.js new file mode 100644 index 0000000..1ee895c --- /dev/null +++ b/docs/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Wed Mar 21 12:46:34 2012 -0700 + */ +(function(bd,L){var av=bd.document,bu=bd.navigator,bm=bd.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bd.jQuery,bH=bd.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bd.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bd.attachEvent("onload",bF.ready);var b0=false;try{b0=bd.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0!=null&&b0==b0.window},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bd.JSON&&bd.JSON.parse){return bd.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){if(typeof b2!=="string"||!b2){return null}var b0,b1;try{if(bd.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bd.execScript||function(b1){bd["eval"].call(bd,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aK.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aK.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bH=bv.getElementsByTagName("*");bE=bv.getElementsByTagName("a")[0];if(!bH||!bH.length||!bE){return{}}bF=av.createElement("select");bx=bF.appendChild(av.createElement("option"));bD=bv.getElementsByTagName("input")[0];bI={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bE.getAttribute("style")),hrefNormalized:(bE.getAttribute("href")==="/a"),opacity:/^0.55/.test(bE.style.opacity),cssFloat:!!bE.style.cssFloat,checkOn:(bD.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,pixelMargin:true};b.boxModel=bI.boxModel=(av.compatMode==="CSS1Compat");bD.checked=true;bI.noCloneChecked=bD.cloneNode(true).checked;bF.disabled=true;bI.optDisabled=!bx.disabled;try{delete bv.test}catch(bB){bI.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bI.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bD=av.createElement("input");bD.value="t";bD.setAttribute("type","radio");bI.radioValue=bD.value==="t";bD.setAttribute("checked","checked");bD.setAttribute("name","t");bv.appendChild(bD);bC=av.createDocumentFragment();bC.appendChild(bv.lastChild);bI.checkClone=bC.cloneNode(true).cloneNode(true).lastChild.checked;bI.appendChecked=bD.checked;bC.removeChild(bD);bC.appendChild(bv);if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bA="on"+by;bw=(bA in bv);if(!bw){bv.setAttribute(bA,"return;");bw=(typeof bv[bA]==="function")}bI[by+"Bubbles"]=bw}}bC.removeChild(bv);bC=bF=bx=bv=bD=null;b(function(){var bM,bV,bW,bU,bO,bP,bR,bL,bK,bQ,bN,e,bT,bS=av.getElementsByTagName("body")[0];if(!bS){return}bL=1;bT="padding:0;margin:0;border:";bN="position:absolute;top:0;left:0;width:1px;height:1px;";e=bT+"0;visibility:hidden;";bK="style='"+bN+bT+"5px solid #000;";bQ="
";bM=av.createElement("div");bM.style.cssText=e+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bS.insertBefore(bM,bS.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bI.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);if(bd.getComputedStyle){bv.innerHTML="";bR=av.createElement("div");bR.style.width="0";bR.style.marginRight="0";bv.style.width="2px";bv.appendChild(bR);bI.reliableMarginRight=(parseInt((bd.getComputedStyle(bR,null)||{marginRight:0}).marginRight,10)||0)===0}if(typeof bv.style.zoom!=="undefined"){bv.innerHTML="";bv.style.width=bv.style.padding="1px";bv.style.border=0;bv.style.overflow="hidden";bv.style.display="inline";bv.style.zoom=1;bI.inlineBlockNeedsLayout=(bv.offsetWidth===3);bv.style.display="block";bv.style.overflow="visible";bv.innerHTML="
";bI.shrinkWrapBlocks=(bv.offsetWidth!==3)}bv.style.cssText=bN+e;bv.innerHTML=bQ;bV=bv.firstChild;bW=bV.firstChild;bO=bV.nextSibling.firstChild.firstChild;bP={doesNotAddBorder:(bW.offsetTop!==5),doesAddBorderForTableAndCells:(bO.offsetTop===5)};bW.style.position="fixed";bW.style.top="20px";bP.fixedPosition=(bW.offsetTop===20||bW.offsetTop===15);bW.style.position=bW.style.top="";bV.style.overflow="hidden";bV.style.position="relative";bP.subtractsBorderForOverflowNotVisible=(bW.offsetTop===-5);bP.doesNotIncludeMarginInBodyOffset=(bS.offsetTop!==bL);if(bd.getComputedStyle){bv.style.marginTop="1%";bI.pixelMargin=(bd.getComputedStyle(bv,null)||{marginTop:0}).marginTop!=="1%"}if(typeof bM.style.zoom!=="undefined"){bM.style.zoom=1}bS.removeChild(bM);bR=bv=bM=null;b.extend(bI,bP)});return bI})();var aT=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA1,null,false)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a6(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?+by:aT.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bj(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bj(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bj(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){var bw=2;if(typeof e!=="string"){bv=e;e="fx";bw--}if(arguments.length1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,b.prop,e,bv,arguments.length>1)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(ag);for(bw=0,bv=this.length;bw-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.type]||b.valHooks[bw.nodeName.toLowerCase()];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aV,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aZ:bf)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(by,bA){var bz,bB,bw,e,bv,bx=0;if(bA&&by.nodeType===1){bB=bA.toLowerCase().split(ag);e=bB.length;for(;bx=0)}}})});var be=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/(?:^|\s)hover(\.\S+)?\b/,aP=/^key/,bg=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler;by=bv.selector}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bd,bI])}}for(bC=0;bCbC){bv.push({elem:this,matches:bD.slice(bC)})}for(bJ=0;bJ0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aP.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bg.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}bE.match.globalPOS=bD;var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(B(bx[0])||B(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function B(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||bb.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aH(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aS.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aS="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ah=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,v=/]","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bn=/\/(java|ecma)script/i,aO=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){return b.access(this,function(bv){return bv===L?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(bv))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},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(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(e){return b.access(this,function(by){var bx=this[0]||{},bw=0,bv=this.length;if(by===L){return bx.nodeType===1?bx.innerHTML.replace(ah,""):null}if(typeof by==="string"&&!ae.test(by)&&(b.support.leadingWhitespace||!ar.test(by))&&!ax[(d.exec(by)||["",""])[1].toLowerCase()]){by=by.replace(R,"<$1>");try{for(;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bh(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function D(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function am(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||b.isXMLDoc(by)||!ai.test("<"+by.nodeName+">")?by.cloneNode(true):am(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){aj(by,bz);e=bh(by);bv=bh(bz);for(bx=0;e[bx];++bx){if(bv[bx]){aj(e[bx],bv[bx])}}}if(bA){s(by,bz);if(bw){e=bh(by);bv=bh(bz);for(bx=0;e[bx];++bx){s(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bI,bw,bv,bx){var bA,bH,bD,bJ=[];bw=bw||av;if(typeof bw.createElement==="undefined"){bw=bw.ownerDocument||bw[0]&&bw[0].ownerDocument||av}for(var bE=0,bG;(bG=bI[bE])!=null;bE++){if(typeof bG==="number"){bG+=""}if(!bG){continue}if(typeof bG==="string"){if(!W.test(bG)){bG=bw.createTextNode(bG)}else{bG=bG.replace(R,"<$1>");var bN=(d.exec(bG)||["",""])[1].toLowerCase(),bz=ax[bN]||ax._default,bK=bz[0],bB=bw.createElement("div"),bL=ac.childNodes,bM;if(bw===av){ac.appendChild(bB)}else{a(bw).appendChild(bB)}bB.innerHTML=bz[1]+bG+bz[2];while(bK--){bB=bB.lastChild}if(!b.support.tbody){var by=v.test(bG),e=bN==="table"&&!by?bB.firstChild&&bB.firstChild.childNodes:bz[1]===""&&!by?bB.childNodes:[];for(bD=e.length-1;bD>=0;--bD){if(b.nodeName(e[bD],"tbody")&&!e[bD].childNodes.length){e[bD].parentNode.removeChild(e[bD])}}}if(!b.support.leadingWhitespace&&ar.test(bG)){bB.insertBefore(bw.createTextNode(ar.exec(bG)[0]),bB.firstChild)}bG=bB.childNodes;if(bB){bB.parentNode.removeChild(bB);if(bL.length>0){bM=bL[bL.length-1];if(bM&&bM.parentNode){bM.parentNode.removeChild(bM)}}}}}var bF;if(!b.support.appendChecked){if(bG[0]&&typeof(bF=bG.length)==="number"){for(bD=0;bD1)};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(by,bx,bz){var e={},bw,bv;for(bv in bx){e[bv]=by.style[bv];by.style[bv]=bx[bv]}bw=bz.call(by);for(bv in bx){by.style[bv]=e[bv]}return bw}});b.curCSS=b.css;if(av.defaultView&&av.defaultView.getComputedStyle){aJ=function(bA,bw){var bv,bz,e,by,bx=bA.style;bw=bw.replace(y,"-$1").toLowerCase();if((bz=bA.ownerDocument.defaultView)&&(e=bz.getComputedStyle(bA,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(bA.ownerDocument.documentElement,bA)){bv=b.style(bA,bw)}}if(!b.support.pixelMargin&&e&&aE.test(bw)&&a1.test(bv)){by=bx.width;bx.width=bv;bv=e.width;bx.width=by}return bv}}if(av.documentElement.currentStyle){aY=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv==null&&bx&&(by=bx[bw])){bv=by}if(a1.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":bv;bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aJ||aY;function af(by,bw,bv){var bz=bw==="width"?by.offsetWidth:by.offsetHeight,bx=bw==="width"?1:0,e=4;if(bz>0){if(bv!=="border"){for(;bx=1&&b.trim(bw.replace(al,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=al.test(bw)?bw.replace(al,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bv,e){return b.swap(bv,{display:"inline-block"},function(){if(e){return Z(bv,"margin-right")}else{return bv.style.marginRight}})}}}});if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}b.each({margin:"",padding:"",border:"Width"},function(e,bv){b.cssHooks[e+bv]={expand:function(by){var bx,bz=typeof by==="string"?by.split(" "):[by],bw={};for(bx=0;bx<4;bx++){bw[e+G[bx]+bv]=bz[bx]||bz[bx-2]||bz[0]}return bw}}});var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,a0=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aN=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aR=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a7=/)<[^<]*)*<\/script>/gi,p=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,z=b.fn.load,aa={},q={},aF,r,aW=["*/"]+["*"];try{aF=bm.href}catch(aw){aF=av.createElement("a");aF.href="";aF=aF.href}r=K.exec(aF.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a7,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||p.test(this.nodeName)||a0.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){an(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}an(bv,e);return bv},ajaxSettings:{url:aF,isLocal:aN.test(r[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bd.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(q),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bk(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=F(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,r[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=r[1]||bI[2]!=r[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(r[3]||(r[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aX(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aR.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aW+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aX(q,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){u(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function u(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{u(bw+"["+(typeof bz==="object"?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&b.type(by)==="object"){for(var e in by){u(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bk(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function F(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!ba){ba=av.createElement("iframe");ba.frameBorder=ba.width=ba.height=0}e.appendChild(ba);if(!m||!ba.createElement){m=(ba.contentWindow||ba.contentDocument).document;m.write((b.support.boxModel?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(ba)}Q[bx]=bw}return Q[bx]}var a8,V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){a8=function(by,bH,bw,bB){try{bB=by.getBoundingClientRect()}catch(bF){}if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aL(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{a8=function(bz,bE,bx){var bC,bw=bz.offsetParent,bv=bz,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.fn.offset=function(e){if(arguments.length){return e===L?this:this.each(function(bx){b.offset.setOffset(this,e,bx)})}var bv=this[0],bw=bv&&bv.ownerDocument;if(!bw){return null}if(bv===bw.body){return b.offset.bodyOffset(bv)}return a8(bv,bw,bw.documentElement)};b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(bw,bv){var e=/Y/.test(bv);b.fn[bw]=function(bx){return b.access(this,function(by,bB,bA){var bz=aL(by);if(bA===L){return bz?(bv in bz)?bz[bv]:b.support.boxModel&&bz.document.documentElement[bB]||bz.document.body[bB]:by[bB]}if(bz){bz.scrollTo(!e?bA:b(bz).scrollLeft(),e?bA:b(bz).scrollTop())}else{by[bB]=bA}},bw,bx,arguments.length,null)}});function aL(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each({Height:"height",Width:"width"},function(bw,bx){var bv="client"+bw,e="scroll"+bw,by="offset"+bw;b.fn["inner"+bw]=function(){var bz=this[0];return bz?bz.style?parseFloat(b.css(bz,bx,"padding")):this[bx]():null};b.fn["outer"+bw]=function(bA){var bz=this[0];return bz?bz.style?parseFloat(b.css(bz,bx,bA?"margin":"border")):this[bx]():null};b.fn[bx]=function(bz){return b.access(this,function(bC,bB,bD){var bF,bE,bG,bA;if(b.isWindow(bC)){bF=bC.document;bE=bF.documentElement[bv];return b.support.boxModel&&bE||bF.body&&bF.body[bv]||bE}if(bC.nodeType===9){bF=bC.documentElement;if(bF[bv]>=bF[e]){return bF[bv]}return Math.max(bC.body[e],bF[e],bC.body[by],bF[by])}if(bD===L){bG=b.css(bC,bB);bA=parseFloat(bG);return b.isNumeric(bA)?bA:bG}b(bC).css(bB,bD)},bx,bz,arguments.length,null)}});bd.jQuery=bd.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){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=k.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 l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.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(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,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.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
Packages
+
+
+
Here are the packages with brief descriptions (if available):
+
[detail level 1234]
+ + + + + + + + + + + + + + +
 NMTSC
 NClient
 NHandlers
 NCommon
 NHttp
 NClientModules
 NServerModules
 NWebSockets
 NClientModules
 NServerModules
 NExceptions
 NLogging
 NServer
 NHandlers
+ + + + + + + diff --git a/docs/namespaces_dup.js b/docs/namespaces_dup.js new file mode 100644 index 0000000..b32f75e --- /dev/null +++ b/docs/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "MTSC", "d7/dcd/namespace_m_t_s_c.html", "d7/dcd/namespace_m_t_s_c" ] +]; \ No newline at end of file diff --git a/docs/nav_f.png b/docs/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..3873003908e1258a157a85979ca0f9653abd5856 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQYD@)jv*C{Z|6GlH5rJw?5{Py zvXm+7>+PtFOvk+@()kMS42~V)_W2~1Z&b`abD8?%4-2MPTi$VW-a}0Q literal 0 HcmV?d00001 diff --git a/docs/nav_g.png b/docs/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KQO^!oGEJsXb>7&x*D+IDe`p{s`+nAC}zQdTv{gK2KLamvv4FO#rku9UlMy literal 0 HcmV?d00001 diff --git a/docs/navtree.css b/docs/navtree.css new file mode 100644 index 0000000..9304b6a --- /dev/null +++ b/docs/navtree.css @@ -0,0 +1,146 @@ +#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; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + 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; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-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: #F1F1F4; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/navtree.js b/docs/navtree.js new file mode 100644 index 0000000..7ce2935 --- /dev/null +++ b/docs/navtree.js @@ -0,0 +1,540 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + 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"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +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); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + 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; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +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; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VcAhSdAr*{o=N{x_P~c%+e@=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + 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); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/docs/search/all_0.html b/docs/search/all_0.html new file mode 100644 index 0000000..5330204 --- /dev/null +++ b/docs/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_0.js b/docs/search/all_0.js new file mode 100644 index 0000000..e87c94a --- /dev/null +++ b/docs/search/all_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['addentityheaders',['AddEntityHeaders',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#abe600f8b5b6dcff10ec21999229ec4ba',1,'MTSC::Common::Http::HttpMessage']]], + ['addexceptionhandler',['AddExceptionHandler',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4a466715c54b39553de4e06a051d20ef',1,'MTSC.Client.Client.AddExceptionHandler()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a03c7f49c82093ef63c6a23bdca0ebc06',1,'MTSC.Server.Server.AddExceptionHandler()']]], + ['addgeneralheader',['AddGeneralHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a959c91a346a8fc3fd21cc8b3ff5f4c88',1,'MTSC::Common::Http::HttpMessage']]], + ['addhandler',['AddHandler',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4e50b197b82fb2d921939fc7af8b1e20',1,'MTSC.Client.Client.AddHandler()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#abe8507e08c560f198f3c6c82838a6687',1,'MTSC.Server.Server.AddHandler()']]], + ['addhttpmodule',['AddHttpModule',['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#af4e9ae4dea869ad9a487b19f776b07b7',1,'MTSC::Server::Handlers::HttpHandler']]], + ['addlogger',['AddLogger',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a0b628912644ae436441aa9407b4c1b3e',1,'MTSC.Client.Client.AddLogger()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ac09ec60dfa2c27388cf0c92ee25721fa',1,'MTSC.Server.Server.AddLogger()']]], + ['addmodule',['AddModule',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#ae292eccc409b08c21abb9a5100e7af91',1,'MTSC.Client.Handlers.HttpHandler.AddModule()'],['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#a30f0f192ec1d875f28a7e07529feecb8',1,'MTSC.Client.Handlers.WebsocketHandler.AddModule()']]], + ['addrequestheader',['AddRequestHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a598978cd10bc3160ab2656d59596b27e',1,'MTSC::Common::Http::HttpMessage']]], + ['addresponseheader',['AddResponseHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a354738dd74b0be81f81f2ce25e02f39e',1,'MTSC::Common::Http::HttpMessage']]], + ['addwebsockethandler',['AddWebsocketHandler',['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a9052e4deaf71384b7c3906cdc04e5eea',1,'MTSC::Server::Handlers::WebsocketHandler']]] +]; diff --git a/docs/search/all_1.html b/docs/search/all_1.html new file mode 100644 index 0000000..2f46793 --- /dev/null +++ b/docs/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_1.js b/docs/search/all_1.js new file mode 100644 index 0000000..bdc80b3 --- /dev/null +++ b/docs/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['broadcast',['Broadcast',['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a74fb30591fe06d29601c645937e3b4da',1,'MTSC::Client::Handlers::BroadcastHandler']]], + ['broadcasthandler',['BroadcastHandler',['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html',1,'MTSC.Client.Handlers.BroadcastHandler'],['../dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html',1,'MTSC.Server.Handlers.BroadcastHandler'],['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a3bb5d75cc804dbf9b42ec893967b365a',1,'MTSC.Client.Handlers.BroadcastHandler.BroadcastHandler()']]], + ['broadcastmodule',['BroadcastModule',['../d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html',1,'MTSC::Common::WebSockets::ServerModules']]] +]; diff --git a/docs/search/all_10.html b/docs/search/all_10.html new file mode 100644 index 0000000..170dc09 --- /dev/null +++ b/docs/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_10.js b/docs/search/all_10.js new file mode 100644 index 0000000..680ae3c --- /dev/null +++ b/docs/search/all_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['scaleusage',['ScaleUsage',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4bd784eb59c4a81a346a09d31146eef3',1,'MTSC::Server::Server']]], + ['sendrequest',['SendRequest',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#a3717b229ef4fe6137b480fcde8d61b37',1,'MTSC::Client::Handlers::HttpHandler']]], + ['server',['Server',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html',1,'MTSC.Server.Server'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a39681d659b0b0b78d64ceb200346b572',1,'MTSC.Server.Server.Server()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1cb1d11b255666395b92dcd0ea8afdee',1,'MTSC.Server.Server.Server(int port)'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a9ba78600a4f4f3d46d11181a4b6b50eb',1,'MTSC.Server.Server.Server(X509Certificate2 certificate, int port)']]], + ['setport',['SetPort',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#afe946bd8ea5c8d02db19175e5fbe95e0',1,'MTSC.Client.Client.SetPort()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a53cde7840246a76cf72389665c4ff9f7',1,'MTSC.Server.Server.SetPort()']]], + ['setserveraddress',['SetServerAddress',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ae4eab6784f731a25a4ed47fa2dc5c217',1,'MTSC::Client::Client']]], + ['stop',['Stop',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1f2742b5f0ac908cc75baf9490f4d9fb',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/all_11.html b/docs/search/all_11.html new file mode 100644 index 0000000..10fcd09 --- /dev/null +++ b/docs/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_11.js b/docs/search/all_11.js new file mode 100644 index 0000000..2710d28 --- /dev/null +++ b/docs/search/all_11.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['this_5bentityheadersenum_20headerkey_5d',['this[EntityHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab321ca65351ec6f136003703c0149535',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bgeneralheadersenum_20headerkey_5d',['this[GeneralHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7feec018ede979bceaa2526ae31e9b49',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5brequestheadersenum_20headerkey_5d',['this[RequestHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7d39f260b970569a93b19005abf5006a',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bresponseheadersenum_20headerkey_5d',['this[ResponseHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a6346e2f51cb58303646014cef59393c9',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bstring_20headerkey_5d',['this[string headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7a7505189a9f2a15ce0a563fcf1ac246',1,'MTSC::Common::Http::HttpMessage']]], + ['tick',['Tick',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab03755cacb365c29a3bc6dbe17884b64',1,'MTSC.Client.Handlers.IHandler.Tick()'],['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#a544defcb7ffcfc6008fd85d0997258a6',1,'MTSC.Common.Http.ServerModules.IHttpModule.Tick()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a24f493fa3d89d960a635f0dc36e64b3d',1,'MTSC.Server.Handlers.IHandler.Tick()']]], + ['tickrate',['TickRate',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a11711d9464da010154adc781a3e0bf71',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/all_12.html b/docs/search/all_12.html new file mode 100644 index 0000000..0876adf --- /dev/null +++ b/docs/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_12.js b/docs/search/all_12.js new file mode 100644 index 0000000..010a389 --- /dev/null +++ b/docs/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['websockethandler',['WebsocketHandler',['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html',1,'MTSC.Client.Handlers.WebsocketHandler'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html',1,'MTSC.Server.Handlers.WebsocketHandler']]], + ['websocketmessage',['WebsocketMessage',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html',1,'MTSC.Common.WebSockets.WebsocketMessage'],['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab783b89e4cefcfa4be94d6746e3b434e',1,'MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage(byte[] messageBytes)'],['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2d42d9363c74a535179edb1c51e1d439',1,'MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage()']]] +]; diff --git a/docs/search/all_2.html b/docs/search/all_2.html new file mode 100644 index 0000000..4c33d85 --- /dev/null +++ b/docs/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_2.js b/docs/search/all_2.js new file mode 100644 index 0000000..649d595 --- /dev/null +++ b/docs/search/all_2.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['certificatevalidationcallback',['CertificateValidationCallback',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aedd2779b640467b253fa48152c0ec22b',1,'MTSC::Client::Client']]], + ['chatmodule',['ChatModule',['../df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html',1,'MTSC::Common::WebSockets::ClientModules']]], + ['client',['Client',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html',1,'MTSC::Client']]], + ['clientdata',['ClientData',['../d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html',1,'MTSC::Server']]], + ['clientremoved',['ClientRemoved',['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a1511874ea35c4431b9e07e7246661355',1,'MTSC::Server::Handlers::IHandler']]], + ['clients',['Clients',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#aa54bab2059f42b5329db361476a40a31',1,'MTSC::Server::Server']]], + ['closeconnection',['CloseConnection',['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4613259948548fae6fc518c7eb0b7ef6',1,'MTSC::Server::Handlers::WebsocketHandler']]], + ['connect',['Connect',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a568cfb39545571778388106fc3dfe536',1,'MTSC::Client::Client']]], + ['connectasync',['ConnectAsync',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a3c3183ea32b519482cec9a41d436fa11',1,'MTSC::Client::Client']]], + ['connectionclosed',['ConnectionClosed',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a01f67a29451915afa859be4680d1a056',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionClosed()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af7995b56b7be456b8e243219723a58a3',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionClosed()']]], + ['connectioninitialized',['ConnectionInitialized',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#accef43d19c0b3d3de384c5b6c18cde4c',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionInitialized()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af8343d909795c638731c01c92bfb3101',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionInitialized()']]], + ['consolelogger',['ConsoleLogger',['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html',1,'MTSC::Logging']]], + ['containsheader',['ContainsHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab2112e24bfb1830b9061d9f804246316',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(ResponseHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a97021b8cc907ff0a9dc47ad5cbd37a89',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(RequestHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a5d224be02f00fc5793efdfd9bc659725',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(GeneralHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a020cf8a3319bad005fb7dc66cfe40ce6',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(string header)']]] +]; diff --git a/docs/search/all_3.html b/docs/search/all_3.html new file mode 100644 index 0000000..b634070 --- /dev/null +++ b/docs/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_3.js b/docs/search/all_3.js new file mode 100644 index 0000000..1090a60 --- /dev/null +++ b/docs/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['data',['Data',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ae66efe0af1a09ed8a7397a54403c4731',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['debugconsolelogger',['DebugConsoleLogger',['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html',1,'MTSC::Logging']]], + ['disconnect',['Disconnect',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aae7c24c33b16d9023fe0f07aacb3adfa',1,'MTSC::Client::Client']]], + ['disconnected',['Disconnected',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab6cd7a214480e15a9a310e4ac2cf842b',1,'MTSC::Client::Handlers::IHandler']]] +]; diff --git a/docs/search/all_4.html b/docs/search/all_4.html new file mode 100644 index 0000000..dd062ae --- /dev/null +++ b/docs/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_4.js b/docs/search/all_4.js new file mode 100644 index 0000000..6101424 --- /dev/null +++ b/docs/search/all_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['echomodule',['EchoModule',['../d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html',1,'MTSC::Common::WebSockets::ServerModules']]], + ['encryptionhandler',['EncryptionHandler',['../d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html',1,'MTSC.Server.Handlers.EncryptionHandler'],['../dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html',1,'MTSC.Client.Handlers.EncryptionHandler'],['../dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html#a8eb742cf50a76a170acc597ab1a4ce9d',1,'MTSC.Client.Handlers.EncryptionHandler.EncryptionHandler()'],['../d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html#ae5bb24ae6e62eaec16907bd87d5f30f8',1,'MTSC.Server.Handlers.EncryptionHandler.EncryptionHandler()']]], + ['exceptionconsolelogger',['ExceptionConsoleLogger',['../df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html',1,'MTSC::Exceptions']]], + ['exceptionthrower',['ExceptionThrower',['../dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html',1,'MTSC::Exceptions']]] +]; diff --git a/docs/search/all_5.html b/docs/search/all_5.html new file mode 100644 index 0000000..f0780fd --- /dev/null +++ b/docs/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_5.js b/docs/search/all_5.js new file mode 100644 index 0000000..38f8be7 --- /dev/null +++ b/docs/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fileservermodule',['FileServerModule',['../d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html',1,'MTSC::Common::Http::ServerModules']]], + ['fin',['FIN',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#afdcb7b3936befb1ec23c8ef1a3006c81',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['forcetickrate',['ForceTickrate',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a97ca0dda04d7bfddab2d115c4b6b3abe',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/all_6.html b/docs/search/all_6.html new file mode 100644 index 0000000..39b0f55 --- /dev/null +++ b/docs/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_6.js b/docs/search/all_6.js new file mode 100644 index 0000000..be4400a --- /dev/null +++ b/docs/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getmessagebytes',['GetMessageBytes',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab11957d5fe1a10fa5f0e15edcb4cfd62',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['getpostform',['GetPostForm',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a82a557dc8206fb11dfb17e0fb72aa7d0',1,'MTSC::Common::Http::HttpMessage']]], + ['getrequest',['GetRequest',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#acef383459a1111f43d8912a8d386ff7b',1,'MTSC::Common::Http::HttpMessage']]], + ['getresponse',['GetResponse',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a27858b4066156d6ad11c3c38694fa7b5',1,'MTSC::Common::Http::HttpMessage']]] +]; diff --git a/docs/search/all_7.html b/docs/search/all_7.html new file mode 100644 index 0000000..9cd0196 --- /dev/null +++ b/docs/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_7.js b/docs/search/all_7.js new file mode 100644 index 0000000..e9ce251 --- /dev/null +++ b/docs/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['handleclient',['HandleClient',['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a6a993648d2c8d6406ffa674e3f5b7bd1',1,'MTSC::Server::Handlers::IHandler']]], + ['handleexception',['HandleException',['../df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html#a14297ad13521dcb5f54c0d5795920bae',1,'MTSC.Exceptions.ExceptionConsoleLogger.HandleException()'],['../dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html#a1597553012627d61aa7813a6c98db46e',1,'MTSC.Exceptions.ExceptionThrower.HandleException()'],['../d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html#a9f9e811f32979932510114a3807bfded',1,'MTSC.Exceptions.IExceptionHandler.HandleException()']]], + ['handlereceivedmessage',['HandleReceivedMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a3541fed25473836601b6f90cc885beef',1,'MTSC.Client.Handlers.IHandler.HandleReceivedMessage()'],['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a5ed526a19ac6cb5eda22740fdbf166ea',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.HandleReceivedMessage()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#a4c7c43390bb8f4f49cb2d354a8cb57d8',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.HandleReceivedMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ac96e4842233e811c6991fd1e46ca1314',1,'MTSC.Server.Handlers.IHandler.HandleReceivedMessage()']]], + ['handlerequest',['HandleRequest',['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#aa9dd1d20426aa04e563e45774073fce2',1,'MTSC::Common::Http::ServerModules::IHttpModule']]], + ['handleresponse',['HandleResponse',['../d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html#afc38289a8fef5bf3c11bfa6c26bf129d',1,'MTSC::Common::Http::ClientModules::IHttpModule']]], + ['handlesendmessage',['HandleSendMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a6a18b7706a9d3423c659c37ab62cb5dd',1,'MTSC.Client.Handlers.IHandler.HandleSendMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a00b700839ab2d25273e8b09990b3734c',1,'MTSC.Server.Handlers.IHandler.HandleSendMessage()']]], + ['helloworldmodule',['HelloWorldModule',['../d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html',1,'MTSC::Common::Http::ServerModules']]], + ['http404module',['Http404Module',['../dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html',1,'MTSC::Common::Http::ServerModules']]], + ['httphandler',['HttpHandler',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html',1,'MTSC.Client.Handlers.HttpHandler'],['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html',1,'MTSC.Server.Handlers.HttpHandler']]], + ['httpmessage',['HttpMessage',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html',1,'MTSC::Common::Http']]] +]; diff --git a/docs/search/all_8.html b/docs/search/all_8.html new file mode 100644 index 0000000..1e8fb9c --- /dev/null +++ b/docs/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_8.js b/docs/search/all_8.js new file mode 100644 index 0000000..a1c5cd5 --- /dev/null +++ b/docs/search/all_8.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['iexceptionhandler',['IExceptionHandler',['../d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html',1,'MTSC::Exceptions']]], + ['ihandler',['IHandler',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html',1,'MTSC.Client.Handlers.IHandler'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html',1,'MTSC.Server.Handlers.IHandler']]], + ['ihttpmodule',['IHttpModule',['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html',1,'MTSC.Common.Http.ServerModules.IHttpModule'],['../d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html',1,'MTSC.Common.Http.ClientModules.IHttpModule']]], + ['ilogger',['ILogger',['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html',1,'MTSC::Logging']]], + ['initializeconnection',['InitializeConnection',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a28c55fc1af4995b8e3a95ba07d6bffde',1,'MTSC::Client::Handlers::IHandler']]], + ['invalidfirstbyteexception',['InvalidFirstByteException',['../d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html',1,'MTSC::Exceptions']]], + ['invalidheaderexception',['InvalidHeaderException',['../d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html',1,'MTSC::Exceptions']]], + ['invalidhttpversionexception',['InvalidHttpVersionException',['../d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html',1,'MTSC::Exceptions']]], + ['invalidpostformexception',['InvalidPostFormException',['../d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html',1,'MTSC::Exceptions']]], + ['invalidrequesturiexception',['InvalidRequestURIException',['../d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html',1,'MTSC::Exceptions']]], + ['invalidstatuscodeexception',['InvalidStatusCodeException',['../dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html',1,'MTSC::Exceptions']]], + ['invalidwebsocketformatexception',['InvalidWebsocketFormatException',['../d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html',1,'MTSC::Exceptions']]], + ['iwebsocketmodule',['IWebsocketModule',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule']]] +]; diff --git a/docs/search/all_9.html b/docs/search/all_9.html new file mode 100644 index 0000000..27df366 --- /dev/null +++ b/docs/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_9.js b/docs/search/all_9.js new file mode 100644 index 0000000..bdb39cc --- /dev/null +++ b/docs/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['log',['Log',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a180b7a8c584e5c073c2ecbd8fde44e8b',1,'MTSC.Client.Client.Log()'],['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#a9fd52d789f68285f284aa902175638b7',1,'MTSC.Logging.ConsoleLogger.Log()'],['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#ac99a610520e156791de0b74368af616d',1,'MTSC.Logging.DebugConsoleLogger.Log()'],['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a4a07ceb983932f65b2b73ec4f0fb1018',1,'MTSC.Logging.ILogger.Log()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a3452d98e3588375075ba2e9a872ce545',1,'MTSC.Server.Server.Log()']]], + ['logdebug',['LogDebug',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ac4b8e6be3de6ad2e646815c577f5a7e3',1,'MTSC.Client.Client.LogDebug()'],['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#aa52943a8f24372455b11ede5ee236f55',1,'MTSC.Logging.ConsoleLogger.LogDebug()'],['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#a6863b58170d01b798634ee9fee83e917',1,'MTSC.Logging.DebugConsoleLogger.LogDebug()'],['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a82ab01fbbdc30f20f89369bdc7f6e438',1,'MTSC.Logging.ILogger.LogDebug()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a917f430c6dc56d51cd21ab207cb8a4cf',1,'MTSC.Server.Server.LogDebug()']]] +]; diff --git a/docs/search/all_a.html b/docs/search/all_a.html new file mode 100644 index 0000000..63f9254 --- /dev/null +++ b/docs/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_a.js b/docs/search/all_a.js new file mode 100644 index 0000000..06ad177 --- /dev/null +++ b/docs/search/all_a.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['client',['Client',['../d3/dc6/namespace_m_t_s_c_1_1_client.html',1,'MTSC']]], + ['clientmodules',['ClientModules',['../da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html',1,'MTSC.Common.Http.ClientModules'],['../df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html',1,'MTSC.Common.WebSockets.ClientModules']]], + ['common',['Common',['../db/dca/namespace_m_t_s_c_1_1_common.html',1,'MTSC']]], + ['exceptions',['Exceptions',['../d1/d56/namespace_m_t_s_c_1_1_exceptions.html',1,'MTSC']]], + ['handlers',['Handlers',['../da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html',1,'MTSC.Client.Handlers'],['../d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html',1,'MTSC.Server.Handlers']]], + ['http',['Http',['../d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html',1,'MTSC::Common']]], + ['logging',['Logging',['../db/dbe/namespace_m_t_s_c_1_1_logging.html',1,'MTSC']]], + ['mask',['Mask',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a6df2b0cb35d260167860bc8700019351',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['masked',['Masked',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ad079fde84aeb3af5ba52a844e136dcf1',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['message',['Message',['../dc/dd4/struct_m_t_s_c_1_1_message.html',1,'MTSC']]], + ['messagelength',['MessageLength',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a600fffeaf9f28648333a380b13231e1f',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['methodinvalidexception',['MethodInvalidException',['../de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html',1,'MTSC::Exceptions']]], + ['mtsc',['MTSC',['../d7/dcd/namespace_m_t_s_c.html',1,'']]], + ['server',['Server',['../d3/d97/namespace_m_t_s_c_1_1_server.html',1,'MTSC']]], + ['servermodules',['ServerModules',['../df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html',1,'MTSC.Common.Http.ServerModules'],['../d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html',1,'MTSC.Common.WebSockets.ServerModules']]], + ['websockets',['WebSockets',['../de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html',1,'MTSC::Common']]] +]; diff --git a/docs/search/all_b.html b/docs/search/all_b.html new file mode 100644 index 0000000..44ae3e4 --- /dev/null +++ b/docs/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_b.js b/docs/search/all_b.js new file mode 100644 index 0000000..f04f05b --- /dev/null +++ b/docs/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nodataexception',['NoDataException',['../da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html',1,'MTSC::Exceptions']]] +]; diff --git a/docs/search/all_c.html b/docs/search/all_c.html new file mode 100644 index 0000000..3de1586 --- /dev/null +++ b/docs/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_c.js b/docs/search/all_c.js new file mode 100644 index 0000000..da37bf1 --- /dev/null +++ b/docs/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['opcode',['Opcode',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2f63f3604fa46cc17133590b1e33eec9',1,'MTSC::Common::WebSockets::WebsocketMessage']]] +]; diff --git a/docs/search/all_d.html b/docs/search/all_d.html new file mode 100644 index 0000000..a2d5bd7 --- /dev/null +++ b/docs/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_d.js b/docs/search/all_d.js new file mode 100644 index 0000000..8c5d291 --- /dev/null +++ b/docs/search/all_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['parserequest',['ParseRequest',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a85656b5625b7572777ab218ba345f612',1,'MTSC::Common::Http::HttpMessage']]], + ['parseresponse',['ParseResponse',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a039d2c6c8d2a0d26ca0432fbe0a372cf',1,'MTSC::Common::Http::HttpMessage']]], + ['port',['Port',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#adc95de3549415e7dd8332710f3f1461e',1,'MTSC::Server::Server']]], + ['prehandlereceivedmessage',['PreHandleReceivedMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#acd8845050e973018c1a57e23a3e06247',1,'MTSC.Client.Handlers.IHandler.PreHandleReceivedMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ad90301b90fdf8fdebcccec08a086358d',1,'MTSC.Server.Handlers.IHandler.PreHandleReceivedMessage()']]] +]; diff --git a/docs/search/all_e.html b/docs/search/all_e.html new file mode 100644 index 0000000..f9a056d --- /dev/null +++ b/docs/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_e.js b/docs/search/all_e.js new file mode 100644 index 0000000..c091bd9 --- /dev/null +++ b/docs/search/all_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['queuemessage',['QueueMessage',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ab4ebbd8217aea0c1d57ede542c404183',1,'MTSC.Client.Client.QueueMessage()'],['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#aab375ecfc0b27c0a0ed8355c5904eb15',1,'MTSC.Client.Handlers.WebsocketHandler.QueueMessage()'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4ba115e772f3c30814b21c508ef2cf61',1,'MTSC.Server.Handlers.WebsocketHandler.QueueMessage(ClientData client, byte[] message)'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a14849ffda41c01d12dd7ef87bd77f539',1,'MTSC.Server.Handlers.WebsocketHandler.QueueMessage(ClientData client, WebsocketMessage message)'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4231d59cf9d26d7f9eda14d2bf1e27ee',1,'MTSC.Server.Server.QueueMessage()']]], + ['queueresponse',['QueueResponse',['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#abee4834854edfd4920ce31ba08a649a8',1,'MTSC::Server::Handlers::HttpHandler']]] +]; diff --git a/docs/search/all_f.html b/docs/search/all_f.html new file mode 100644 index 0000000..f6997fa --- /dev/null +++ b/docs/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/all_f.js b/docs/search/all_f.js new file mode 100644 index 0000000..9f9aade --- /dev/null +++ b/docs/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['run',['Run',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af4bb64b680d23d398f3f7e289569189d',1,'MTSC::Server::Server']]], + ['runasync',['RunAsync',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ad56ca49ea0918f37248b0e40bf4a4907',1,'MTSC::Server::Server']]], + ['running',['Running',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af7425affecbc0039273437e4ebb3fde1',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/classes_0.html b/docs/search/classes_0.html new file mode 100644 index 0000000..b3c6ec6 --- /dev/null +++ b/docs/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js new file mode 100644 index 0000000..5046a2d --- /dev/null +++ b/docs/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['broadcasthandler',['BroadcastHandler',['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html',1,'MTSC.Client.Handlers.BroadcastHandler'],['../dc/d44/class_m_t_s_c_1_1_server_1_1_handlers_1_1_broadcast_handler.html',1,'MTSC.Server.Handlers.BroadcastHandler']]], + ['broadcastmodule',['BroadcastModule',['../d5/d0c/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_broadcast_module.html',1,'MTSC::Common::WebSockets::ServerModules']]] +]; diff --git a/docs/search/classes_1.html b/docs/search/classes_1.html new file mode 100644 index 0000000..b744c4d --- /dev/null +++ b/docs/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_1.js b/docs/search/classes_1.js new file mode 100644 index 0000000..8e9cea5 --- /dev/null +++ b/docs/search/classes_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['chatmodule',['ChatModule',['../df/def/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_chat_module.html',1,'MTSC::Common::WebSockets::ClientModules']]], + ['client',['Client',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html',1,'MTSC::Client']]], + ['clientdata',['ClientData',['../d4/dbb/class_m_t_s_c_1_1_server_1_1_client_data.html',1,'MTSC::Server']]], + ['consolelogger',['ConsoleLogger',['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html',1,'MTSC::Logging']]] +]; diff --git a/docs/search/classes_2.html b/docs/search/classes_2.html new file mode 100644 index 0000000..7878acb --- /dev/null +++ b/docs/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js new file mode 100644 index 0000000..30b29d9 --- /dev/null +++ b/docs/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['debugconsolelogger',['DebugConsoleLogger',['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html',1,'MTSC::Logging']]] +]; diff --git a/docs/search/classes_3.html b/docs/search/classes_3.html new file mode 100644 index 0000000..c231d86 --- /dev/null +++ b/docs/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js new file mode 100644 index 0000000..6407b3d --- /dev/null +++ b/docs/search/classes_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['echomodule',['EchoModule',['../d4/d10/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_echo_module.html',1,'MTSC::Common::WebSockets::ServerModules']]], + ['encryptionhandler',['EncryptionHandler',['../d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html',1,'MTSC.Server.Handlers.EncryptionHandler'],['../dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html',1,'MTSC.Client.Handlers.EncryptionHandler']]], + ['exceptionconsolelogger',['ExceptionConsoleLogger',['../df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html',1,'MTSC::Exceptions']]], + ['exceptionthrower',['ExceptionThrower',['../dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html',1,'MTSC::Exceptions']]] +]; diff --git a/docs/search/classes_4.html b/docs/search/classes_4.html new file mode 100644 index 0000000..86dd438 --- /dev/null +++ b/docs/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js new file mode 100644 index 0000000..732e4de --- /dev/null +++ b/docs/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fileservermodule',['FileServerModule',['../d8/d56/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_file_server_module.html',1,'MTSC::Common::Http::ServerModules']]] +]; diff --git a/docs/search/classes_5.html b/docs/search/classes_5.html new file mode 100644 index 0000000..7aaef4d --- /dev/null +++ b/docs/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js new file mode 100644 index 0000000..8e36096 --- /dev/null +++ b/docs/search/classes_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['helloworldmodule',['HelloWorldModule',['../d6/d98/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_hello_world_module.html',1,'MTSC::Common::Http::ServerModules']]], + ['http404module',['Http404Module',['../dc/dd3/class_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_http404_module.html',1,'MTSC::Common::Http::ServerModules']]], + ['httphandler',['HttpHandler',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html',1,'MTSC.Client.Handlers.HttpHandler'],['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html',1,'MTSC.Server.Handlers.HttpHandler']]], + ['httpmessage',['HttpMessage',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html',1,'MTSC::Common::Http']]] +]; diff --git a/docs/search/classes_6.html b/docs/search/classes_6.html new file mode 100644 index 0000000..aad7834 --- /dev/null +++ b/docs/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js new file mode 100644 index 0000000..dbb9b08 --- /dev/null +++ b/docs/search/classes_6.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['iexceptionhandler',['IExceptionHandler',['../d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html',1,'MTSC::Exceptions']]], + ['ihandler',['IHandler',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html',1,'MTSC.Client.Handlers.IHandler'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html',1,'MTSC.Server.Handlers.IHandler']]], + ['ihttpmodule',['IHttpModule',['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html',1,'MTSC.Common.Http.ServerModules.IHttpModule'],['../d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html',1,'MTSC.Common.Http.ClientModules.IHttpModule']]], + ['ilogger',['ILogger',['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html',1,'MTSC::Logging']]], + ['invalidfirstbyteexception',['InvalidFirstByteException',['../d7/d18/class_m_t_s_c_1_1_exceptions_1_1_invalid_first_byte_exception.html',1,'MTSC::Exceptions']]], + ['invalidheaderexception',['InvalidHeaderException',['../d0/d0e/class_m_t_s_c_1_1_exceptions_1_1_invalid_header_exception.html',1,'MTSC::Exceptions']]], + ['invalidhttpversionexception',['InvalidHttpVersionException',['../d3/d73/class_m_t_s_c_1_1_exceptions_1_1_invalid_http_version_exception.html',1,'MTSC::Exceptions']]], + ['invalidpostformexception',['InvalidPostFormException',['../d9/dea/class_m_t_s_c_1_1_exceptions_1_1_invalid_post_form_exception.html',1,'MTSC::Exceptions']]], + ['invalidrequesturiexception',['InvalidRequestURIException',['../d6/dab/class_m_t_s_c_1_1_exceptions_1_1_invalid_request_u_r_i_exception.html',1,'MTSC::Exceptions']]], + ['invalidstatuscodeexception',['InvalidStatusCodeException',['../dd/d91/class_m_t_s_c_1_1_exceptions_1_1_invalid_status_code_exception.html',1,'MTSC::Exceptions']]], + ['invalidwebsocketformatexception',['InvalidWebsocketFormatException',['../d6/d77/class_m_t_s_c_1_1_exceptions_1_1_invalid_websocket_format_exception.html',1,'MTSC::Exceptions']]], + ['iwebsocketmodule',['IWebsocketModule',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule']]] +]; diff --git a/docs/search/classes_7.html b/docs/search/classes_7.html new file mode 100644 index 0000000..794e394 --- /dev/null +++ b/docs/search/classes_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js new file mode 100644 index 0000000..edf76f4 --- /dev/null +++ b/docs/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['message',['Message',['../dc/dd4/struct_m_t_s_c_1_1_message.html',1,'MTSC']]], + ['methodinvalidexception',['MethodInvalidException',['../de/dab/class_m_t_s_c_1_1_exceptions_1_1_method_invalid_exception.html',1,'MTSC::Exceptions']]] +]; diff --git a/docs/search/classes_8.html b/docs/search/classes_8.html new file mode 100644 index 0000000..1ba60c9 --- /dev/null +++ b/docs/search/classes_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js new file mode 100644 index 0000000..f04f05b --- /dev/null +++ b/docs/search/classes_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nodataexception',['NoDataException',['../da/d6f/class_m_t_s_c_1_1_exceptions_1_1_no_data_exception.html',1,'MTSC::Exceptions']]] +]; diff --git a/docs/search/classes_9.html b/docs/search/classes_9.html new file mode 100644 index 0000000..565e7d7 --- /dev/null +++ b/docs/search/classes_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_9.js b/docs/search/classes_9.js new file mode 100644 index 0000000..7fe1e23 --- /dev/null +++ b/docs/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['server',['Server',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html',1,'MTSC::Server']]] +]; diff --git a/docs/search/classes_a.html b/docs/search/classes_a.html new file mode 100644 index 0000000..ca7479a --- /dev/null +++ b/docs/search/classes_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js new file mode 100644 index 0000000..3d9588c --- /dev/null +++ b/docs/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['websockethandler',['WebsocketHandler',['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html',1,'MTSC.Client.Handlers.WebsocketHandler'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html',1,'MTSC.Server.Handlers.WebsocketHandler']]], + ['websocketmessage',['WebsocketMessage',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html',1,'MTSC::Common::WebSockets']]] +]; diff --git a/docs/search/close.png b/docs/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/search/functions_0.html b/docs/search/functions_0.html new file mode 100644 index 0000000..bc73761 --- /dev/null +++ b/docs/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js new file mode 100644 index 0000000..e87c94a --- /dev/null +++ b/docs/search/functions_0.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['addentityheaders',['AddEntityHeaders',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#abe600f8b5b6dcff10ec21999229ec4ba',1,'MTSC::Common::Http::HttpMessage']]], + ['addexceptionhandler',['AddExceptionHandler',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4a466715c54b39553de4e06a051d20ef',1,'MTSC.Client.Client.AddExceptionHandler()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a03c7f49c82093ef63c6a23bdca0ebc06',1,'MTSC.Server.Server.AddExceptionHandler()']]], + ['addgeneralheader',['AddGeneralHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a959c91a346a8fc3fd21cc8b3ff5f4c88',1,'MTSC::Common::Http::HttpMessage']]], + ['addhandler',['AddHandler',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a4e50b197b82fb2d921939fc7af8b1e20',1,'MTSC.Client.Client.AddHandler()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#abe8507e08c560f198f3c6c82838a6687',1,'MTSC.Server.Server.AddHandler()']]], + ['addhttpmodule',['AddHttpModule',['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#af4e9ae4dea869ad9a487b19f776b07b7',1,'MTSC::Server::Handlers::HttpHandler']]], + ['addlogger',['AddLogger',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a0b628912644ae436441aa9407b4c1b3e',1,'MTSC.Client.Client.AddLogger()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ac09ec60dfa2c27388cf0c92ee25721fa',1,'MTSC.Server.Server.AddLogger()']]], + ['addmodule',['AddModule',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#ae292eccc409b08c21abb9a5100e7af91',1,'MTSC.Client.Handlers.HttpHandler.AddModule()'],['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#a30f0f192ec1d875f28a7e07529feecb8',1,'MTSC.Client.Handlers.WebsocketHandler.AddModule()']]], + ['addrequestheader',['AddRequestHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a598978cd10bc3160ab2656d59596b27e',1,'MTSC::Common::Http::HttpMessage']]], + ['addresponseheader',['AddResponseHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a354738dd74b0be81f81f2ce25e02f39e',1,'MTSC::Common::Http::HttpMessage']]], + ['addwebsockethandler',['AddWebsocketHandler',['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a9052e4deaf71384b7c3906cdc04e5eea',1,'MTSC::Server::Handlers::WebsocketHandler']]] +]; diff --git a/docs/search/functions_1.html b/docs/search/functions_1.html new file mode 100644 index 0000000..bfcf880 --- /dev/null +++ b/docs/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js new file mode 100644 index 0000000..e422a8f --- /dev/null +++ b/docs/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['broadcast',['Broadcast',['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a74fb30591fe06d29601c645937e3b4da',1,'MTSC::Client::Handlers::BroadcastHandler']]], + ['broadcasthandler',['BroadcastHandler',['../dc/d75/class_m_t_s_c_1_1_client_1_1_handlers_1_1_broadcast_handler.html#a3bb5d75cc804dbf9b42ec893967b365a',1,'MTSC::Client::Handlers::BroadcastHandler']]] +]; diff --git a/docs/search/functions_2.html b/docs/search/functions_2.html new file mode 100644 index 0000000..2b44474 --- /dev/null +++ b/docs/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_2.js b/docs/search/functions_2.js new file mode 100644 index 0000000..b7330f2 --- /dev/null +++ b/docs/search/functions_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['clientremoved',['ClientRemoved',['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a1511874ea35c4431b9e07e7246661355',1,'MTSC::Server::Handlers::IHandler']]], + ['closeconnection',['CloseConnection',['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4613259948548fae6fc518c7eb0b7ef6',1,'MTSC::Server::Handlers::WebsocketHandler']]], + ['connect',['Connect',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a568cfb39545571778388106fc3dfe536',1,'MTSC::Client::Client']]], + ['connectasync',['ConnectAsync',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a3c3183ea32b519482cec9a41d436fa11',1,'MTSC::Client::Client']]], + ['connectionclosed',['ConnectionClosed',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a01f67a29451915afa859be4680d1a056',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionClosed()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af7995b56b7be456b8e243219723a58a3',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionClosed()']]], + ['connectioninitialized',['ConnectionInitialized',['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#accef43d19c0b3d3de384c5b6c18cde4c',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.ConnectionInitialized()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#af8343d909795c638731c01c92bfb3101',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.ConnectionInitialized()']]], + ['containsheader',['ContainsHeader',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab2112e24bfb1830b9061d9f804246316',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(ResponseHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a97021b8cc907ff0a9dc47ad5cbd37a89',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(RequestHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a5d224be02f00fc5793efdfd9bc659725',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(GeneralHeadersEnum header)'],['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a020cf8a3319bad005fb7dc66cfe40ce6',1,'MTSC.Common.Http.HttpMessage.ContainsHeader(string header)']]] +]; diff --git a/docs/search/functions_3.html b/docs/search/functions_3.html new file mode 100644 index 0000000..3dca367 --- /dev/null +++ b/docs/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js new file mode 100644 index 0000000..9950a8f --- /dev/null +++ b/docs/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['disconnect',['Disconnect',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aae7c24c33b16d9023fe0f07aacb3adfa',1,'MTSC::Client::Client']]], + ['disconnected',['Disconnected',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab6cd7a214480e15a9a310e4ac2cf842b',1,'MTSC::Client::Handlers::IHandler']]] +]; diff --git a/docs/search/functions_4.html b/docs/search/functions_4.html new file mode 100644 index 0000000..e713f28 --- /dev/null +++ b/docs/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js new file mode 100644 index 0000000..a345f8b --- /dev/null +++ b/docs/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['encryptionhandler',['EncryptionHandler',['../dd/d5c/class_m_t_s_c_1_1_client_1_1_handlers_1_1_encryption_handler.html#a8eb742cf50a76a170acc597ab1a4ce9d',1,'MTSC.Client.Handlers.EncryptionHandler.EncryptionHandler()'],['../d3/d04/class_m_t_s_c_1_1_server_1_1_handlers_1_1_encryption_handler.html#ae5bb24ae6e62eaec16907bd87d5f30f8',1,'MTSC.Server.Handlers.EncryptionHandler.EncryptionHandler()']]] +]; diff --git a/docs/search/functions_5.html b/docs/search/functions_5.html new file mode 100644 index 0000000..cfe6b17 --- /dev/null +++ b/docs/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js new file mode 100644 index 0000000..be4400a --- /dev/null +++ b/docs/search/functions_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['getmessagebytes',['GetMessageBytes',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab11957d5fe1a10fa5f0e15edcb4cfd62',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['getpostform',['GetPostForm',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a82a557dc8206fb11dfb17e0fb72aa7d0',1,'MTSC::Common::Http::HttpMessage']]], + ['getrequest',['GetRequest',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#acef383459a1111f43d8912a8d386ff7b',1,'MTSC::Common::Http::HttpMessage']]], + ['getresponse',['GetResponse',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a27858b4066156d6ad11c3c38694fa7b5',1,'MTSC::Common::Http::HttpMessage']]] +]; diff --git a/docs/search/functions_6.html b/docs/search/functions_6.html new file mode 100644 index 0000000..a78ec13 --- /dev/null +++ b/docs/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_6.js b/docs/search/functions_6.js new file mode 100644 index 0000000..75557e6 --- /dev/null +++ b/docs/search/functions_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['handleclient',['HandleClient',['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a6a993648d2c8d6406ffa674e3f5b7bd1',1,'MTSC::Server::Handlers::IHandler']]], + ['handleexception',['HandleException',['../df/d86/class_m_t_s_c_1_1_exceptions_1_1_exception_console_logger.html#a14297ad13521dcb5f54c0d5795920bae',1,'MTSC.Exceptions.ExceptionConsoleLogger.HandleException()'],['../dc/d94/class_m_t_s_c_1_1_exceptions_1_1_exception_thrower.html#a1597553012627d61aa7813a6c98db46e',1,'MTSC.Exceptions.ExceptionThrower.HandleException()'],['../d8/d5c/interface_m_t_s_c_1_1_exceptions_1_1_i_exception_handler.html#a9f9e811f32979932510114a3807bfded',1,'MTSC.Exceptions.IExceptionHandler.HandleException()']]], + ['handlereceivedmessage',['HandleReceivedMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a3541fed25473836601b6f90cc885beef',1,'MTSC.Client.Handlers.IHandler.HandleReceivedMessage()'],['../dc/de4/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules_1_1_i_websocket_module.html#a5ed526a19ac6cb5eda22740fdbf166ea',1,'MTSC.Common.WebSockets.ClientModules.IWebsocketModule.HandleReceivedMessage()'],['../d9/dc0/interface_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules_1_1_i_websocket_module.html#a4c7c43390bb8f4f49cb2d354a8cb57d8',1,'MTSC.Common.WebSockets.ServerModules.IWebsocketModule.HandleReceivedMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ac96e4842233e811c6991fd1e46ca1314',1,'MTSC.Server.Handlers.IHandler.HandleReceivedMessage()']]], + ['handlerequest',['HandleRequest',['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#aa9dd1d20426aa04e563e45774073fce2',1,'MTSC::Common::Http::ServerModules::IHttpModule']]], + ['handleresponse',['HandleResponse',['../d5/d66/interface_m_t_s_c_1_1_common_1_1_http_1_1_client_modules_1_1_i_http_module.html#afc38289a8fef5bf3c11bfa6c26bf129d',1,'MTSC::Common::Http::ClientModules::IHttpModule']]], + ['handlesendmessage',['HandleSendMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a6a18b7706a9d3423c659c37ab62cb5dd',1,'MTSC.Client.Handlers.IHandler.HandleSendMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a00b700839ab2d25273e8b09990b3734c',1,'MTSC.Server.Handlers.IHandler.HandleSendMessage()']]] +]; diff --git a/docs/search/functions_7.html b/docs/search/functions_7.html new file mode 100644 index 0000000..7842361 --- /dev/null +++ b/docs/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js new file mode 100644 index 0000000..17bb7bd --- /dev/null +++ b/docs/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['initializeconnection',['InitializeConnection',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#a28c55fc1af4995b8e3a95ba07d6bffde',1,'MTSC::Client::Handlers::IHandler']]] +]; diff --git a/docs/search/functions_8.html b/docs/search/functions_8.html new file mode 100644 index 0000000..48feafe --- /dev/null +++ b/docs/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_8.js b/docs/search/functions_8.js new file mode 100644 index 0000000..bdb39cc --- /dev/null +++ b/docs/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['log',['Log',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#a180b7a8c584e5c073c2ecbd8fde44e8b',1,'MTSC.Client.Client.Log()'],['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#a9fd52d789f68285f284aa902175638b7',1,'MTSC.Logging.ConsoleLogger.Log()'],['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#ac99a610520e156791de0b74368af616d',1,'MTSC.Logging.DebugConsoleLogger.Log()'],['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a4a07ceb983932f65b2b73ec4f0fb1018',1,'MTSC.Logging.ILogger.Log()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a3452d98e3588375075ba2e9a872ce545',1,'MTSC.Server.Server.Log()']]], + ['logdebug',['LogDebug',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ac4b8e6be3de6ad2e646815c577f5a7e3',1,'MTSC.Client.Client.LogDebug()'],['../de/dd8/class_m_t_s_c_1_1_logging_1_1_console_logger.html#aa52943a8f24372455b11ede5ee236f55',1,'MTSC.Logging.ConsoleLogger.LogDebug()'],['../da/dd0/class_m_t_s_c_1_1_logging_1_1_debug_console_logger.html#a6863b58170d01b798634ee9fee83e917',1,'MTSC.Logging.DebugConsoleLogger.LogDebug()'],['../d6/dcb/interface_m_t_s_c_1_1_logging_1_1_i_logger.html#a82ab01fbbdc30f20f89369bdc7f6e438',1,'MTSC.Logging.ILogger.LogDebug()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a917f430c6dc56d51cd21ab207cb8a4cf',1,'MTSC.Server.Server.LogDebug()']]] +]; diff --git a/docs/search/functions_9.html b/docs/search/functions_9.html new file mode 100644 index 0000000..0f05a8b --- /dev/null +++ b/docs/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_9.js b/docs/search/functions_9.js new file mode 100644 index 0000000..fd05720 --- /dev/null +++ b/docs/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parserequest',['ParseRequest',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a85656b5625b7572777ab218ba345f612',1,'MTSC::Common::Http::HttpMessage']]], + ['parseresponse',['ParseResponse',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a039d2c6c8d2a0d26ca0432fbe0a372cf',1,'MTSC::Common::Http::HttpMessage']]], + ['prehandlereceivedmessage',['PreHandleReceivedMessage',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#acd8845050e973018c1a57e23a3e06247',1,'MTSC.Client.Handlers.IHandler.PreHandleReceivedMessage()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#ad90301b90fdf8fdebcccec08a086358d',1,'MTSC.Server.Handlers.IHandler.PreHandleReceivedMessage()']]] +]; diff --git a/docs/search/functions_a.html b/docs/search/functions_a.html new file mode 100644 index 0000000..03faad2 --- /dev/null +++ b/docs/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_a.js b/docs/search/functions_a.js new file mode 100644 index 0000000..c091bd9 --- /dev/null +++ b/docs/search/functions_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['queuemessage',['QueueMessage',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ab4ebbd8217aea0c1d57ede542c404183',1,'MTSC.Client.Client.QueueMessage()'],['../df/d3b/class_m_t_s_c_1_1_client_1_1_handlers_1_1_websocket_handler.html#aab375ecfc0b27c0a0ed8355c5904eb15',1,'MTSC.Client.Handlers.WebsocketHandler.QueueMessage()'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a4ba115e772f3c30814b21c508ef2cf61',1,'MTSC.Server.Handlers.WebsocketHandler.QueueMessage(ClientData client, byte[] message)'],['../da/dc7/class_m_t_s_c_1_1_server_1_1_handlers_1_1_websocket_handler.html#a14849ffda41c01d12dd7ef87bd77f539',1,'MTSC.Server.Handlers.WebsocketHandler.QueueMessage(ClientData client, WebsocketMessage message)'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4231d59cf9d26d7f9eda14d2bf1e27ee',1,'MTSC.Server.Server.QueueMessage()']]], + ['queueresponse',['QueueResponse',['../d5/dde/class_m_t_s_c_1_1_server_1_1_handlers_1_1_http_handler.html#abee4834854edfd4920ce31ba08a649a8',1,'MTSC::Server::Handlers::HttpHandler']]] +]; diff --git a/docs/search/functions_b.html b/docs/search/functions_b.html new file mode 100644 index 0000000..c690013 --- /dev/null +++ b/docs/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_b.js b/docs/search/functions_b.js new file mode 100644 index 0000000..376ea05 --- /dev/null +++ b/docs/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['run',['Run',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af4bb64b680d23d398f3f7e289569189d',1,'MTSC::Server::Server']]], + ['runasync',['RunAsync',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#ad56ca49ea0918f37248b0e40bf4a4907',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/functions_c.html b/docs/search/functions_c.html new file mode 100644 index 0000000..3b2976a --- /dev/null +++ b/docs/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js new file mode 100644 index 0000000..ca7b3ce --- /dev/null +++ b/docs/search/functions_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sendrequest',['SendRequest',['../d5/d58/class_m_t_s_c_1_1_client_1_1_handlers_1_1_http_handler.html#a3717b229ef4fe6137b480fcde8d61b37',1,'MTSC::Client::Handlers::HttpHandler']]], + ['server',['Server',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a39681d659b0b0b78d64ceb200346b572',1,'MTSC.Server.Server.Server()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1cb1d11b255666395b92dcd0ea8afdee',1,'MTSC.Server.Server.Server(int port)'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a9ba78600a4f4f3d46d11181a4b6b50eb',1,'MTSC.Server.Server.Server(X509Certificate2 certificate, int port)']]], + ['setport',['SetPort',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#afe946bd8ea5c8d02db19175e5fbe95e0',1,'MTSC.Client.Client.SetPort()'],['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a53cde7840246a76cf72389665c4ff9f7',1,'MTSC.Server.Server.SetPort()']]], + ['setserveraddress',['SetServerAddress',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#ae4eab6784f731a25a4ed47fa2dc5c217',1,'MTSC::Client::Client']]], + ['stop',['Stop',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a1f2742b5f0ac908cc75baf9490f4d9fb',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/functions_d.html b/docs/search/functions_d.html new file mode 100644 index 0000000..0c54246 --- /dev/null +++ b/docs/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_d.js b/docs/search/functions_d.js new file mode 100644 index 0000000..08f8ad8 --- /dev/null +++ b/docs/search/functions_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tick',['Tick',['../df/d4e/interface_m_t_s_c_1_1_client_1_1_handlers_1_1_i_handler.html#ab03755cacb365c29a3bc6dbe17884b64',1,'MTSC.Client.Handlers.IHandler.Tick()'],['../d8/da0/interface_m_t_s_c_1_1_common_1_1_http_1_1_server_modules_1_1_i_http_module.html#a544defcb7ffcfc6008fd85d0997258a6',1,'MTSC.Common.Http.ServerModules.IHttpModule.Tick()'],['../da/d7d/interface_m_t_s_c_1_1_server_1_1_handlers_1_1_i_handler.html#a24f493fa3d89d960a635f0dc36e64b3d',1,'MTSC.Server.Handlers.IHandler.Tick()']]] +]; diff --git a/docs/search/functions_e.html b/docs/search/functions_e.html new file mode 100644 index 0000000..c1bd870 --- /dev/null +++ b/docs/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js new file mode 100644 index 0000000..566996a --- /dev/null +++ b/docs/search/functions_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['websocketmessage',['WebsocketMessage',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ab783b89e4cefcfa4be94d6746e3b434e',1,'MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage(byte[] messageBytes)'],['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2d42d9363c74a535179edb1c51e1d439',1,'MTSC.Common.WebSockets.WebsocketMessage.WebsocketMessage()']]] +]; diff --git a/docs/search/mag_sel.png b/docs/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/docs/search/namespaces_0.html b/docs/search/namespaces_0.html new file mode 100644 index 0000000..c534537 --- /dev/null +++ b/docs/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/namespaces_0.js b/docs/search/namespaces_0.js new file mode 100644 index 0000000..a9290db --- /dev/null +++ b/docs/search/namespaces_0.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['client',['Client',['../d3/dc6/namespace_m_t_s_c_1_1_client.html',1,'MTSC']]], + ['clientmodules',['ClientModules',['../da/db3/namespace_m_t_s_c_1_1_common_1_1_http_1_1_client_modules.html',1,'MTSC.Common.Http.ClientModules'],['../df/d15/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_client_modules.html',1,'MTSC.Common.WebSockets.ClientModules']]], + ['common',['Common',['../db/dca/namespace_m_t_s_c_1_1_common.html',1,'MTSC']]], + ['exceptions',['Exceptions',['../d1/d56/namespace_m_t_s_c_1_1_exceptions.html',1,'MTSC']]], + ['handlers',['Handlers',['../da/d82/namespace_m_t_s_c_1_1_client_1_1_handlers.html',1,'MTSC.Client.Handlers'],['../d4/d86/namespace_m_t_s_c_1_1_server_1_1_handlers.html',1,'MTSC.Server.Handlers']]], + ['http',['Http',['../d2/dd3/namespace_m_t_s_c_1_1_common_1_1_http.html',1,'MTSC::Common']]], + ['logging',['Logging',['../db/dbe/namespace_m_t_s_c_1_1_logging.html',1,'MTSC']]], + ['mtsc',['MTSC',['../d7/dcd/namespace_m_t_s_c.html',1,'']]], + ['server',['Server',['../d3/d97/namespace_m_t_s_c_1_1_server.html',1,'MTSC']]], + ['servermodules',['ServerModules',['../df/dda/namespace_m_t_s_c_1_1_common_1_1_http_1_1_server_modules.html',1,'MTSC.Common.Http.ServerModules'],['../d2/d2f/namespace_m_t_s_c_1_1_common_1_1_web_sockets_1_1_server_modules.html',1,'MTSC.Common.WebSockets.ServerModules']]], + ['websockets',['WebSockets',['../de/d91/namespace_m_t_s_c_1_1_common_1_1_web_sockets.html',1,'MTSC::Common']]] +]; diff --git a/docs/search/nomatches.html b/docs/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/docs/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/docs/search/properties_0.html b/docs/search/properties_0.html new file mode 100644 index 0000000..4762c6b --- /dev/null +++ b/docs/search/properties_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_0.js b/docs/search/properties_0.js new file mode 100644 index 0000000..db19477 --- /dev/null +++ b/docs/search/properties_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['certificatevalidationcallback',['CertificateValidationCallback',['../dc/d7c/class_m_t_s_c_1_1_client_1_1_client.html#aedd2779b640467b253fa48152c0ec22b',1,'MTSC::Client::Client']]], + ['clients',['Clients',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#aa54bab2059f42b5329db361476a40a31',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/properties_1.html b/docs/search/properties_1.html new file mode 100644 index 0000000..1635f1a --- /dev/null +++ b/docs/search/properties_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_1.js b/docs/search/properties_1.js new file mode 100644 index 0000000..2224099 --- /dev/null +++ b/docs/search/properties_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data',['Data',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ae66efe0af1a09ed8a7397a54403c4731',1,'MTSC::Common::WebSockets::WebsocketMessage']]] +]; diff --git a/docs/search/properties_2.html b/docs/search/properties_2.html new file mode 100644 index 0000000..daeef21 --- /dev/null +++ b/docs/search/properties_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_2.js b/docs/search/properties_2.js new file mode 100644 index 0000000..23b6fbf --- /dev/null +++ b/docs/search/properties_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fin',['FIN',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#afdcb7b3936befb1ec23c8ef1a3006c81',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['forcetickrate',['ForceTickrate',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a97ca0dda04d7bfddab2d115c4b6b3abe',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/properties_3.html b/docs/search/properties_3.html new file mode 100644 index 0000000..b6b7262 --- /dev/null +++ b/docs/search/properties_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_3.js b/docs/search/properties_3.js new file mode 100644 index 0000000..ff0474d --- /dev/null +++ b/docs/search/properties_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['mask',['Mask',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a6df2b0cb35d260167860bc8700019351',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['masked',['Masked',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#ad079fde84aeb3af5ba52a844e136dcf1',1,'MTSC::Common::WebSockets::WebsocketMessage']]], + ['messagelength',['MessageLength',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a600fffeaf9f28648333a380b13231e1f',1,'MTSC::Common::WebSockets::WebsocketMessage']]] +]; diff --git a/docs/search/properties_4.html b/docs/search/properties_4.html new file mode 100644 index 0000000..ead8e97 --- /dev/null +++ b/docs/search/properties_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_4.js b/docs/search/properties_4.js new file mode 100644 index 0000000..da37bf1 --- /dev/null +++ b/docs/search/properties_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['opcode',['Opcode',['../d8/d92/class_m_t_s_c_1_1_common_1_1_web_sockets_1_1_websocket_message.html#a2f63f3604fa46cc17133590b1e33eec9',1,'MTSC::Common::WebSockets::WebsocketMessage']]] +]; diff --git a/docs/search/properties_5.html b/docs/search/properties_5.html new file mode 100644 index 0000000..378e50c --- /dev/null +++ b/docs/search/properties_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_5.js b/docs/search/properties_5.js new file mode 100644 index 0000000..4674e5c --- /dev/null +++ b/docs/search/properties_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['port',['Port',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#adc95de3549415e7dd8332710f3f1461e',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/properties_6.html b/docs/search/properties_6.html new file mode 100644 index 0000000..437288e --- /dev/null +++ b/docs/search/properties_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_6.js b/docs/search/properties_6.js new file mode 100644 index 0000000..1f9683b --- /dev/null +++ b/docs/search/properties_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['running',['Running',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#af7425affecbc0039273437e4ebb3fde1',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/properties_7.html b/docs/search/properties_7.html new file mode 100644 index 0000000..954964e --- /dev/null +++ b/docs/search/properties_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_7.js b/docs/search/properties_7.js new file mode 100644 index 0000000..f86b473 --- /dev/null +++ b/docs/search/properties_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scaleusage',['ScaleUsage',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a4bd784eb59c4a81a346a09d31146eef3',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/properties_8.html b/docs/search/properties_8.html new file mode 100644 index 0000000..f92a6a0 --- /dev/null +++ b/docs/search/properties_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/docs/search/properties_8.js b/docs/search/properties_8.js new file mode 100644 index 0000000..7192d94 --- /dev/null +++ b/docs/search/properties_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['this_5bentityheadersenum_20headerkey_5d',['this[EntityHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#ab321ca65351ec6f136003703c0149535',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bgeneralheadersenum_20headerkey_5d',['this[GeneralHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7feec018ede979bceaa2526ae31e9b49',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5brequestheadersenum_20headerkey_5d',['this[RequestHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7d39f260b970569a93b19005abf5006a',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bresponseheadersenum_20headerkey_5d',['this[ResponseHeadersEnum headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a6346e2f51cb58303646014cef59393c9',1,'MTSC::Common::Http::HttpMessage']]], + ['this_5bstring_20headerkey_5d',['this[string headerKey]',['../df/dff/class_m_t_s_c_1_1_common_1_1_http_1_1_http_message.html#a7a7505189a9f2a15ce0a563fcf1ac246',1,'MTSC::Common::Http::HttpMessage']]], + ['tickrate',['TickRate',['../d3/d7e/class_m_t_s_c_1_1_server_1_1_server.html#a11711d9464da010154adc781a3e0bf71',1,'MTSC::Server::Server']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css new file mode 100644 index 0000000..0d46fa3 --- /dev/null +++ b/docs/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + 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:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + 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 #494660; + background-color: #F1F1F4; + z-index: 10001; + 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: #0D0D12; + 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: #D8D7E1; + z-index:10000; +} + +/* ----------------------------------- */ + + +#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: #111016; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #111016; + 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; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #DDDCE5; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/search/search.js b/docs/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/docs/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +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 idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + 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 = 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; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/search/search_r.png b/docs/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js new file mode 100644 index 0000000..3413855 --- /dev/null +++ b/docs/search/searchdata.js @@ -0,0 +1,27 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghilmnopqrstw", + 1: "bcdefhimnsw", + 2: "m", + 3: "abcdeghilpqrstw", + 4: "cdfmoprst" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "functions", + 4: "properties" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Functions", + 4: "Properties" +}; + diff --git a/docs/splitbar.png b/docs/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecce7a2f41fe8bafaa07dba9f01c3c296559962 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh8$Fp5W!gR- zKh1PKrQxxbpy32omly@FAk993AdRL8P69_nW;$;1D)fzU_IS48Bul&ahDzz(CHyw` zqyPNa^`B|)$BbS7vh?)V`S+cFofQ$joYle3lSzqG^s?d0$9=ELw*UUQc#%fldo};h zvp2n2KkMnm3X|Gc8=HIk=km7QKKuP){o9qfxAWrX+3%hkbJk`Si_0X^(IxvY+<&jx VN1T^mauygA44$rjF6*2UngG)Ua9#ia literal 0 HcmV?d00001 diff --git a/docs/sync_off.png b/docs/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..71823021eb1792070c8c8d43af3f3214cd2707f5 GIT binary patch literal 862 zcmV-k1EKthP)aLFe;eZ65Br5r0SC~X`6a_wFuY!|P;z$;@(@ zGjs3EoL9%f{AB=%JTKOWLQx>HMUuEL2E}D@QQQKE$B`gFme?n@gxUa!1jQK<5VwJ- z>H@G?D~^l#0Fy9HR0^NiEjp}!bOP2|E`E55!L8+4aY}rgD8OoQGQp|H=TrM|2JZa*fZXyk!OQ-;d;&4#$-p=u* zOZ1xq#Ck4g0o5PW<92%h>`Fww23Ti*HC}HT4fXrk(@^Fd9UTFPYh+}Ynw>tHn~#x^ zJ`=!hiw1ZjdRFskKha8gg`O{fCwuGd#dLJGu^{hNAgZp@087l?qSxM}`S7GKdeHg42i{a=}vH;c31e$C1i#Zg;V0~l-DRQ4gKyN-~a5&cm& z6c-ZsVmk){ewMxdO8ECfN4HU3TLeU^$K#^4eGj{Lefp32u{D50Te-Qj047wwR}U&t zD*>>}&Ym%9y(<3Jr5tT)WT5|dT3YLXNd5KZ9d7@5k0hrt52NTxzB_-F%*BR!RYW~|LKDDkwJY$eb!%Y{c(fMWmWWDx@q*2JzjvgJf4*BDoabM?SpIS(-pidjT<60 z`k%dgRJWJw{lC%Edln!@?%aHKRQWj)ILvVHUjVzMW9Ij2KAv0B2bni+F~uSAPjn8AI3&Sh$lReZr61@kLP(#&xtI*-dsO?o?E@I=f0ok zzOS#2CI00AiM%G>7b``P$Pq5_j~Eocias$6V8@XlLAKa0s-xEciG;)tqE*}hEa3)- z^MN=f76H6~S)yJ9#OI>N{7WZbjvDdPGzK@fEb+bAlPJM@@m+#h0lcVh#8%_RH7|Ri zkzJoW17HT|!=4rQjTsye`2cp3lXaN^Q@Gt8fJD;7A^nInfli?o;293bMD3PFN{aQp z1E$E!EoA48y?8uc06Uw7UlVMwTbh)VH1_RnaelF{ig0)gz+!A{lwFMhg2AI?q|XDe zQ>_W!1uT)5yNK@Noz&Fo9s@{h?R(4UIoU;F!P@}wHfVxkbI;OuR&(lf7t4wkPxX}r z)=~E1Cu|DTM+C|~rMz6f=*jka!F+npbg-&)BVdUv-O2yzZq=7o{?RrLG{^oCV7g8m z|Cx@?;KOkE@m#rmpfhkxzE3AU-+X{ql9MwRm&+A4pG7z2=UYa{x;2%wcQygBxIT23 zJGcMF<%~QF;}idpnK_#krAvTV9B%26;FqDueUdi? zz{2ZIo|;|7=ACwfYa7rR=<-|@semQCGVt!EFS+vD4f-$k0>7rBS0)Xo}|cHkB>hEu+y)_%1Gc7*F-wN40saVz`q-Z z-97Oczzk{D!Q(5MeiFIS^Bmx1wTrgr)#N%66mtNkK{wY|=E2Pc$K3vm79ZW}ew(ri z5bu2S!E{dnv9Ozgx#5b8_dw$qJYD@<);T3K0RZFsET;ef literal 0 HcmV?d00001 diff --git a/docs/tab_b.png b/docs/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..7d857d90f69928487a6f85bd6ae647f44ae6883f GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|@%DJY*oz_V7!6 zaNvhY-FylaV)~aDkC6%qj%w-e(Ix@QbtW0Fo#C2MMUWW5^T~)aD{Wg8|>;D$D o3$c$E*uUuPQ;dvQHu(wj=3o)t2Bw=0K<6-cy85}Sb4q9e0AjLC?f?J) literal 0 HcmV?d00001 diff --git a/docs/tab_h.png b/docs/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..d4392f3fdfae0a4693f6008f85e5a6c9cdd5ce78 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QZ=3~jv*C{Z}0kY9WoGcefVVV zD~Ak6kt>a|;g^p|aY{Vq7jZdaYf+&7?v6&+?j1D+J5~qu{|@e|(Wo?3Xp@evKbo&s zQGRTzY~J0CS$$i+wdC^MsG9F0CA{)%UzMamw}O}EvdKYPrn%Jr{q=vMn#%lBDzCrZ gcePwE(VwP&M~0{2>QSa?KzA^By85}Sb4q9e0P{UY00000 literal 0 HcmV?d00001 diff --git a/docs/tab_s.png b/docs/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..2199d0dbd1e8766f7949ef43586b5d0ed48aca5f GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|~mbZ8DH(xOgm| zC97qAcYsz{9@9$0SrWAgV)8LZm#&>XXO8KW=YNmtYuCliTrTcy&|B|+?BT%+cVFI; zuD!5J`(4FB(|OD0S=?Zao^N=yL9=>Qt#{-cjUxAXrYT9D%!17-Z7S=oAJ|S3j3^P6li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file