From a40f7314a8e98e83aaa5d062df09be840e95f03d Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Wed, 18 Sep 2019 18:32:15 -0700 Subject: [PATCH] Elimination of Service object, --- Command.cpp | 3 +- Command.h | 3 +- CommandList.cpp | 10 +- CommandList.h | 18 +- ConsoleServer.cpp | 8 +- ConsoleServer.h | 12 +- ConsoleService.cpp | 9 - ConsoleService.h | 18 - ConsoleSession.cpp | 4 +- ConsoleSession.h | 5 +- EPoll.cpp | 3 +- EPoll.h | 4 +- ServerCore.mk | 67 +- ServerCore.project | 16 +- ServerCore.txt | 2 +- Service.cpp | 29 - Service.h | 65 - Session.cpp | 56 - SessionFilter.h | 4 +- TCPServerSocket.cpp => TCPServer.cpp | 41 +- TCPServerSocket.h => TCPServer.h | 58 +- TCPSession.cpp | 56 + Session.h => TCPSession.h | 15 +- TLSServer.cpp | 62 + TLSServerSocket.h => TLSServer.h | 22 +- TLSServerSocket.cpp | 67 - TLSService.h | 21 - TLSSession.cpp | 4 +- TLSSession.h | 10 +- TerminalSession.cpp | 2 +- TerminalSession.h | 8 +- Thread.h | 2 +- UDPServerSocket.cpp | 12 +- UDPSocket.h | 1 - docs/html/graph_legend.html | 4 +- docs/html/index.html | 6 +- docs/html/menudata.js | 40 +- docs/html/search/searchdata.js | 12 - docs/latex/refman.tex | 30 +- html/_command_8h_source.html | 81 + html/_command_list_8h_source.html | 79 + html/_console_server_8h_source.html | 80 + html/_console_session_8h_source.html | 79 + html/_e_poll_8h_source.html | 89 + html/_i_p_address_8h_source.html | 79 + html/_i_p_address_list_8h_source.html | 76 + html/_object_8h_source.html | 75 + html/_session_filter_8h_source.html | 77 + html/_socket_8h_source.html | 87 + html/_t_c_p_server_8h_source.html | 92 + html/_t_c_p_session_8h_source.html | 85 + html/_t_c_p_socket_8h_source.html | 79 + html/_t_l_s_server_8h_source.html | 81 + html/_t_l_s_session_8h_source.html | 81 + html/_terminal_session_8h_source.html | 78 + html/_thread_8h_source.html | 78 + html/_timer_8h_source.html | 81 + html/_u_d_p_server_socket_8h_source.html | 79 + html/_u_d_p_socket_8h_source.html | 77 + html/annotated.html | 98 + html/bc_s.png | Bin 0 -> 676 bytes html/bdwn.png | Bin 0 -> 147 bytes html/classcore_1_1_command-members.html | 86 + html/classcore_1_1_command.html | 283 +++ html/classcore_1_1_command__coll__graph.map | 3 + html/classcore_1_1_command__coll__graph.md5 | 1 + html/classcore_1_1_command__coll__graph.png | Bin 0 -> 3394 bytes .../classcore_1_1_command__inherit__graph.map | 9 + .../classcore_1_1_command__inherit__graph.md5 | 1 + .../classcore_1_1_command__inherit__graph.png | Bin 0 -> 15326 bytes html/classcore_1_1_command_list-members.html | 90 + html/classcore_1_1_command_list.html | 231 +++ ...lasscore_1_1_command_list__coll__graph.map | 4 + ...lasscore_1_1_command_list__coll__graph.md5 | 1 + ...lasscore_1_1_command_list__coll__graph.png | Bin 0 -> 6222 bytes ...score_1_1_command_list__inherit__graph.map | 4 + ...score_1_1_command_list__inherit__graph.md5 | 1 + ...score_1_1_command_list__inherit__graph.png | Bin 0 -> 6222 bytes .../classcore_1_1_console_server-members.html | 124 ++ html/classcore_1_1_console_server.html | 276 +++ ...sscore_1_1_console_server__coll__graph.map | 11 + ...sscore_1_1_console_server__coll__graph.md5 | 1 + ...sscore_1_1_console_server__coll__graph.png | Bin 0 -> 52559 bytes ...ore_1_1_console_server__inherit__graph.map | 7 + ...ore_1_1_console_server__inherit__graph.md5 | 1 + ...ore_1_1_console_server__inherit__graph.png | Bin 0 -> 17710 bytes ...classcore_1_1_console_session-members.html | 130 ++ html/classcore_1_1_console_session.html | 306 ++++ ...score_1_1_console_session__coll__graph.map | 13 + ...score_1_1_console_session__coll__graph.md5 | 1 + ...score_1_1_console_session__coll__graph.png | Bin 0 -> 59171 bytes ...re_1_1_console_session__inherit__graph.map | 7 + ...re_1_1_console_session__inherit__graph.md5 | 1 + ...re_1_1_console_session__inherit__graph.png | Bin 0 -> 15873 bytes html/classcore_1_1_e_poll-members.html | 96 + html/classcore_1_1_e_poll.html | 457 +++++ html/classcore_1_1_e_poll__coll__graph.map | 4 + html/classcore_1_1_e_poll__coll__graph.md5 | 1 + html/classcore_1_1_e_poll__coll__graph.png | Bin 0 -> 5244 bytes html/classcore_1_1_e_poll__inherit__graph.map | 4 + html/classcore_1_1_e_poll__inherit__graph.md5 | 1 + html/classcore_1_1_e_poll__inherit__graph.png | Bin 0 -> 5244 bytes html/classcore_1_1_i_p_address-members.html | 92 + html/classcore_1_1_i_p_address.html | 142 ++ ...classcore_1_1_i_p_address__coll__graph.map | 3 + ...classcore_1_1_i_p_address__coll__graph.md5 | 1 + ...classcore_1_1_i_p_address__coll__graph.png | Bin 0 -> 3747 bytes ...sscore_1_1_i_p_address__inherit__graph.map | 3 + ...sscore_1_1_i_p_address__inherit__graph.md5 | 1 + ...sscore_1_1_i_p_address__inherit__graph.png | Bin 0 -> 3747 bytes ...lasscore_1_1_i_p_address_list-members.html | 85 + html/classcore_1_1_i_p_address_list.html | 100 ++ html/classcore_1_1_object-members.html | 82 + html/classcore_1_1_object.html | 118 ++ html/classcore_1_1_object__inherit__graph.map | 20 + html/classcore_1_1_object__inherit__graph.md5 | 1 + html/classcore_1_1_object__inherit__graph.png | Bin 0 -> 40307 bytes .../classcore_1_1_session_filter-members.html | 83 + html/classcore_1_1_session_filter.html | 116 ++ ...sscore_1_1_session_filter__coll__graph.map | 3 + ...sscore_1_1_session_filter__coll__graph.md5 | 1 + ...sscore_1_1_session_filter__coll__graph.png | Bin 0 -> 3447 bytes ...ore_1_1_session_filter__inherit__graph.map | 3 + ...ore_1_1_session_filter__inherit__graph.md5 | 1 + ...ore_1_1_session_filter__inherit__graph.png | Bin 0 -> 3447 bytes html/classcore_1_1_socket-members.html | 102 ++ html/classcore_1_1_socket.html | 408 +++++ html/classcore_1_1_socket__coll__graph.map | 5 + html/classcore_1_1_socket__coll__graph.md5 | 1 + html/classcore_1_1_socket__coll__graph.png | Bin 0 -> 14382 bytes html/classcore_1_1_socket__inherit__graph.map | 14 + html/classcore_1_1_socket__inherit__graph.md5 | 1 + html/classcore_1_1_socket__inherit__graph.png | Bin 0 -> 28653 bytes html/classcore_1_1_t_c_p_server-members.html | 122 ++ html/classcore_1_1_t_c_p_server.html | 488 +++++ ...lasscore_1_1_t_c_p_server__coll__graph.map | 10 + ...lasscore_1_1_t_c_p_server__coll__graph.md5 | 1 + ...lasscore_1_1_t_c_p_server__coll__graph.png | Bin 0 -> 46662 bytes ...score_1_1_t_c_p_server__inherit__graph.map | 8 + ...score_1_1_t_c_p_server__inherit__graph.md5 | 1 + ...score_1_1_t_c_p_server__inherit__graph.png | Bin 0 -> 16641 bytes html/classcore_1_1_t_c_p_session-members.html | 114 ++ html/classcore_1_1_t_c_p_session.html | 416 +++++ ...asscore_1_1_t_c_p_session__coll__graph.map | 11 + ...asscore_1_1_t_c_p_session__coll__graph.md5 | 1 + ...asscore_1_1_t_c_p_session__coll__graph.png | Bin 0 -> 53772 bytes ...core_1_1_t_c_p_session__inherit__graph.map | 8 + ...core_1_1_t_c_p_session__inherit__graph.md5 | 1 + ...core_1_1_t_c_p_session__inherit__graph.png | Bin 0 -> 18684 bytes html/classcore_1_1_t_c_p_socket-members.html | 106 ++ html/classcore_1_1_t_c_p_socket.html | 240 +++ ...lasscore_1_1_t_c_p_socket__coll__graph.map | 7 + ...lasscore_1_1_t_c_p_socket__coll__graph.md5 | 1 + ...lasscore_1_1_t_c_p_socket__coll__graph.png | Bin 0 -> 24612 bytes ...score_1_1_t_c_p_socket__inherit__graph.map | 11 + ...score_1_1_t_c_p_socket__inherit__graph.md5 | 1 + ...score_1_1_t_c_p_socket__inherit__graph.png | Bin 0 -> 24405 bytes html/classcore_1_1_t_l_s_server-members.html | 126 ++ html/classcore_1_1_t_l_s_server.html | 317 ++++ ...lasscore_1_1_t_l_s_server__coll__graph.map | 11 + ...lasscore_1_1_t_l_s_server__coll__graph.md5 | 1 + ...lasscore_1_1_t_l_s_server__coll__graph.png | Bin 0 -> 48992 bytes ...score_1_1_t_l_s_server__inherit__graph.map | 7 + ...score_1_1_t_l_s_server__inherit__graph.md5 | 1 + ...score_1_1_t_l_s_server__inherit__graph.png | Bin 0 -> 14183 bytes html/classcore_1_1_t_l_s_session-members.html | 116 ++ html/classcore_1_1_t_l_s_session.html | 333 ++++ ...asscore_1_1_t_l_s_session__coll__graph.map | 12 + ...asscore_1_1_t_l_s_session__coll__graph.md5 | 1 + ...asscore_1_1_t_l_s_session__coll__graph.png | Bin 0 -> 56241 bytes ...core_1_1_t_l_s_session__inherit__graph.map | 6 + ...core_1_1_t_l_s_session__inherit__graph.md5 | 1 + ...core_1_1_t_l_s_session__inherit__graph.png | Bin 0 -> 13241 bytes ...lasscore_1_1_terminal_session-members.html | 127 ++ html/classcore_1_1_terminal_session.html | 259 +++ ...core_1_1_terminal_session__coll__graph.map | 12 + ...core_1_1_terminal_session__coll__graph.md5 | 1 + ...core_1_1_terminal_session__coll__graph.png | Bin 0 -> 56564 bytes ...e_1_1_terminal_session__inherit__graph.map | 7 + ...e_1_1_terminal_session__inherit__graph.md5 | 1 + ...e_1_1_terminal_session__inherit__graph.png | Bin 0 -> 15888 bytes html/classcore_1_1_thread-members.html | 90 + html/classcore_1_1_thread.html | 158 ++ html/classcore_1_1_thread__coll__graph.map | 3 + html/classcore_1_1_thread__coll__graph.md5 | 1 + html/classcore_1_1_thread__coll__graph.png | Bin 0 -> 3072 bytes html/classcore_1_1_thread__inherit__graph.map | 3 + html/classcore_1_1_thread__inherit__graph.md5 | 1 + html/classcore_1_1_thread__inherit__graph.png | Bin 0 -> 3072 bytes html/classcore_1_1_timer-members.html | 109 ++ html/classcore_1_1_timer.html | 223 +++ html/classcore_1_1_timer__coll__graph.map | 6 + html/classcore_1_1_timer__coll__graph.md5 | 1 + html/classcore_1_1_timer__coll__graph.png | Bin 0 -> 16064 bytes html/classcore_1_1_timer__inherit__graph.map | 4 + html/classcore_1_1_timer__inherit__graph.md5 | 1 + html/classcore_1_1_timer__inherit__graph.png | Bin 0 -> 7962 bytes ...score_1_1_u_d_p_server_socket-members.html | 114 ++ html/classcore_1_1_u_d_p_server_socket.html | 260 +++ ...e_1_1_u_d_p_server_socket__coll__graph.map | 7 + ...e_1_1_u_d_p_server_socket__coll__graph.md5 | 1 + ...e_1_1_u_d_p_server_socket__coll__graph.png | Bin 0 -> 23470 bytes ..._1_u_d_p_server_socket__inherit__graph.map | 6 + ..._1_u_d_p_server_socket__inherit__graph.md5 | 1 + ..._1_u_d_p_server_socket__inherit__graph.png | Bin 0 -> 14649 bytes html/classcore_1_1_u_d_p_socket-members.html | 104 ++ html/classcore_1_1_u_d_p_socket.html | 185 ++ ...lasscore_1_1_u_d_p_socket__coll__graph.map | 6 + ...lasscore_1_1_u_d_p_socket__coll__graph.md5 | 1 + ...lasscore_1_1_u_d_p_socket__coll__graph.png | Bin 0 -> 16843 bytes ...score_1_1_u_d_p_socket__inherit__graph.map | 5 + ...score_1_1_u_d_p_socket__inherit__graph.md5 | 1 + ...score_1_1_u_d_p_socket__inherit__graph.png | Bin 0 -> 11276 bytes html/classes.html | 94 + html/closed.png | Bin 0 -> 132 bytes html/doc.png | Bin 0 -> 746 bytes html/doxygen.css | 1596 +++++++++++++++++ html/doxygen.png | Bin 0 -> 3779 bytes html/dynsections.js | 97 + html/files.html | 97 + html/folderclosed.png | Bin 0 -> 616 bytes html/folderopen.png | Bin 0 -> 597 bytes html/functions.html | 273 +++ html/functions_func.html | 250 +++ html/functions_vars.html | 86 + html/graph_legend.html | 102 ++ html/graph_legend.md5 | 1 + html/graph_legend.png | Bin 0 -> 20374 bytes html/hierarchy.html | 105 ++ html/index.html | 73 + html/inherit_graph_0.map | 3 + html/inherit_graph_0.md5 | 1 + html/inherit_graph_0.png | Bin 0 -> 1693 bytes html/inherit_graph_1.map | 21 + html/inherit_graph_1.md5 | 1 + html/inherit_graph_1.png | Bin 0 -> 44042 bytes html/inherits.html | 105 ++ html/jquery.js | 87 + html/menu.js | 26 + html/menudata.js | 40 + html/nav_f.png | Bin 0 -> 153 bytes html/nav_g.png | Bin 0 -> 95 bytes html/nav_h.png | Bin 0 -> 98 bytes html/open.png | Bin 0 -> 123 bytes html/search/all_0.html | 26 + html/search/all_0.js | 4 + html/search/all_1.html | 26 + html/search/all_1.js | 4 + html/search/all_2.html | 26 + html/search/all_2.js | 10 + html/search/all_3.html | 26 + html/search/all_3.js | 6 + html/search/all_4.html | 26 + html/search/all_4.js | 9 + html/search/all_5.html | 26 + html/search/all_5.js | 6 + html/search/all_6.html | 26 + html/search/all_6.js | 4 + html/search/all_7.html | 26 + html/search/all_7.js | 10 + html/search/all_8.html | 26 + html/search/all_8.js | 5 + html/search/all_9.html | 26 + html/search/all_9.js | 5 + html/search/all_a.html | 26 + html/search/all_a.js | 13 + html/search/all_b.html | 26 + html/search/all_b.js | 11 + html/search/all_c.html | 26 + html/search/all_c.js | 6 + html/search/all_d.html | 26 + html/search/all_d.js | 5 + html/search/all_e.html | 26 + html/search/all_e.js | 6 + html/search/classes_0.html | 26 + html/search/classes_0.js | 7 + html/search/classes_1.html | 26 + html/search/classes_1.js | 4 + html/search/classes_2.html | 26 + html/search/classes_2.js | 5 + html/search/classes_3.html | 26 + html/search/classes_3.js | 4 + html/search/classes_4.html | 26 + html/search/classes_4.js | 5 + html/search/classes_5.html | 26 + html/search/classes_5.js | 11 + html/search/classes_6.html | 26 + html/search/classes_6.js | 5 + html/search/close.png | Bin 0 -> 273 bytes html/search/functions_0.html | 26 + html/search/functions_0.js | 4 + html/search/functions_1.html | 26 + html/search/functions_1.js | 5 + html/search/functions_2.html | 26 + html/search/functions_2.js | 6 + html/search/functions_3.html | 26 + html/search/functions_3.js | 9 + html/search/functions_4.html | 26 + html/search/functions_4.js | 4 + html/search/functions_5.html | 26 + html/search/functions_5.js | 9 + html/search/functions_6.html | 26 + html/search/functions_6.js | 5 + html/search/functions_7.html | 26 + html/search/functions_7.js | 5 + html/search/functions_8.html | 26 + html/search/functions_8.js | 10 + html/search/functions_9.html | 26 + html/search/functions_9.js | 5 + html/search/functions_a.html | 26 + html/search/functions_a.js | 4 + html/search/functions_b.html | 26 + html/search/functions_b.js | 4 + html/search/functions_c.html | 26 + html/search/functions_c.js | 6 + html/search/mag_sel.png | Bin 0 -> 563 bytes html/search/nomatches.html | 12 + html/search/search.css | 271 +++ html/search/search.js | 791 ++++++++ html/search/search_l.png | Bin 0 -> 604 bytes html/search/search_m.png | Bin 0 -> 158 bytes html/search/search_r.png | Bin 0 -> 612 bytes html/search/searchdata.js | 24 + html/search/variables_0.html | 26 + html/search/variables_0.js | 4 + html/search/variables_1.html | 26 + html/search/variables_1.js | 4 + html/search/variables_2.html | 26 + html/search/variables_2.js | 4 + html/search/variables_3.html | 26 + html/search/variables_3.js | 4 + html/search/variables_4.html | 26 + html/search/variables_4.js | 4 + html/splitbar.png | Bin 0 -> 314 bytes html/sync_off.png | Bin 0 -> 853 bytes html/sync_on.png | Bin 0 -> 845 bytes html/tab_a.png | Bin 0 -> 142 bytes html/tab_b.png | Bin 0 -> 169 bytes html/tab_h.png | Bin 0 -> 177 bytes html/tab_s.png | Bin 0 -> 184 bytes html/tabs.css | 1 + latex/Makefile | 21 + latex/annotated.tex | 23 + latex/classcore_1_1_command.tex | 121 ++ latex/classcore_1_1_command__coll__graph.md5 | 1 + latex/classcore_1_1_command__coll__graph.pdf | Bin 0 -> 12306 bytes .../classcore_1_1_command__inherit__graph.md5 | 1 + .../classcore_1_1_command__inherit__graph.pdf | Bin 0 -> 14664 bytes latex/classcore_1_1_command_list.tex | 88 + ...lasscore_1_1_command_list__coll__graph.md5 | 1 + ...lasscore_1_1_command_list__coll__graph.pdf | Bin 0 -> 12826 bytes ...score_1_1_command_list__inherit__graph.md5 | 1 + ...score_1_1_command_list__inherit__graph.pdf | Bin 0 -> 12826 bytes latex/classcore_1_1_console_server.tex | 53 + ...sscore_1_1_console_server__coll__graph.md5 | 1 + ...sscore_1_1_console_server__coll__graph.pdf | Bin 0 -> 16905 bytes ...ore_1_1_console_server__inherit__graph.md5 | 1 + ...ore_1_1_console_server__inherit__graph.pdf | Bin 0 -> 14954 bytes latex/classcore_1_1_console_session.tex | 65 + ...score_1_1_console_session__coll__graph.md5 | 1 + ...score_1_1_console_session__coll__graph.pdf | Bin 0 -> 16676 bytes ...re_1_1_console_session__inherit__graph.md5 | 1 + ...re_1_1_console_session__inherit__graph.pdf | Bin 0 -> 14121 bytes latex/classcore_1_1_e_poll.tex | 226 +++ latex/classcore_1_1_e_poll__coll__graph.md5 | 1 + latex/classcore_1_1_e_poll__coll__graph.pdf | Bin 0 -> 12834 bytes .../classcore_1_1_e_poll__inherit__graph.md5 | 1 + .../classcore_1_1_e_poll__inherit__graph.pdf | Bin 0 -> 12834 bytes latex/classcore_1_1_i_p_address.tex | 58 + ...classcore_1_1_i_p_address__coll__graph.md5 | 1 + ...classcore_1_1_i_p_address__coll__graph.pdf | Bin 0 -> 11924 bytes ...sscore_1_1_i_p_address__inherit__graph.md5 | 1 + ...sscore_1_1_i_p_address__inherit__graph.pdf | Bin 0 -> 11924 bytes latex/classcore_1_1_i_p_address_list.tex | 23 + latex/classcore_1_1_object.tex | 26 + .../classcore_1_1_object__inherit__graph.md5 | 1 + .../classcore_1_1_object__inherit__graph.pdf | Bin 0 -> 16209 bytes latex/classcore_1_1_session_filter.tex | 34 + ...sscore_1_1_session_filter__coll__graph.md5 | 1 + ...sscore_1_1_session_filter__coll__graph.pdf | Bin 0 -> 12105 bytes ...ore_1_1_session_filter__inherit__graph.md5 | 1 + ...ore_1_1_session_filter__inherit__graph.pdf | Bin 0 -> 12105 bytes latex/classcore_1_1_socket.tex | 197 ++ latex/classcore_1_1_socket__coll__graph.md5 | 1 + latex/classcore_1_1_socket__coll__graph.pdf | Bin 0 -> 14236 bytes .../classcore_1_1_socket__inherit__graph.md5 | 1 + .../classcore_1_1_socket__inherit__graph.pdf | Bin 0 -> 15251 bytes latex/classcore_1_1_t_c_p_server.tex | 185 ++ ...lasscore_1_1_t_c_p_server__coll__graph.md5 | 1 + ...lasscore_1_1_t_c_p_server__coll__graph.pdf | Bin 0 -> 16375 bytes ...score_1_1_t_c_p_server__inherit__graph.md5 | 1 + ...score_1_1_t_c_p_server__inherit__graph.pdf | Bin 0 -> 14466 bytes latex/classcore_1_1_t_c_p_session.tex | 150 ++ ...asscore_1_1_t_c_p_session__coll__graph.md5 | 1 + ...asscore_1_1_t_c_p_session__coll__graph.pdf | Bin 0 -> 16540 bytes ...core_1_1_t_c_p_session__inherit__graph.md5 | 1 + ...core_1_1_t_c_p_session__inherit__graph.pdf | Bin 0 -> 14421 bytes latex/classcore_1_1_t_c_p_socket.tex | 70 + ...lasscore_1_1_t_c_p_socket__coll__graph.md5 | 1 + ...lasscore_1_1_t_c_p_socket__coll__graph.pdf | Bin 0 -> 15317 bytes ...score_1_1_t_c_p_socket__inherit__graph.md5 | 1 + ...score_1_1_t_c_p_socket__inherit__graph.pdf | Bin 0 -> 14734 bytes latex/classcore_1_1_t_l_s_server.tex | 85 + ...lasscore_1_1_t_l_s_server__coll__graph.md5 | 1 + ...lasscore_1_1_t_l_s_server__coll__graph.pdf | Bin 0 -> 16452 bytes ...score_1_1_t_l_s_server__inherit__graph.md5 | 1 + ...score_1_1_t_l_s_server__inherit__graph.pdf | Bin 0 -> 14273 bytes latex/classcore_1_1_t_l_s_session.tex | 88 + ...asscore_1_1_t_l_s_session__coll__graph.md5 | 1 + ...asscore_1_1_t_l_s_session__coll__graph.pdf | Bin 0 -> 16616 bytes ...core_1_1_t_l_s_session__inherit__graph.md5 | 1 + ...core_1_1_t_l_s_session__inherit__graph.pdf | Bin 0 -> 14126 bytes latex/classcore_1_1_terminal_session.tex | 68 + ...core_1_1_terminal_session__coll__graph.md5 | 1 + ...core_1_1_terminal_session__coll__graph.pdf | Bin 0 -> 16625 bytes ...e_1_1_terminal_session__inherit__graph.md5 | 1 + ...e_1_1_terminal_session__inherit__graph.pdf | Bin 0 -> 14125 bytes latex/classcore_1_1_thread.tex | 70 + latex/classcore_1_1_thread__coll__graph.md5 | 1 + latex/classcore_1_1_thread__coll__graph.pdf | Bin 0 -> 11958 bytes .../classcore_1_1_thread__inherit__graph.md5 | 1 + .../classcore_1_1_thread__inherit__graph.pdf | Bin 0 -> 11958 bytes latex/classcore_1_1_timer.tex | 96 + latex/classcore_1_1_timer__coll__graph.md5 | 1 + latex/classcore_1_1_timer__coll__graph.pdf | Bin 0 -> 14537 bytes latex/classcore_1_1_timer__inherit__graph.md5 | 1 + latex/classcore_1_1_timer__inherit__graph.pdf | Bin 0 -> 13341 bytes latex/classcore_1_1_u_d_p_server_socket.tex | 82 + ...e_1_1_u_d_p_server_socket__coll__graph.md5 | 1 + ...e_1_1_u_d_p_server_socket__coll__graph.pdf | Bin 0 -> 14888 bytes ..._1_u_d_p_server_socket__inherit__graph.md5 | 1 + ..._1_u_d_p_server_socket__inherit__graph.pdf | Bin 0 -> 14243 bytes latex/classcore_1_1_u_d_p_socket.tex | 35 + ...lasscore_1_1_u_d_p_socket__coll__graph.md5 | 1 + ...lasscore_1_1_u_d_p_socket__coll__graph.pdf | Bin 0 -> 14589 bytes ...score_1_1_u_d_p_socket__inherit__graph.md5 | 1 + ...score_1_1_u_d_p_socket__inherit__graph.pdf | Bin 0 -> 13675 bytes latex/doxygen.sty | 503 ++++++ latex/hierarchy.tex | 47 + latex/refman.tex | 176 ++ 440 files changed, 17787 insertions(+), 516 deletions(-) delete mode 100644 ConsoleService.cpp delete mode 100644 ConsoleService.h delete mode 100644 Service.cpp delete mode 100644 Service.h delete mode 100644 Session.cpp rename TCPServerSocket.cpp => TCPServer.cpp (58%) rename TCPServerSocket.h => TCPServer.h (65%) create mode 100644 TCPSession.cpp rename Session.h => TCPSession.h (87%) create mode 100644 TLSServer.cpp rename TLSServerSocket.h => TLSServer.h (75%) delete mode 100644 TLSServerSocket.cpp delete mode 100644 TLSService.h create mode 100644 html/_command_8h_source.html create mode 100644 html/_command_list_8h_source.html create mode 100644 html/_console_server_8h_source.html create mode 100644 html/_console_session_8h_source.html create mode 100644 html/_e_poll_8h_source.html create mode 100644 html/_i_p_address_8h_source.html create mode 100644 html/_i_p_address_list_8h_source.html create mode 100644 html/_object_8h_source.html create mode 100644 html/_session_filter_8h_source.html create mode 100644 html/_socket_8h_source.html create mode 100644 html/_t_c_p_server_8h_source.html create mode 100644 html/_t_c_p_session_8h_source.html create mode 100644 html/_t_c_p_socket_8h_source.html create mode 100644 html/_t_l_s_server_8h_source.html create mode 100644 html/_t_l_s_session_8h_source.html create mode 100644 html/_terminal_session_8h_source.html create mode 100644 html/_thread_8h_source.html create mode 100644 html/_timer_8h_source.html create mode 100644 html/_u_d_p_server_socket_8h_source.html create mode 100644 html/_u_d_p_socket_8h_source.html create mode 100644 html/annotated.html create mode 100644 html/bc_s.png create mode 100644 html/bdwn.png create mode 100644 html/classcore_1_1_command-members.html create mode 100644 html/classcore_1_1_command.html create mode 100644 html/classcore_1_1_command__coll__graph.map create mode 100644 html/classcore_1_1_command__coll__graph.md5 create mode 100644 html/classcore_1_1_command__coll__graph.png create mode 100644 html/classcore_1_1_command__inherit__graph.map create mode 100644 html/classcore_1_1_command__inherit__graph.md5 create mode 100644 html/classcore_1_1_command__inherit__graph.png create mode 100644 html/classcore_1_1_command_list-members.html create mode 100644 html/classcore_1_1_command_list.html create mode 100644 html/classcore_1_1_command_list__coll__graph.map create mode 100644 html/classcore_1_1_command_list__coll__graph.md5 create mode 100644 html/classcore_1_1_command_list__coll__graph.png create mode 100644 html/classcore_1_1_command_list__inherit__graph.map create mode 100644 html/classcore_1_1_command_list__inherit__graph.md5 create mode 100644 html/classcore_1_1_command_list__inherit__graph.png create mode 100644 html/classcore_1_1_console_server-members.html create mode 100644 html/classcore_1_1_console_server.html create mode 100644 html/classcore_1_1_console_server__coll__graph.map create mode 100644 html/classcore_1_1_console_server__coll__graph.md5 create mode 100644 html/classcore_1_1_console_server__coll__graph.png create mode 100644 html/classcore_1_1_console_server__inherit__graph.map create mode 100644 html/classcore_1_1_console_server__inherit__graph.md5 create mode 100644 html/classcore_1_1_console_server__inherit__graph.png create mode 100644 html/classcore_1_1_console_session-members.html create mode 100644 html/classcore_1_1_console_session.html create mode 100644 html/classcore_1_1_console_session__coll__graph.map create mode 100644 html/classcore_1_1_console_session__coll__graph.md5 create mode 100644 html/classcore_1_1_console_session__coll__graph.png create mode 100644 html/classcore_1_1_console_session__inherit__graph.map create mode 100644 html/classcore_1_1_console_session__inherit__graph.md5 create mode 100644 html/classcore_1_1_console_session__inherit__graph.png create mode 100644 html/classcore_1_1_e_poll-members.html create mode 100644 html/classcore_1_1_e_poll.html create mode 100644 html/classcore_1_1_e_poll__coll__graph.map create mode 100644 html/classcore_1_1_e_poll__coll__graph.md5 create mode 100644 html/classcore_1_1_e_poll__coll__graph.png create mode 100644 html/classcore_1_1_e_poll__inherit__graph.map create mode 100644 html/classcore_1_1_e_poll__inherit__graph.md5 create mode 100644 html/classcore_1_1_e_poll__inherit__graph.png create mode 100644 html/classcore_1_1_i_p_address-members.html create mode 100644 html/classcore_1_1_i_p_address.html create mode 100644 html/classcore_1_1_i_p_address__coll__graph.map create mode 100644 html/classcore_1_1_i_p_address__coll__graph.md5 create mode 100644 html/classcore_1_1_i_p_address__coll__graph.png create mode 100644 html/classcore_1_1_i_p_address__inherit__graph.map create mode 100644 html/classcore_1_1_i_p_address__inherit__graph.md5 create mode 100644 html/classcore_1_1_i_p_address__inherit__graph.png create mode 100644 html/classcore_1_1_i_p_address_list-members.html create mode 100644 html/classcore_1_1_i_p_address_list.html create mode 100644 html/classcore_1_1_object-members.html create mode 100644 html/classcore_1_1_object.html create mode 100644 html/classcore_1_1_object__inherit__graph.map create mode 100644 html/classcore_1_1_object__inherit__graph.md5 create mode 100644 html/classcore_1_1_object__inherit__graph.png create mode 100644 html/classcore_1_1_session_filter-members.html create mode 100644 html/classcore_1_1_session_filter.html create mode 100644 html/classcore_1_1_session_filter__coll__graph.map create mode 100644 html/classcore_1_1_session_filter__coll__graph.md5 create mode 100644 html/classcore_1_1_session_filter__coll__graph.png create mode 100644 html/classcore_1_1_session_filter__inherit__graph.map create mode 100644 html/classcore_1_1_session_filter__inherit__graph.md5 create mode 100644 html/classcore_1_1_session_filter__inherit__graph.png create mode 100644 html/classcore_1_1_socket-members.html create mode 100644 html/classcore_1_1_socket.html create mode 100644 html/classcore_1_1_socket__coll__graph.map create mode 100644 html/classcore_1_1_socket__coll__graph.md5 create mode 100644 html/classcore_1_1_socket__coll__graph.png create mode 100644 html/classcore_1_1_socket__inherit__graph.map create mode 100644 html/classcore_1_1_socket__inherit__graph.md5 create mode 100644 html/classcore_1_1_socket__inherit__graph.png create mode 100644 html/classcore_1_1_t_c_p_server-members.html create mode 100644 html/classcore_1_1_t_c_p_server.html create mode 100644 html/classcore_1_1_t_c_p_server__coll__graph.map create mode 100644 html/classcore_1_1_t_c_p_server__coll__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_server__coll__graph.png create mode 100644 html/classcore_1_1_t_c_p_server__inherit__graph.map create mode 100644 html/classcore_1_1_t_c_p_server__inherit__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_server__inherit__graph.png create mode 100644 html/classcore_1_1_t_c_p_session-members.html create mode 100644 html/classcore_1_1_t_c_p_session.html create mode 100644 html/classcore_1_1_t_c_p_session__coll__graph.map create mode 100644 html/classcore_1_1_t_c_p_session__coll__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_session__coll__graph.png create mode 100644 html/classcore_1_1_t_c_p_session__inherit__graph.map create mode 100644 html/classcore_1_1_t_c_p_session__inherit__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_session__inherit__graph.png create mode 100644 html/classcore_1_1_t_c_p_socket-members.html create mode 100644 html/classcore_1_1_t_c_p_socket.html create mode 100644 html/classcore_1_1_t_c_p_socket__coll__graph.map create mode 100644 html/classcore_1_1_t_c_p_socket__coll__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_socket__coll__graph.png create mode 100644 html/classcore_1_1_t_c_p_socket__inherit__graph.map create mode 100644 html/classcore_1_1_t_c_p_socket__inherit__graph.md5 create mode 100644 html/classcore_1_1_t_c_p_socket__inherit__graph.png create mode 100644 html/classcore_1_1_t_l_s_server-members.html create mode 100644 html/classcore_1_1_t_l_s_server.html create mode 100644 html/classcore_1_1_t_l_s_server__coll__graph.map create mode 100644 html/classcore_1_1_t_l_s_server__coll__graph.md5 create mode 100644 html/classcore_1_1_t_l_s_server__coll__graph.png create mode 100644 html/classcore_1_1_t_l_s_server__inherit__graph.map create mode 100644 html/classcore_1_1_t_l_s_server__inherit__graph.md5 create mode 100644 html/classcore_1_1_t_l_s_server__inherit__graph.png create mode 100644 html/classcore_1_1_t_l_s_session-members.html create mode 100644 html/classcore_1_1_t_l_s_session.html create mode 100644 html/classcore_1_1_t_l_s_session__coll__graph.map create mode 100644 html/classcore_1_1_t_l_s_session__coll__graph.md5 create mode 100644 html/classcore_1_1_t_l_s_session__coll__graph.png create mode 100644 html/classcore_1_1_t_l_s_session__inherit__graph.map create mode 100644 html/classcore_1_1_t_l_s_session__inherit__graph.md5 create mode 100644 html/classcore_1_1_t_l_s_session__inherit__graph.png create mode 100644 html/classcore_1_1_terminal_session-members.html create mode 100644 html/classcore_1_1_terminal_session.html create mode 100644 html/classcore_1_1_terminal_session__coll__graph.map create mode 100644 html/classcore_1_1_terminal_session__coll__graph.md5 create mode 100644 html/classcore_1_1_terminal_session__coll__graph.png create mode 100644 html/classcore_1_1_terminal_session__inherit__graph.map create mode 100644 html/classcore_1_1_terminal_session__inherit__graph.md5 create mode 100644 html/classcore_1_1_terminal_session__inherit__graph.png create mode 100644 html/classcore_1_1_thread-members.html create mode 100644 html/classcore_1_1_thread.html create mode 100644 html/classcore_1_1_thread__coll__graph.map create mode 100644 html/classcore_1_1_thread__coll__graph.md5 create mode 100644 html/classcore_1_1_thread__coll__graph.png create mode 100644 html/classcore_1_1_thread__inherit__graph.map create mode 100644 html/classcore_1_1_thread__inherit__graph.md5 create mode 100644 html/classcore_1_1_thread__inherit__graph.png create mode 100644 html/classcore_1_1_timer-members.html create mode 100644 html/classcore_1_1_timer.html create mode 100644 html/classcore_1_1_timer__coll__graph.map create mode 100644 html/classcore_1_1_timer__coll__graph.md5 create mode 100644 html/classcore_1_1_timer__coll__graph.png create mode 100644 html/classcore_1_1_timer__inherit__graph.map create mode 100644 html/classcore_1_1_timer__inherit__graph.md5 create mode 100644 html/classcore_1_1_timer__inherit__graph.png create mode 100644 html/classcore_1_1_u_d_p_server_socket-members.html create mode 100644 html/classcore_1_1_u_d_p_server_socket.html create mode 100644 html/classcore_1_1_u_d_p_server_socket__coll__graph.map create mode 100644 html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 create mode 100644 html/classcore_1_1_u_d_p_server_socket__coll__graph.png create mode 100644 html/classcore_1_1_u_d_p_server_socket__inherit__graph.map create mode 100644 html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 create mode 100644 html/classcore_1_1_u_d_p_server_socket__inherit__graph.png create mode 100644 html/classcore_1_1_u_d_p_socket-members.html create mode 100644 html/classcore_1_1_u_d_p_socket.html create mode 100644 html/classcore_1_1_u_d_p_socket__coll__graph.map create mode 100644 html/classcore_1_1_u_d_p_socket__coll__graph.md5 create mode 100644 html/classcore_1_1_u_d_p_socket__coll__graph.png create mode 100644 html/classcore_1_1_u_d_p_socket__inherit__graph.map create mode 100644 html/classcore_1_1_u_d_p_socket__inherit__graph.md5 create mode 100644 html/classcore_1_1_u_d_p_socket__inherit__graph.png create mode 100644 html/classes.html create mode 100644 html/closed.png create mode 100644 html/doc.png create mode 100644 html/doxygen.css create mode 100644 html/doxygen.png create mode 100644 html/dynsections.js create mode 100644 html/files.html create mode 100644 html/folderclosed.png create mode 100644 html/folderopen.png create mode 100644 html/functions.html create mode 100644 html/functions_func.html create mode 100644 html/functions_vars.html create mode 100644 html/graph_legend.html create mode 100644 html/graph_legend.md5 create mode 100644 html/graph_legend.png create mode 100644 html/hierarchy.html create mode 100644 html/index.html create mode 100644 html/inherit_graph_0.map create mode 100644 html/inherit_graph_0.md5 create mode 100644 html/inherit_graph_0.png create mode 100644 html/inherit_graph_1.map create mode 100644 html/inherit_graph_1.md5 create mode 100644 html/inherit_graph_1.png create mode 100644 html/inherits.html create mode 100644 html/jquery.js create mode 100644 html/menu.js create mode 100644 html/menudata.js create mode 100644 html/nav_f.png create mode 100644 html/nav_g.png create mode 100644 html/nav_h.png create mode 100644 html/open.png create mode 100644 html/search/all_0.html create mode 100644 html/search/all_0.js create mode 100644 html/search/all_1.html create mode 100644 html/search/all_1.js create mode 100644 html/search/all_2.html create mode 100644 html/search/all_2.js create mode 100644 html/search/all_3.html create mode 100644 html/search/all_3.js create mode 100644 html/search/all_4.html create mode 100644 html/search/all_4.js create mode 100644 html/search/all_5.html create mode 100644 html/search/all_5.js create mode 100644 html/search/all_6.html create mode 100644 html/search/all_6.js create mode 100644 html/search/all_7.html create mode 100644 html/search/all_7.js create mode 100644 html/search/all_8.html create mode 100644 html/search/all_8.js create mode 100644 html/search/all_9.html create mode 100644 html/search/all_9.js create mode 100644 html/search/all_a.html create mode 100644 html/search/all_a.js create mode 100644 html/search/all_b.html create mode 100644 html/search/all_b.js create mode 100644 html/search/all_c.html create mode 100644 html/search/all_c.js create mode 100644 html/search/all_d.html create mode 100644 html/search/all_d.js create mode 100644 html/search/all_e.html create mode 100644 html/search/all_e.js create mode 100644 html/search/classes_0.html create mode 100644 html/search/classes_0.js create mode 100644 html/search/classes_1.html create mode 100644 html/search/classes_1.js create mode 100644 html/search/classes_2.html create mode 100644 html/search/classes_2.js create mode 100644 html/search/classes_3.html create mode 100644 html/search/classes_3.js create mode 100644 html/search/classes_4.html create mode 100644 html/search/classes_4.js create mode 100644 html/search/classes_5.html create mode 100644 html/search/classes_5.js create mode 100644 html/search/classes_6.html create mode 100644 html/search/classes_6.js create mode 100644 html/search/close.png create mode 100644 html/search/functions_0.html create mode 100644 html/search/functions_0.js create mode 100644 html/search/functions_1.html create mode 100644 html/search/functions_1.js create mode 100644 html/search/functions_2.html create mode 100644 html/search/functions_2.js create mode 100644 html/search/functions_3.html create mode 100644 html/search/functions_3.js create mode 100644 html/search/functions_4.html create mode 100644 html/search/functions_4.js create mode 100644 html/search/functions_5.html create mode 100644 html/search/functions_5.js create mode 100644 html/search/functions_6.html create mode 100644 html/search/functions_6.js create mode 100644 html/search/functions_7.html create mode 100644 html/search/functions_7.js create mode 100644 html/search/functions_8.html create mode 100644 html/search/functions_8.js create mode 100644 html/search/functions_9.html create mode 100644 html/search/functions_9.js create mode 100644 html/search/functions_a.html create mode 100644 html/search/functions_a.js create mode 100644 html/search/functions_b.html create mode 100644 html/search/functions_b.js create mode 100644 html/search/functions_c.html create mode 100644 html/search/functions_c.js create mode 100644 html/search/mag_sel.png create mode 100644 html/search/nomatches.html create mode 100644 html/search/search.css create mode 100644 html/search/search.js create mode 100644 html/search/search_l.png create mode 100644 html/search/search_m.png create mode 100644 html/search/search_r.png create mode 100644 html/search/searchdata.js create mode 100644 html/search/variables_0.html create mode 100644 html/search/variables_0.js create mode 100644 html/search/variables_1.html create mode 100644 html/search/variables_1.js create mode 100644 html/search/variables_2.html create mode 100644 html/search/variables_2.js create mode 100644 html/search/variables_3.html create mode 100644 html/search/variables_3.js create mode 100644 html/search/variables_4.html create mode 100644 html/search/variables_4.js create mode 100644 html/splitbar.png create mode 100644 html/sync_off.png create mode 100644 html/sync_on.png create mode 100644 html/tab_a.png create mode 100644 html/tab_b.png create mode 100644 html/tab_h.png create mode 100644 html/tab_s.png create mode 100644 html/tabs.css create mode 100644 latex/Makefile create mode 100644 latex/annotated.tex create mode 100644 latex/classcore_1_1_command.tex create mode 100644 latex/classcore_1_1_command__coll__graph.md5 create mode 100644 latex/classcore_1_1_command__coll__graph.pdf create mode 100644 latex/classcore_1_1_command__inherit__graph.md5 create mode 100644 latex/classcore_1_1_command__inherit__graph.pdf create mode 100644 latex/classcore_1_1_command_list.tex create mode 100644 latex/classcore_1_1_command_list__coll__graph.md5 create mode 100644 latex/classcore_1_1_command_list__coll__graph.pdf create mode 100644 latex/classcore_1_1_command_list__inherit__graph.md5 create mode 100644 latex/classcore_1_1_command_list__inherit__graph.pdf create mode 100644 latex/classcore_1_1_console_server.tex create mode 100644 latex/classcore_1_1_console_server__coll__graph.md5 create mode 100644 latex/classcore_1_1_console_server__coll__graph.pdf create mode 100644 latex/classcore_1_1_console_server__inherit__graph.md5 create mode 100644 latex/classcore_1_1_console_server__inherit__graph.pdf create mode 100644 latex/classcore_1_1_console_session.tex create mode 100644 latex/classcore_1_1_console_session__coll__graph.md5 create mode 100644 latex/classcore_1_1_console_session__coll__graph.pdf create mode 100644 latex/classcore_1_1_console_session__inherit__graph.md5 create mode 100644 latex/classcore_1_1_console_session__inherit__graph.pdf create mode 100644 latex/classcore_1_1_e_poll.tex create mode 100644 latex/classcore_1_1_e_poll__coll__graph.md5 create mode 100644 latex/classcore_1_1_e_poll__coll__graph.pdf create mode 100644 latex/classcore_1_1_e_poll__inherit__graph.md5 create mode 100644 latex/classcore_1_1_e_poll__inherit__graph.pdf create mode 100644 latex/classcore_1_1_i_p_address.tex create mode 100644 latex/classcore_1_1_i_p_address__coll__graph.md5 create mode 100644 latex/classcore_1_1_i_p_address__coll__graph.pdf create mode 100644 latex/classcore_1_1_i_p_address__inherit__graph.md5 create mode 100644 latex/classcore_1_1_i_p_address__inherit__graph.pdf create mode 100644 latex/classcore_1_1_i_p_address_list.tex create mode 100644 latex/classcore_1_1_object.tex create mode 100644 latex/classcore_1_1_object__inherit__graph.md5 create mode 100644 latex/classcore_1_1_object__inherit__graph.pdf create mode 100644 latex/classcore_1_1_session_filter.tex create mode 100644 latex/classcore_1_1_session_filter__coll__graph.md5 create mode 100644 latex/classcore_1_1_session_filter__coll__graph.pdf create mode 100644 latex/classcore_1_1_session_filter__inherit__graph.md5 create mode 100644 latex/classcore_1_1_session_filter__inherit__graph.pdf create mode 100644 latex/classcore_1_1_socket.tex create mode 100644 latex/classcore_1_1_socket__coll__graph.md5 create mode 100644 latex/classcore_1_1_socket__coll__graph.pdf create mode 100644 latex/classcore_1_1_socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1_socket__inherit__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_server.tex create mode 100644 latex/classcore_1_1_t_c_p_server__coll__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_server__coll__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_server__inherit__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_server__inherit__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_session.tex create mode 100644 latex/classcore_1_1_t_c_p_session__coll__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_session__coll__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_session__inherit__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_session__inherit__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_socket.tex create mode 100644 latex/classcore_1_1_t_c_p_socket__coll__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_socket__coll__graph.pdf create mode 100644 latex/classcore_1_1_t_c_p_socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1_t_c_p_socket__inherit__graph.pdf create mode 100644 latex/classcore_1_1_t_l_s_server.tex create mode 100644 latex/classcore_1_1_t_l_s_server__coll__graph.md5 create mode 100644 latex/classcore_1_1_t_l_s_server__coll__graph.pdf create mode 100644 latex/classcore_1_1_t_l_s_server__inherit__graph.md5 create mode 100644 latex/classcore_1_1_t_l_s_server__inherit__graph.pdf create mode 100644 latex/classcore_1_1_t_l_s_session.tex create mode 100644 latex/classcore_1_1_t_l_s_session__coll__graph.md5 create mode 100644 latex/classcore_1_1_t_l_s_session__coll__graph.pdf create mode 100644 latex/classcore_1_1_t_l_s_session__inherit__graph.md5 create mode 100644 latex/classcore_1_1_t_l_s_session__inherit__graph.pdf create mode 100644 latex/classcore_1_1_terminal_session.tex create mode 100644 latex/classcore_1_1_terminal_session__coll__graph.md5 create mode 100644 latex/classcore_1_1_terminal_session__coll__graph.pdf create mode 100644 latex/classcore_1_1_terminal_session__inherit__graph.md5 create mode 100644 latex/classcore_1_1_terminal_session__inherit__graph.pdf create mode 100644 latex/classcore_1_1_thread.tex create mode 100644 latex/classcore_1_1_thread__coll__graph.md5 create mode 100644 latex/classcore_1_1_thread__coll__graph.pdf create mode 100644 latex/classcore_1_1_thread__inherit__graph.md5 create mode 100644 latex/classcore_1_1_thread__inherit__graph.pdf create mode 100644 latex/classcore_1_1_timer.tex create mode 100644 latex/classcore_1_1_timer__coll__graph.md5 create mode 100644 latex/classcore_1_1_timer__coll__graph.pdf create mode 100644 latex/classcore_1_1_timer__inherit__graph.md5 create mode 100644 latex/classcore_1_1_timer__inherit__graph.pdf create mode 100644 latex/classcore_1_1_u_d_p_server_socket.tex create mode 100644 latex/classcore_1_1_u_d_p_server_socket__coll__graph.md5 create mode 100644 latex/classcore_1_1_u_d_p_server_socket__coll__graph.pdf create mode 100644 latex/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1_u_d_p_server_socket__inherit__graph.pdf create mode 100644 latex/classcore_1_1_u_d_p_socket.tex create mode 100644 latex/classcore_1_1_u_d_p_socket__coll__graph.md5 create mode 100644 latex/classcore_1_1_u_d_p_socket__coll__graph.pdf create mode 100644 latex/classcore_1_1_u_d_p_socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1_u_d_p_socket__inherit__graph.pdf create mode 100644 latex/doxygen.sty create mode 100644 latex/hierarchy.tex create mode 100644 latex/refman.tex diff --git a/Command.cpp b/Command.cpp index d40ffbd..7a7846b 100644 --- a/Command.cpp +++ b/Command.cpp @@ -1,9 +1,8 @@ #include "Command.h" -#include "Session.h" namespace core { - int Command::processCommand(std::string request, Session *session, std::stringstream &data) {} + int Command::processCommand(std::string request, TCPSession *session, std::stringstream &data) {} void Command::output(Session *session) {} diff --git a/Command.h b/Command.h index 6ba8824..e7a5ac0 100644 --- a/Command.h +++ b/Command.h @@ -3,6 +3,7 @@ #include "includes" #include "Object.h" +#include "TCPSession.h" namespace core { @@ -46,7 +47,7 @@ namespace core { /// a non-zero value indicating an error condition. /// - virtual int processCommand(std::string request, Session *session, std::stringstream &data); + virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data); /// /// Specify the output that will occur to the specified session. diff --git a/CommandList.cpp b/CommandList.cpp index 047e621..03b01ea 100644 --- a/CommandList.cpp +++ b/CommandList.cpp @@ -1,11 +1,7 @@ #include "CommandList.h"\ namespace core { - - CommandList::CommandList() {} - - CommandList::~CommandList() {} - + void CommandList::add(Command &command, std::string name) { command.setName(name); commands.push_back(&command); @@ -15,7 +11,7 @@ namespace core { } - bool CommandList::processRequest(std::string request, Session *session, std::stringstream &data) { + bool CommandList::processRequest(std::string request, TCPSession *session, std::stringstream &data) { for(auto *command : commands) { if(command->check(request)) { command->processCommand(request, session, data); @@ -25,7 +21,7 @@ namespace core { return false; } - int CommandList::processCommand(std::string request, Session *session, std::stringstream &data) { + int CommandList::processCommand(std::string request, TCPSession *session, std::stringstream &data) { for(Command *command : commands) data << command->getName() << std::endl; } diff --git a/CommandList.h b/CommandList.h index 88c16ed..64ec117 100644 --- a/CommandList.h +++ b/CommandList.h @@ -1,7 +1,7 @@ #ifndef __CommandList_h__ #define __CommandList_h__ -#include "Session.h" +#include "TCPSession.h" #include "Command.h" #include "Log.h" @@ -19,18 +19,6 @@ namespace core { public: - /// - /// The constructor for the object. - /// - - CommandList(); - - /// - /// The destructor for the object. - /// - - ~CommandList(); - /// /// Add a new command to the command list and assign a default search value. /// @@ -39,9 +27,9 @@ namespace core { void remove(Command &command); - bool processRequest(std::string request, Session *session, std::stringstream &data); + bool processRequest(std::string request, TCPSession *session, std::stringstream &data); - int processCommand(std::string request, Session *session, std::stringstream &data) override; + int processCommand(std::string request, TCPSession *session, std::stringstream &data); protected: std::vector commands; diff --git a/ConsoleServer.cpp b/ConsoleServer.cpp index d7278dc..a6f1a4a 100644 --- a/ConsoleServer.cpp +++ b/ConsoleServer.cpp @@ -5,15 +5,17 @@ namespace core { - ConsoleServer::ConsoleServer(EPoll &ePoll, Service &service, IPAddress address) - : TCPServerSocket(ePoll, service, address) { + ConsoleServer::ConsoleServer(EPoll &ePoll, IPAddress address) : TCPServer(ePoll, address) { coreutils::Log(this); } void ConsoleServer::logSend(std::string out) { - for(auto *session : service.sessions) + for(auto *session : sessions) ((ConsoleSession *)session)->writeLog(out); } + TCPSession * ConsoleServer::getSocketAccept(EPoll &ePoll) { + return new ConsoleSession(ePoll, *this); + } } diff --git a/ConsoleServer.h b/ConsoleServer.h index 29676ea..cc27b71 100644 --- a/ConsoleServer.h +++ b/ConsoleServer.h @@ -2,21 +2,20 @@ #define __ConsoleServer_h__ #include "includes" -#include "TCPServerSocket.h" -#include "Service.h" +#include "TCPServer.h" #include "Command.h" -#include "Session.h" #include "EPoll.h" namespace core { class TCPSocket; + class TCPSession; /// /// /// - class ConsoleServer : public TCPServerSocket, coreutils::LogListener { + class ConsoleServer : public TCPServer, coreutils::LogListener { public: @@ -24,7 +23,7 @@ namespace core { // // - ConsoleServer(EPoll &ePoll, Service &service, IPAddress address); + ConsoleServer(EPoll &ePoll, IPAddress address); // // @@ -32,9 +31,10 @@ namespace core { void logSend(std::string out) override; + TCPSession * getSocketAccept(EPoll &ePoll) override; + }; } - #endif diff --git a/ConsoleService.cpp b/ConsoleService.cpp deleted file mode 100644 index 77bfd5e..0000000 --- a/ConsoleService.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "ConsoleService.h" - -namespace core { - - Session * ConsoleService::getSocketAccept(EPoll &ePoll) { - return new ConsoleSession(ePoll, *this); - } - -} \ No newline at end of file diff --git a/ConsoleService.h b/ConsoleService.h deleted file mode 100644 index 3fbb142..0000000 --- a/ConsoleService.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __ConsoleService_h__ -#define __ConsoleService_h__ - -#include "Service.h" -#include "ConsoleSession.h" - -namespace core { - - class ConsoleService : public Service { - - public: - Session * getSocketAccept(EPoll &ePoll) override; - - }; - -} - -#endif diff --git a/ConsoleSession.cpp b/ConsoleSession.cpp index 2228d73..9147681 100644 --- a/ConsoleSession.cpp +++ b/ConsoleSession.cpp @@ -3,7 +3,7 @@ namespace core { - ConsoleSession::ConsoleSession(EPoll &ePoll, Service &service) : TerminalSession(ePoll, service) { + ConsoleSession::ConsoleSession(EPoll &ePoll, TCPServer &server) : TerminalSession(ePoll, server) { coreutils::Log(coreutils::LOG_DEBUG_2) << "Constructing ConsoleSession..."; } @@ -102,7 +102,7 @@ namespace core { saveCursor(); setCursorLocation(16, 1); out << "--> " << request << std::endl; - service.commands.processRequest(request, this, out); + server.commands.processRequest(request, this, out); restoreCursor(); send(); } diff --git a/ConsoleSession.h b/ConsoleSession.h index 272a892..d0202b2 100644 --- a/ConsoleSession.h +++ b/ConsoleSession.h @@ -2,8 +2,7 @@ #define __ConsoleSession_h__ #include "TerminalSession.h" -#include "Session.h" -#include "Service.h" +#include "TCPSession.h" #include "CommandList.h" namespace core { @@ -19,7 +18,7 @@ namespace core { class ConsoleSession : public TerminalSession { public: - ConsoleSession(EPoll &ePoll, Service &service); + ConsoleSession(EPoll &ePoll, TCPServer &server); ~ConsoleSession(); void writeLog(std::string data); diff --git a/EPoll.cpp b/EPoll.cpp index 6803d61..1e3a9f2 100644 --- a/EPoll.cpp +++ b/EPoll.cpp @@ -1,6 +1,5 @@ #include "Thread.h" #include "EPoll.h" -#include "Session.h" #include "Command.h" #include "Exception.h" @@ -111,7 +110,7 @@ namespace core { return epfd; } - int EPoll::processCommand(std::string command, Session *session, std::stringstream &data) { + int EPoll::processCommand(std::string command, TCPSession *session, std::stringstream &data) { int sequence = 0; for(auto threadx : threads) { data << "|" << ++sequence; diff --git a/EPoll.h b/EPoll.h index 77a4c77..f86dd31 100644 --- a/EPoll.h +++ b/EPoll.h @@ -4,7 +4,7 @@ #include "Log.h" #include "Socket.h" #include "Thread.h" -#include "Session.h" +#include "TCPSession.h" #include "Command.h" namespace core { @@ -110,7 +110,7 @@ namespace core { /// @param session the session to write the requested data to. /// - int processCommand(std::string command, Session *session, std::stringstream &data) override; /// - - - - - - @@ -41,12 +35,14 @@ - - - - + + + + + + diff --git a/ServerCore.txt b/ServerCore.txt index ff49318..eee917a 100644 --- a/ServerCore.txt +++ b/ServerCore.txt @@ -1 +1 @@ -./Debug/Command.cpp.o ./Debug/ConsoleServer.cpp.o ./Debug/ConsoleSession.cpp.o ./Debug/EPoll.cpp.o ./Debug/IPAddress.cpp.o ./Debug/Session.cpp.o ./Debug/Socket.cpp.o ./Debug/TCPServerSocket.cpp.o ./Debug/TCPSocket.cpp.o ./Debug/Thread.cpp.o ./Debug/Timer.cpp.o ./Debug/TLSServerSocket.cpp.o ./Debug/TLSSession.cpp.o ./Debug/UDPServerSocket.cpp.o ./Debug/UDPSocket.cpp.o ./Debug/CommandList.cpp.o ./Debug/TerminalSession.cpp.o ./Debug/Service.cpp.o ./Debug/IPAddressList.cpp.o ./Debug/ConsoleService.cpp.o +./Debug/Command.cpp.o ./Debug/ConsoleServer.cpp.o ./Debug/ConsoleSession.cpp.o ./Debug/EPoll.cpp.o ./Debug/IPAddress.cpp.o ./Debug/Socket.cpp.o ./Debug/TCPSocket.cpp.o ./Debug/Thread.cpp.o ./Debug/Timer.cpp.o ./Debug/TLSSession.cpp.o ./Debug/UDPServerSocket.cpp.o ./Debug/UDPSocket.cpp.o ./Debug/CommandList.cpp.o ./Debug/TerminalSession.cpp.o ./Debug/IPAddressList.cpp.o ./Debug/TCPServer.cpp.o ./Debug/TLSServer.cpp.o ./Debug/TCPSession.cpp.o diff --git a/Service.cpp b/Service.cpp deleted file mode 100644 index 5a7e4f3..0000000 --- a/Service.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "Service.h" -#include "TCPServerSocket.h" -#include "Exception.h" - -namespace core { - - Service::Service() {} - - void Service::removeFromSessionList(Session *session) { - std::vector::iterator cursor; - for(cursor = sessions.begin(); cursor < sessions.end(); ++cursor) - if(*cursor == session) - sessions.erase(cursor); - } - - void Service::sessionErrorHandler(std::string errorString, Session *session) { - throw coreutils::Exception(errorString); - } - - Session * Service::getSocketAccept(EPoll &ePoll) { - return new Session(ePoll, *this); - } - - void Service::output(Session *session) { - session->out << "|" << session->ipAddress.getClientAddressAndPort(); - } - -} - diff --git a/Service.h b/Service.h deleted file mode 100644 index 963f61d..0000000 --- a/Service.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef __Service_h__ -#define __Service_h__ - -#include "Object.h" -#include "CommandList.h" - -namespace core { - -// class TCPServerSocket; - - /// - /// Service - /// - /// The Service object is instantiated as a single object upon construction - /// of the parent TCPServerSocket and is provided as a parameter whenever - /// a new Session object is created. It provides server level services to - /// Command handlers as well as determining the behavior of the socket. - /// - - class Service : public Command { - - public: - - /// - /// Use this constructor to create a new Service object. - /// - /// @param server A reference to the parent server creating the object. - /// - - Service(); - - void removeFromSessionList(Session *session); - - virtual void sessionErrorHandler(std::string errorString, Session *session); - - /// - /// getSocketAccept is designed to allow a polymorphic extension of this object to - /// return a type of object that extends the definition of the server socket. - /// Returning the appropriate session object that extends from Session provides - /// the mechanism where the server can select the protocol dialog for the desired - /// service. - /// - - virtual Session * getSocketAccept(EPoll &epoll); - - void output(Session *session) override; /// sessions; - - /// - /// The commands object is a CommandList and is used to store Command objects to be - /// parsed and run as data comes into the session. - /// - - CommandList commands; - - }; - -} - -#endif diff --git a/Session.cpp b/Session.cpp deleted file mode 100644 index d642b10..0000000 --- a/Session.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include "Session.h" -#include "Log.h" -#include "Service.h" - -namespace core { - - Session::Session(EPoll &ePoll, Service &service) : TCPSocket(ePoll), service(service) {} - - Session::~Session() { - service.removeFromSessionList(this); - } - - void Session::output(std::stringstream &data) { - data << "|" << ipAddress.getClientAddressAndPort(); - } - - void Session::protocol(std::string data = "") { - if(data.length() > 0) { - if(!service.commands.processRequest(data, this, out)) - service.sessionErrorHandler("Invalid data received.", this); - send(); - } - } - - void Session::onConnected() { - protocol(); - } - - void Session::onDataReceived(std::string data) { - protocol(data); - } - - void Session::sendToAll() { - for(auto session : service.sessions) { - if(session != this) - session->write(out.str()); - } - out.str(""); - } - - void Session::sendToAll(SessionFilter filter) { - for(auto session : service.sessions) { - if(filter.test(*session)) { - if(session != this) - session->write(out.str()); - } - } - out.str(""); - } - - void Session::send() { - write(out.str()); - out.str(""); - } - -} diff --git a/SessionFilter.h b/SessionFilter.h index 8867e8f..8cca085 100644 --- a/SessionFilter.h +++ b/SessionFilter.h @@ -5,12 +5,12 @@ namespace core { - class Session; + class TCPSession; class SessionFilter : public Object { public: - virtual bool test(Session &session) { + virtual bool test(TCPSession &session) { return true; } diff --git a/TCPServerSocket.cpp b/TCPServer.cpp similarity index 58% rename from TCPServerSocket.cpp rename to TCPServer.cpp index 920161d..f98a3a9 100644 --- a/TCPServerSocket.cpp +++ b/TCPServer.cpp @@ -1,12 +1,12 @@ -#include "TCPServerSocket.h" +#include "TCPServer.h" #include "EPoll.h" -#include "Session.h" +#include "TCPSession.h" #include "Exception.h" #include "Log.h" namespace core { - TCPServerSocket::TCPServerSocket(EPoll &ePoll, Service &service, IPAddress address) : TCPSocket(ePoll), service(service) { + TCPServer::TCPServer(EPoll &ePoll, IPAddress address) : TCPSocket(ePoll) { setDescriptor(socket(AF_INET, SOCK_STREAM, 0)); int yes = 1; setsockopt(getDescriptor(), SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); @@ -17,17 +17,17 @@ namespace core { ePoll.registerSocket(this); } - TCPServerSocket::~TCPServerSocket() { + TCPServer::~TCPServer() { close(getDescriptor()); } - void TCPServerSocket::onDataReceived(std::string data) { - Session *session = accept(); - if(session) service.sessions.push_back(session); + void TCPServer::onDataReceived(std::string data) { + TCPSession *session = accept(); + if(session) sessions.push_back(session); } - Session * TCPServerSocket::accept() { - Session *session = service.getSocketAccept(ePoll); + TCPSession * TCPServer::accept() { + TCPSession *session = getSocketAccept(ePoll); session->setDescriptor(::accept(getDescriptor(), (struct sockaddr *)&session->ipAddress.addr, &session->ipAddress.addressLength)); // if(blackList && blackList->contains(session->ipAddress.getClientAddress())) { @@ -46,10 +46,29 @@ namespace core { coreutils::Log(coreutils::LOG_DEBUG_2) << "Session started on socket " << session->getDescriptor() << "."; return session; } + + void TCPServer::removeFromSessionList(TCPSession *session) { + std::vector::iterator cursor; + for(cursor = sessions.begin(); cursor < sessions.end(); ++cursor) + if(*cursor == session) + sessions.erase(cursor); + } - int TCPServerSocket::processCommand(std::string command, Session *session, std::stringstream &data) { + void TCPServer::sessionErrorHandler(std::string errorString) { + throw coreutils::Exception(errorString); + } + + TCPSession * TCPServer::getSocketAccept(EPoll &ePoll) { + return new TCPSession(ePoll, *this); + } + + void TCPServer::output(TCPSession *session) { + session->out << "|" << session->ipAddress.getClientAddressAndPort(); + } + + int TCPServer::processCommand(std::string command, TCPSession *session, std::stringstream &data) { int sequence = 0; - for(auto *sessionx : service.sessions) { + for(auto *sessionx : sessions) { data << "|" << ++sequence; sessionx->output(data); data << "|" << std::endl; diff --git a/TCPServerSocket.h b/TCPServer.h similarity index 65% rename from TCPServerSocket.h rename to TCPServer.h index fc938f8..0ec4e27 100644 --- a/TCPServerSocket.h +++ b/TCPServer.h @@ -1,15 +1,16 @@ -#ifndef __TCPServerSocket_h__ -#define __TCPServerSocket_h__ +#ifndef __TCPServer_h__ +#define __TCPServer_h__ #include "Socket.h" #include "TCPSocket.h" -#include "Service.h" #include "IPAddressList.h" +#include "Command.h" +#include "CommandList.h" namespace core { /// - /// TCPServerSocket + /// TCPServer /// /// Manage a socket connection as a TCP server type. Connections to the socket are processed through /// the accept functionality. @@ -20,7 +21,7 @@ namespace core { /// process commands to display status information. /// - class TCPServerSocket : public TCPSocket, public Command { + class TCPServer : public TCPSocket, public Command { public: @@ -34,20 +35,13 @@ namespace core { /// @return the instance of the BMATCPServerSocket. /// - TCPServerSocket(EPoll &ePoll, Service &service, IPAddress address); + TCPServer(EPoll &ePoll, IPAddress address); /// /// The destructor for this object. /// - ~TCPServerSocket(); - - /// - /// The service object reference used to access associated server information such as sessions - /// and other extended managers. - /// - - Service &service; + ~TCPServer(); /// /// If not NULL the blacklist object can be assigned to this server socket and the server @@ -61,8 +55,38 @@ namespace core { /// IP addresses connecting to the server attempting to accept a socket are contained in /// this list then the connection is rejected and no accept is granted. /// - IPAddressList *whiteList; + IPAddressList *whiteList; + + void removeFromSessionList(TCPSession *session); + + virtual void sessionErrorHandler(std::string errorString); + + /// + /// getSocketAccept is designed to allow a polymorphic extension of this object to + /// return a type of object that extends the definition of the server socket. + /// Returning the appropriate session object that extends from Session provides + /// the mechanism where the server can select the protocol dialog for the desired + /// service. + /// + + virtual TCPSession * getSocketAccept(EPoll &epoll); + + void output(TCPSession *session); /// sessions; + + /// + /// The commands object is a CommandList and is used to store Command objects to be + /// parsed and run as data comes into the session. + /// + + CommandList commands; + protected: /// @@ -84,11 +108,11 @@ namespace core { /// @param the session object to write the output to. /// - int processCommand(std::string command, Session *session, std::stringstream &data) override; + int processCommand(std::string command, TCPSession *session, std::stringstream &data) override; private: - Session * accept(); + TCPSession * accept(); }; diff --git a/TCPSession.cpp b/TCPSession.cpp new file mode 100644 index 0000000..d238c46 --- /dev/null +++ b/TCPSession.cpp @@ -0,0 +1,56 @@ +#include "TCPSession.h" +#include "TCPServer.h" +#include "Log.h" + +namespace core { + + TCPSession::TCPSession(EPoll &ePoll, TCPServer &server) : TCPSocket(ePoll), server(server) {} + + TCPSession::~TCPSession() { + server.removeFromSessionList(this); + } + + void TCPSession::output(std::stringstream &data) { + data << "|" << ipAddress.getClientAddressAndPort(); + } + + void TCPSession::protocol(std::string data = "") { + if(data.length() > 0) { + if(!server.commands.processRequest(data, this, out)) + server.sessionErrorHandler("Invalid data received."); + send(); + } + } + + void TCPSession::onConnected() { + protocol(); + } + + void TCPSession::onDataReceived(std::string data) { + protocol(data); + } + + void TCPSession::sendToAll() { + for(auto session : server.sessions) { + if(session != this) + session->write(out.str()); + } + out.str(""); + } + + void TCPSession::sendToAll(SessionFilter filter) { + for(auto session : server.sessions) { + if(filter.test(*session)) { + if(session != this) + session->write(out.str()); + } + } + out.str(""); + } + + void TCPSession::send() { + write(out.str()); + out.str(""); + } + +} diff --git a/Session.h b/TCPSession.h similarity index 87% rename from Session.h rename to TCPSession.h index 63ede5c..096bd12 100644 --- a/Session.h +++ b/TCPSession.h @@ -3,27 +3,26 @@ #include "TCPSocket.h" #include "SessionFilter.h" -//#include "Service.h" namespace core { - class Service; + class TCPServer; /// - /// Session + /// TCPSession /// - /// Session defines the nature of the interaction with the client + /// TCPSession defines the nature of the interaction with the client /// and stores persistent data for a defined session. BMASession objects /// are not sockets but instead provide a communications control /// mechanism. Protocol conversations are provided through extensions /// from this object. /// - class Session : public TCPSocket { + class TCPSession : public TCPSocket { public: - Session(EPoll &ePoll, Service &service); - ~Session(); + TCPSession(EPoll &ePoll, TCPServer &server); + ~TCPSession(); virtual void output(std::stringstream &data); @@ -51,7 +50,7 @@ namespace core { std::stringstream out; - Service &service; + TCPServer &server; protected: diff --git a/TLSServer.cpp b/TLSServer.cpp new file mode 100644 index 0000000..c1747b9 --- /dev/null +++ b/TLSServer.cpp @@ -0,0 +1,62 @@ +#include "TLSServer.h" +#include "TLSSession.h" +#include "EPoll.h" +#include "TCPSession.h" +#include "Exception.h" + +namespace core { + + static pthread_mutex_t *lockarray; + + //static void lock_callback(int mode, int type, const char *file, int line) { + // if(mode & CRYPTO_LOCK) + // pthread_mutex_lock(&(lockarray[type])); + // else + // pthread_mutex_unlock(&(lockarray[type])); + //} + + TLSServer::TLSServer(EPoll &ePoll, IPAddress address) : TCPServer(ePoll, address) { + + SSL_library_init(); + SSL_load_error_strings(); + + lockarray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t)); + for(int i = 0; i < CRYPTO_num_locks(); ++i) + pthread_mutex_init(&(lockarray[i]), NULL); + +// CRYPTO_set_id_callback((unsigned long (*)())thread_id); +// CRYPTO_set_locking_callback((void ()(int, int, const char *, int))lock_callback); + + SSLeay_add_ssl_algorithms(); + RAND_load_file("/dev/hwrng", 1024); + + if(!(ctx = SSL_CTX_new(SSLv23_server_method()))) + throw coreutils::Exception("Error while setting server method SSLv23."); + SSL_CTX_set_mode(ctx, SSL_MODE_RELEASE_BUFFERS | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); + SSL_CTX_set_options(ctx, SSL_OP_NO_TICKET); + SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_SERVER); + // SSL_CTX_set_generate_session_id(ctx, generate_session_id); + SSL_CTX_set_cipher_list(ctx, "ECDH-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA"); + if(SSL_CTX_use_certificate_file(ctx, sip_cert, SSL_FILETYPE_PEM) <= 0) + throw coreutils::Exception("Error looking up certificate."); + if(SSL_CTX_use_PrivateKey_file(ctx, sip_key, SSL_FILETYPE_PEM) < 0) + throw coreutils::Exception("Error with private key."); + if(SSL_CTX_check_private_key(ctx) != 1) + throw coreutils::Exception("Private key does not match certificate."); + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); + SSL_CTX_set_verify_depth(ctx, 1); + if(!SSL_CTX_load_verify_locations(ctx, sip_cacert, NULL)) + throw coreutils::Exception("Cannot verify locations."); + SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(sip_cacert)); + coreutils::Log(coreutils::LOG_DEBUG_1) << "Server key authenticated."; + } + + TLSServer::~TLSServer() { + + } + + TCPSession * TLSServer::getSocketAccept() { + return new TLSSession(ePoll, *this); + } + +} diff --git a/TLSServerSocket.h b/TLSServer.h similarity index 75% rename from TLSServerSocket.h rename to TLSServer.h index 2b1f309..592a3cd 100644 --- a/TLSServerSocket.h +++ b/TLSServer.h @@ -2,27 +2,26 @@ #define TLSServerSocket_h__ #include "Socket.h" -#include "TCPServerSocket.h" +#include "TCPServer.h" #include "Command.h" -#include "Session.h" +#include "TCPSession.h" #include "IPAddress.h" -#include "Service.h" namespace core { /// - /// TLSServerSocket + /// TLSServer /// /// Manage a socket connection as a TLS server type. Connections to the socket are processed through /// the accept functionality. /// - class TLSServerSocket : public TCPServerSocket { + class TLSServer : public TCPServer { public: /// - /// The constructor for the BMATLSSocket object. + /// The constructor. /// /// @param ePoll the BMAEPoll instance that manages the socket. /// @param url the IP address for the socket to receive connection requests. @@ -30,18 +29,19 @@ namespace core { /// @param commandName the name of the command used to invoke the status display for this object. /// @return the instance of the BMATLSServerSocket. - TLSServerSocket(EPoll &ePoll, Service service, IPAddress address); + TLSServer(EPoll &ePoll, IPAddress address); /// /// The destructor for this object. /// - ~TLSServerSocket(); - -// SSL_CTX *ctx; + ~TLSServer(); + + TCPSession * getSocketAccept(); + + SSL_CTX *ctx; private: - void tlsServerInit(); char *sip_cacert = (char *)"/home/barant/testkeys/certs/pbxca.crt"; char *sip_cert = (char *)"/home/barant/testkeys/certs/pbxserver.crt"; diff --git a/TLSServerSocket.cpp b/TLSServerSocket.cpp deleted file mode 100644 index ca6b34d..0000000 --- a/TLSServerSocket.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include "TLSServerSocket.h" -#include "TLSSession.h" -#include "TLSService.h" -#include "EPoll.h" -#include "Session.h" -#include "Exception.h" - -namespace core { - - static pthread_mutex_t *lockarray; - - //static void lock_callback(int mode, int type, const char *file, int line) { - // if(mode & CRYPTO_LOCK) - // pthread_mutex_lock(&(lockarray[type])); - // else - // pthread_mutex_unlock(&(lockarray[type])); - //} - - TLSServerSocket::TLSServerSocket(EPoll &ePoll, Service service, IPAddress address) : TCPServerSocket(ePoll, service, address) { - tlsServerInit(); - // TODO: Convert to use core::Exception object. - if(!(((TLSService &)service).ctx = SSL_CTX_new(SSLv23_server_method()))) - throw coreutils::Exception("Error while setting server method SSLv23."); - SSL_CTX_set_mode(((TLSService &)service).ctx, SSL_MODE_RELEASE_BUFFERS | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); - SSL_CTX_set_options(((TLSService &)service).ctx, SSL_OP_NO_TICKET); - SSL_CTX_set_session_cache_mode(((TLSService &)service).ctx, SSL_SESS_CACHE_SERVER); - // SSL_CTX_set_generate_session_id(ctx, generate_session_id); - SSL_CTX_set_cipher_list(((TLSService &)service).ctx, "ECDH-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA"); - if(SSL_CTX_use_certificate_file(((TLSService &)service).ctx, sip_cert, SSL_FILETYPE_PEM) <= 0) - throw coreutils::Exception("Error looking up certificate."); - if(SSL_CTX_use_PrivateKey_file(((TLSService &)service).ctx, sip_key, SSL_FILETYPE_PEM) < 0) - throw coreutils::Exception("Error with private key."); - if(SSL_CTX_check_private_key(((TLSService &)service).ctx) != 1) - throw coreutils::Exception("Private key does not match certificate."); - SSL_CTX_set_verify(((TLSService &)service).ctx, SSL_VERIFY_PEER, NULL); - SSL_CTX_set_verify_depth(((TLSService &)service).ctx, 1); - if(!SSL_CTX_load_verify_locations(((TLSService &)service).ctx, sip_cacert, NULL)) - throw coreutils::Exception("Cannot verify locations."); - SSL_CTX_set_client_CA_list(((TLSService &)service).ctx, SSL_load_client_CA_file(sip_cacert)); - coreutils::Log(coreutils::LOG_DEBUG_1) << "Server key authenticated."; - } - - TLSServerSocket::~TLSServerSocket() { - - } - - void TLSServerSocket::tlsServerInit() { - SSL_library_init(); - SSL_load_error_strings(); - - lockarray = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t)); - for(int i = 0; i < CRYPTO_num_locks(); ++i) - pthread_mutex_init(&(lockarray[i]), NULL); - -// CRYPTO_set_id_callback((unsigned long (*)())thread_id); -// CRYPTO_set_locking_callback((void ()(int, int, const char *, int))lock_callback); - - SSLeay_add_ssl_algorithms(); - RAND_load_file("/dev/hwrng", 1024); - } - -// Session * TLSServerSocket::getSocketAccept() { -// Session *session = new TLSSession(ePoll, this->service); -// return session; -// } - -} diff --git a/TLSService.h b/TLSService.h deleted file mode 100644 index 3254450..0000000 --- a/TLSService.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __TLSService_h__ -#define __TLSService_h__ - -#include "includes" -#include "Service.h" -#include "TLSServerSocket.h" - -namespace core { - - class TLSService : public Service { - - public: - TLSService(TLSServerSocket &server); - SSL_CTX *ctx; - - - }; - -} - -#endif diff --git a/TLSSession.cpp b/TLSSession.cpp index bb0ae5c..d5bddd1 100644 --- a/TLSSession.cpp +++ b/TLSSession.cpp @@ -1,9 +1,7 @@ #include "TLSSession.h" -#include "TLSService.h" #include "EPoll.h" #include "Log.h" #include "Exception.h" -//#include namespace core { @@ -33,7 +31,7 @@ namespace core { coreutils::Log(coreutils::LOG_DEBUG_3) << "No client certificate."; } - TLSSession::TLSSession(EPoll &ePoll, Service &service) : Session(ePoll, service) {} + TLSSession::TLSSession(EPoll &ePoll, TCPServer &server) : TCPSession(ePoll, server) {} // void TLSSession::init() { // diff --git a/TLSSession.h b/TLSSession.h index 68e3537..4156242 100644 --- a/TLSSession.h +++ b/TLSSession.h @@ -2,13 +2,13 @@ #define __TLSSession_h__ #include "includes" -#include "Session.h" -#include "TLSServerSocket.h" +#include "TCPSession.h" +#include "TLSServer.h" #include namespace core { - class TLSServerSocket; + class TLSServer; /// /// TLSSession @@ -20,11 +20,11 @@ namespace core { /// synchronous data connection. /// - class TLSSession : public Session { + class TLSSession : public TCPSession { public: - TLSSession(EPoll &ePoll, Service &service); + TLSSession(EPoll &ePoll, TCPServer &server); ~TLSSession(); /// diff --git a/TerminalSession.cpp b/TerminalSession.cpp index 409db13..3b6e797 100644 --- a/TerminalSession.cpp +++ b/TerminalSession.cpp @@ -2,7 +2,7 @@ namespace core { - TerminalSession::TerminalSession(EPoll &ePoll, Service &service) : Session(ePoll, service) { + TerminalSession::TerminalSession(EPoll &ePoll, TCPServer &server) : TCPSession(ePoll, server) { } TerminalSession::~TerminalSession() { diff --git a/TerminalSession.h b/TerminalSession.h index 8f7d01c..5c0ebea 100644 --- a/TerminalSession.h +++ b/TerminalSession.h @@ -2,8 +2,8 @@ #define __Terminal_h__ #include "includes" -#include "Session.h" -#include "TCPServerSocket.h" +#include "TCPSession.h" +#include "TCPServer.h" namespace core { @@ -27,10 +27,10 @@ namespace core { static const char esc = 0x1b; - class TerminalSession : public Session { + class TerminalSession : public TCPSession { public: - TerminalSession(EPoll &ePoll, Service &service); + TerminalSession(EPoll &ePoll, TCPServer &server); ~TerminalSession(); int getLines(); diff --git a/Thread.h b/Thread.h index 62e1c63..8c52613 100644 --- a/Thread.h +++ b/Thread.h @@ -4,7 +4,7 @@ #include "includes" #include "Log.h" #include "Object.h" -#include "Session.h" +#include "TCPSession.h" namespace core { diff --git a/UDPServerSocket.cpp b/UDPServerSocket.cpp index e8700c4..edc0a65 100644 --- a/UDPServerSocket.cpp +++ b/UDPServerSocket.cpp @@ -1,6 +1,6 @@ #include "UDPServerSocket.h" #include "EPoll.h" -#include "Session.h" +#include "TCPSession.h" namespace core { @@ -48,11 +48,11 @@ namespace core { int sequence = 0; - for(auto *session : sessions) { - data << "|" << ++sequence; - session->output(data); - data << "|" << std::endl; - } +// for(auto *session : sessions) { +// data << "|" << ++sequence; +// session->output(data); +// data << "|" << std::endl; +// } } diff --git a/UDPSocket.h b/UDPSocket.h index ba63129..64ce523 100644 --- a/UDPSocket.h +++ b/UDPSocket.h @@ -2,7 +2,6 @@ #define UDPSocket_h__ #include "Socket.h" -#include "Session.h" namespace core { diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html index b12660e..1625d6c 100644 --- a/docs/html/graph_legend.html +++ b/docs/html/graph_legend.html @@ -5,7 +5,7 @@ -BMA Server Framework: Graph Legend +My Project: Graph Legend @@ -21,7 +21,7 @@ -
BMA Server Framework +
My Project
diff --git a/docs/html/index.html b/docs/html/index.html index 22efb8c..04e75a5 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -5,7 +5,7 @@ -BMA Server Framework: Main Page +My Project: Main Page @@ -21,7 +21,7 @@ -
BMA Server Framework +
My Project
@@ -59,7 +59,7 @@ $(function() {
-
BMA Server Framework Documentation
+
My Project Documentation
diff --git a/docs/html/menudata.js b/docs/html/menudata.js index b18c38b..5860eec 100644 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -1,40 +1,2 @@ var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"e",url:"functions.html#index_e"}, -{text:"g",url:"functions.html#index_g"}, -{text:"i",url:"functions.html#index_i"}, -{text:"m",url:"functions.html#index_m"}, -{text:"o",url:"functions.html#index_o"}, -{text:"p",url:"functions.html#index_p"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"w",url:"functions.html#index_w"}, -{text:"~",url:"functions.html#index_0x7e"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"a",url:"functions_func.html#index_a"}, -{text:"c",url:"functions_func.html#index_c"}, -{text:"e",url:"functions_func.html#index_e"}, -{text:"g",url:"functions_func.html#index_g"}, -{text:"i",url:"functions_func.html#index_i"}, -{text:"o",url:"functions_func.html#index_o"}, -{text:"p",url:"functions_func.html#index_p"}, -{text:"r",url:"functions_func.html#index_r"}, -{text:"s",url:"functions_func.html#index_s"}, -{text:"t",url:"functions_func.html#index_t"}, -{text:"u",url:"functions_func.html#index_u"}, -{text:"w",url:"functions_func.html#index_w"}, -{text:"~",url:"functions_func.html#index_0x7e"}]}, -{text:"Variables",url:"functions_vars.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}]}]} +{text:"Main Page",url:"index.html"}]} diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js index 60dcb5b..f95870c 100644 --- a/docs/html/search/searchdata.js +++ b/docs/html/search/searchdata.js @@ -1,24 +1,12 @@ var indexSectionsWithContent = { - 0: "abcegimoprstuw~", - 1: "ceiostu", - 2: "acegioprstuw~", - 3: "bcmsw" }; var indexSectionNames = { - 0: "all", - 1: "classes", - 2: "functions", - 3: "variables" }; var indexSectionLabels = { - 0: "All", - 1: "Classes", - 2: "Functions", - 3: "Variables" }; diff --git a/docs/latex/refman.tex b/docs/latex/refman.tex index a8ce9bc..b0aa731 100644 --- a/docs/latex/refman.tex +++ b/docs/latex/refman.tex @@ -125,7 +125,7 @@ \begin{titlepage} \vspace*{7cm} \begin{center}% -{\Large B\+MA Server Framework }\\ +{\Large My Project }\\ \vspace*{1cm} {\large Generated by Doxygen 1.8.13}\\ \end{center} @@ -138,34 +138,6 @@ \hypersetup{pageanchor=true} %--- Begin generated contents --- -\chapter{Hierarchical Index} -\input{hierarchy} -\chapter{Class Index} -\input{annotated} -\chapter{Class Documentation} -\input{classcore_1_1_command} -\input{classcore_1_1_command_list} -\input{classcore_1_1_console_server} -\input{classcore_1_1_console_service} -\input{classcore_1_1_console_session} -\input{classcore_1_1_e_poll} -\input{classcore_1_1_i_p_address} -\input{classcore_1_1_i_p_address_list} -\input{classcore_1_1_object} -\input{classcore_1_1_service} -\input{classcore_1_1_session} -\input{classcore_1_1_session_filter} -\input{classcore_1_1_socket} -\input{classcore_1_1_t_c_p_server_socket} -\input{classcore_1_1_t_c_p_socket} -\input{classcore_1_1_terminal_session} -\input{classcore_1_1_thread} -\input{classcore_1_1_timer} -\input{classcore_1_1_t_l_s_server_socket} -\input{classcore_1_1_t_l_s_service} -\input{classcore_1_1_t_l_s_session} -\input{classcore_1_1_u_d_p_server_socket} -\input{classcore_1_1_u_d_p_socket} %--- End generated contents --- % Index diff --git a/html/_command_8h_source.html b/html/_command_8h_source.html new file mode 100644 index 0000000..66e47f2 --- /dev/null +++ b/html/_command_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: Command.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Command.h
+
+
+
1 #ifndef __Command_h__
2 #define __Command_h__
3 
4 #include "includes"
5 #include "Object.h"
6 #include "TCPSession.h"
7 
8 namespace core {
9 
10  class Session;
11 
18 
19  class Command : public Object {
20 
21  public:
22 
36 
37  virtual bool check(std::string request);
38 
49 
50  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
51 
57 
58  virtual void output(Session *session);
59 
68 
69  void setName(std::string name);
70 
71  std::string getName();
72 
73  private:
74  std::string name;
75 
76  };
77 
78 }
79 
80 #endif
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
void setName(std::string name)
Definition: Command.cpp:20
+
virtual bool check(std::string request)
Definition: Command.cpp:9
+
Definition: Object.h:8
+
Definition: Command.h:19
+
virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:5
+
virtual void output(Session *session)
Definition: Command.cpp:7
+
+ + + + diff --git a/html/_command_list_8h_source.html b/html/_command_list_8h_source.html new file mode 100644 index 0000000..8664fbe --- /dev/null +++ b/html/_command_list_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: CommandList.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
CommandList.h
+
+
+
1 #ifndef __CommandList_h__
2 #define __CommandList_h__
3 
4 #include "TCPSession.h"
5 #include "Command.h"
6 #include "Log.h"
7 
8 namespace core {
9 
17 
18  class CommandList : public Command {
19 
20  public:
21 
25 
26  void add(Command &command, std::string name = "");
27 
28  void remove(Command &command);
29 
30  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
31 
32  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
33 
34  protected:
35  std::vector<Command *> commands;
36 
37  };
38 
39 }
40 
41 #endif
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:24
+
Definition: Command.h:19
+
Definition: CommandList.h:18
+
void add(Command &command, std::string name="")
Definition: CommandList.cpp:5
+
+ + + + diff --git a/html/_console_server_8h_source.html b/html/_console_server_8h_source.html new file mode 100644 index 0000000..f73d86a --- /dev/null +++ b/html/_console_server_8h_source.html @@ -0,0 +1,80 @@ + + + + + + + +My Project: ConsoleServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleServer.h
+
+
+
1 #ifndef __ConsoleServer_h__
2 #define __ConsoleServer_h__
3 
4 #include "includes"
5 #include "TCPServer.h"
6 #include "Command.h"
7 #include "EPoll.h"
8 
9 namespace core {
10 
11  class TCPSocket;
12  class TCPSession;
13 
17 
18  class ConsoleServer : public TCPServer, coreutils::LogListener {
19 
20  public:
21 
22  //
23  //
24  //
25 
26  ConsoleServer(EPoll &ePoll, IPAddress address);
27 
28  //
29  //
30  //
31 
32  void logSend(std::string out) override;
33 
34  TCPSession * getSocketAccept(EPoll &ePoll) override;
35 
36  };
37 
38 }
39 
40 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
Definition: TCPServer.h:24
+
Definition: IPAddress.h:9
+
TCPSession * getSocketAccept(EPoll &ePoll) override
Definition: ConsoleServer.cpp:17
+
Definition: ConsoleServer.h:18
+
+ + + + diff --git a/html/_console_session_8h_source.html b/html/_console_session_8h_source.html new file mode 100644 index 0000000..c1c5ffb --- /dev/null +++ b/html/_console_session_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: ConsoleSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleSession.h
+
+
+
1 #ifndef __ConsoleSession_h__
2 #define __ConsoleSession_h__
3 
4 #include "TerminalSession.h"
5 #include "TCPSession.h"
6 #include "CommandList.h"
7 
8 namespace core {
9 
17 
19 
20  public:
21  ConsoleSession(EPoll &ePoll, TCPServer &server);
22  ~ConsoleSession();
23 
24  void writeLog(std::string data);
25 
26  protected:
27  void protocol(std::string data) override;
28 
29  private:
30  enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};
31  Status status = WELCOME;
32  void doCommand(std::string request);
33  std::string command;
34 
35  };
36 
37 }
38 
39 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: ConsoleSession.h:18
+
Definition: TCPServer.h:24
+
void protocol(std::string data) override
Definition: ConsoleSession.cpp:12
+
Definition: TerminalSession.h:30
+
+ + + + diff --git a/html/_e_poll_8h_source.html b/html/_e_poll_8h_source.html new file mode 100644 index 0000000..c73a5b1 --- /dev/null +++ b/html/_e_poll_8h_source.html @@ -0,0 +1,89 @@ + + + + + + + +My Project: EPoll.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
EPoll.h
+
+
+
1 #ifndef __EPoll_h__
2 #define __EPoll_h__
3 
4 #include "Log.h"
5 #include "Socket.h"
6 #include "Thread.h"
7 #include "TCPSession.h"
8 #include "Command.h"
9 
10 namespace core {
11 
30 
31  class EPoll : public Command {
32 
33  public:
34 
38 
39  EPoll();
40 
44 
45  ~EPoll();
46 
53 
54  bool start(int numberOfThreads, int maxSockets);
55 
61 
62  bool stop();
63 
68 
69  bool isStopping();
70 
79 
80  bool registerSocket(Socket *socket);
81 
85 
86  bool unregisterSocket(Socket *socket);
87 
91 
92  int getDescriptor();
93 
97 
98  int maxSockets;
99 
103 
104  void eventReceived(struct epoll_event event);
105 
112 
113  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
114 
115  private:
116 
117  int epfd;
118  int numberOfThreads;
119  std::map<int, Socket *> sockets;
120  std::vector<Thread> threads;
121  volatile bool terminateThreads;
122  std::mutex lock;
123 
124  };
125 
126 }
127 
128 #endif
129 
void eventReceived(struct epoll_event event)
Dispatch event to appropriate socket.
Definition: EPoll.cpp:97
+
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Output the threads array to the console.
Definition: EPoll.cpp:113
+
Definition: TCPSession.h:21
+
~EPoll()
Definition: EPoll.cpp:17
+
int getDescriptor()
Return the descriptor for the ePoll socket.
Definition: EPoll.cpp:109
+
bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:84
+
Definition: Socket.h:32
+
bool isStopping()
Returns a true if the stop command has been requested.
Definition: EPoll.cpp:67
+
EPoll()
Definition: EPoll.cpp:8
+
Definition: Command.h:19
+
bool registerSocket(Socket *socket)
Register a BMASocket for monitoring by BMAEPoll.
Definition: EPoll.cpp:71
+
int maxSockets
The maximum number of socket allowed.
Definition: EPoll.h:98
+
bool start(int numberOfThreads, int maxSockets)
Start the BMAEPoll processing.
Definition: EPoll.cpp:21
+
bool stop()
Stop and shut down the BMAEPoll processing.
Definition: EPoll.cpp:47
+
+ + + + diff --git a/html/_i_p_address_8h_source.html b/html/_i_p_address_8h_source.html new file mode 100644 index 0000000..c24f3bd --- /dev/null +++ b/html/_i_p_address_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: IPAddress.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
IPAddress.h
+
+
+
1 #ifndef __IPAddress_h__
2 #define __IPAddress_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class IPAddress : public Object {
10 
11  public:
12  IPAddress();
13  IPAddress(std::string address);
14  IPAddress(std::string address, int port);
15  ~IPAddress();
16 
17  struct sockaddr_in addr;
18  socklen_t addressLength;
19 
20  struct sockaddr * getPointer();
21  std::string getClientAddress();
22  std::string getClientAddressAndPort();
23  int getClientPort();
24 
25  };
26 
27 }
28 
29 #endif
int getClientPort()
Get the client network port number.
Definition: IPAddress.cpp:47
+
Definition: Command.cpp:3
+
std::string getClientAddressAndPort()
Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
Definition: IPAddress.cpp:40
+
Definition: IPAddress.h:9
+
std::string getClientAddress()
Get the client network address as xxx.xxx.xxx.xxx.
Definition: IPAddress.cpp:35
+
Definition: Object.h:8
+
+ + + + diff --git a/html/_i_p_address_list_8h_source.html b/html/_i_p_address_list_8h_source.html new file mode 100644 index 0000000..d8113a5 --- /dev/null +++ b/html/_i_p_address_list_8h_source.html @@ -0,0 +1,76 @@ + + + + + + + +My Project: IPAddressList.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
IPAddressList.h
+
+
+
1 #ifndef __IPAddressList_h__
2 #define __IPAddressList_h__
3 
4 #include "includes"
5 #include "IPAddress.h"
6 
7 namespace core {
8 
9  class IPAddressList {
10 
11  public:
12  IPAddressList();
13 
14  std::map<std::string, IPAddress> getList();
15  bool add(IPAddress ipAddress);
16  bool remove(IPAddress ipAddress);
17  bool contains(std::string ipAddress);
18 
19  private:
20  std::map<std::string, IPAddress> list;
21  std::map<std::string, IPAddress>::iterator it = list.begin();
22  };
23 
24 }
25 
26 #endif
Definition: Command.cpp:3
+
Definition: IPAddress.h:9
+
Definition: IPAddressList.h:9
+
+ + + + diff --git a/html/_object_8h_source.html b/html/_object_8h_source.html new file mode 100644 index 0000000..05d2bec --- /dev/null +++ b/html/_object_8h_source.html @@ -0,0 +1,75 @@ + + + + + + + +My Project: Object.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Object.h
+
+
+
1 #ifndef __Object_h__
2 #define __Object_h__
3 
4 #include "includes"
5 
6 namespace core {
7 
8  class Object {
9 
10  public:
11 
12  std::string name;
13  std::string tag;
14 
15  };
16 
17 }
18 
19 #endif
Definition: Command.cpp:3
+
Definition: Object.h:8
+
+ + + + diff --git a/html/_session_filter_8h_source.html b/html/_session_filter_8h_source.html new file mode 100644 index 0000000..9da0167 --- /dev/null +++ b/html/_session_filter_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: SessionFilter.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
SessionFilter.h
+
+
+
1 #ifndef __SessionFilter_h__
2 #define __SessionFilter_h__
3 
4 //#include "Session.h"
5 
6 namespace core {
7 
8  class TCPSession;
9 
10  class SessionFilter : public Object {
11 
12  public:
13  virtual bool test(TCPSession &session) {
14  return true;
15  }
16 
17  };
18 
19 }
20 
21 #endif
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
Definition: Object.h:8
+
Definition: SessionFilter.h:10
+
+ + + + diff --git a/html/_socket_8h_source.html b/html/_socket_8h_source.html new file mode 100644 index 0000000..d753caa --- /dev/null +++ b/html/_socket_8h_source.html @@ -0,0 +1,87 @@ + + + + + + + +My Project: Socket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Socket.h
+
+
+
1 #ifndef __Socket_h__
2 #define __Socket_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class EPoll;
10 
31 
32  class Socket : public std::streambuf,
33  public core::Object {
34 
35  public:
36 
37  Socket(EPoll &ePoll);
38  ~Socket();
39 
41 
42  void shutdown();
43 
44  void setDescriptor(int descriptor);
45 
46  int getDescriptor();
47 
48  class {
49  int value;
50 
51  public:
52  int & operator = (const int &i) { return value = i; }
53  operator int () const { return value; }
54 
55  } bufferSize;
56 
66 
67  void eventReceived(struct epoll_event event);
68 
72 
73  void write(std::string data);
74  void write(char *buffer, int length);
75 
76  void output(std::stringstream &out);
77 
82 
83  virtual void onRegistered();
84 
91 
92  virtual void onUnregistered();
93 
94  void enable(bool mode);
95 
96  protected:
97 
98  EPoll &ePoll; // The EPoll control object.
99 
100  bool shutDown = false;
101 
102  void setBufferSize(int length);
103 
109 
110  virtual void onConnected();
111 
112  virtual void onTLSInit();
113 
117 
118 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
119 
127 
128  virtual void onDataReceived(std::string data) = 0;
129 
134 
135  virtual void receiveData(char *buffer, int bufferLength);
136 
137  private:
138 
139  int descriptor = -1;
140  std::mutex lock;
141  bool readHangup = false;
142 
143  struct epoll_event event; // Event selection construction structure.
144 
145  //--------------------------------------------------
146  // These are used to schedule the socket activity.
147  //--------------------------------------------------
148 
149  void setRead();
150  void setWrite();
151  void setReadWrite();
152  void resetRead();
153  void resetWrite();;
154  void resetReadWrite();
155  void clear();
156 
157  //-------------------------------------------------------------------------------------
158  // the writeSocket is called when epoll has received a write request for a socket.
159  // Writing data to this socket is queued in the streambuf and permission is requested
160  // to write to the socket. This routine handles the writing of the streambuf data
161  // buffer to the socket.
162  //-------------------------------------------------------------------------------------
163 
164  void writeSocket();
165 
166  // int_type underflow();
167 // int_type uflow();
168 // int_type pbackfail(int_type ch);
169 // streamsize showmanyc();
170 
171  char *buffer; // This is a pointer to the managed buffer space.
172  int length; // This is the length of the buffer.
173 
174 // const char * const begin_;
175 // const char * const end_;
176 // const char * const current_;
177 
178  std::queue<std::string> fifo;
179 
180  bool active = false;
181 
182  };
183 
184 }
185 
186 #endif
187 
Definition: EPoll.h:31
+
virtual void receiveData(char *buffer, int bufferLength)
Definition: Socket.cpp:87
+
virtual void onUnregistered()
Called when the socket has finished unregistering for the epoll processing.
Definition: Socket.cpp:44
+
Definition: Command.cpp:3
+
void enable(bool mode)
Enable the socket to read or write based upon buffer.
Definition: Socket.cpp:71
+
virtual void onDataReceived(std::string data)=0
Called when data is received from the socket.
+
void setDescriptor(int descriptor)
Set the descriptor for the socket.
Definition: Socket.cpp:21
+
void write(std::string data)
Definition: Socket.cpp:132
+
Definition: Socket.h:32
+
void eventReceived(struct epoll_event event)
Parse epoll event and call specified callbacks.
Definition: Socket.cpp:48
+
int getDescriptor()
Get the descriptor for the socket.
Definition: Socket.cpp:29
+
virtual void onRegistered()
Called when the socket has finished registering with the epoll processing.
Definition: Socket.cpp:40
+
Definition: Object.h:8
+
virtual void onConnected()
Called when socket is open and ready to communicate.
Definition: Socket.cpp:119
+
+ + + + diff --git a/html/_t_c_p_server_8h_source.html b/html/_t_c_p_server_8h_source.html new file mode 100644 index 0000000..0b10b8e --- /dev/null +++ b/html/_t_c_p_server_8h_source.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: TCPServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPServer.h
+
+
+
1 #ifndef __TCPServer_h__
2 #define __TCPServer_h__
3 
4 #include "Socket.h"
5 #include "TCPSocket.h"
6 #include "IPAddressList.h"
7 #include "Command.h"
8 #include "CommandList.h"
9 
10 namespace core {
11 
23 
24  class TCPServer : public TCPSocket, public Command {
25 
26  public:
27 
37 
38  TCPServer(EPoll &ePoll, IPAddress address);
39 
43 
44  ~TCPServer();
45 
51 
58 
60 
61  void removeFromSessionList(TCPSession *session);
62 
63  virtual void sessionErrorHandler(std::string errorString);
64 
72 
73  virtual TCPSession * getSocketAccept(EPoll &epoll);
74 
75  void output(TCPSession *session);
76 
80 
81  std::vector<TCPSession *> sessions;
82 
87 
89 
90  protected:
91 
101 
102  void onDataReceived(std::string data) override;
103 
110 
111  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
112 
113  private:
114 
115  TCPSession * accept();
116 
117  };
118 
119 }
120 
121 #endif
Definition: EPoll.h:31
+
void onDataReceived(std::string data) override
Definition: TCPServer.cpp:24
+
virtual TCPSession * getSocketAccept(EPoll &epoll)
Definition: TCPServer.cpp:61
+
std::vector< TCPSession * > sessions
Definition: TCPServer.h:81
+
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
Definition: TCPServer.h:24
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Definition: TCPServer.cpp:69
+
Definition: IPAddress.h:9
+
IPAddressList * whiteList
Definition: TCPServer.h:59
+
~TCPServer()
Definition: TCPServer.cpp:20
+
Definition: Command.h:19
+
void output(TCPSession *session)
Output the consoles array to the console.
Definition: TCPServer.cpp:65
+
Definition: TCPSocket.h:20
+
Definition: CommandList.h:18
+
IPAddressList * blackList
Definition: TCPServer.h:52
+
TCPServer(EPoll &ePoll, IPAddress address)
Definition: TCPServer.cpp:9
+
Definition: IPAddressList.h:9
+
CommandList commands
Definition: TCPServer.h:88
+
+ + + + diff --git a/html/_t_c_p_session_8h_source.html b/html/_t_c_p_session_8h_source.html new file mode 100644 index 0000000..3e06036 --- /dev/null +++ b/html/_t_c_p_session_8h_source.html @@ -0,0 +1,85 @@ + + + + + + + +My Project: TCPSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPSession.h
+
+
+
1 #ifndef __Session_h__
2 #define __Session_h__
3 
4 #include "TCPSocket.h"
5 #include "SessionFilter.h"
6 
7 namespace core {
8 
9  class TCPServer;
10 
20 
21  class TCPSession : public TCPSocket {
22 
23  public:
24  TCPSession(EPoll &ePoll, TCPServer &server);
25  ~TCPSession();
26 
27  virtual void output(std::stringstream &data);
28 
33 
34  void send();
35 
40 
41  void sendToAll();
42 
48 
49  void sendToAll(SessionFilter filter);
50 
51  std::stringstream out;
52 
53  TCPServer &server;
54 
55  protected:
56 
57  void onDataReceived(std::string data) override;
58  void onConnected() override;
59 
66 
67  virtual void protocol(std::string data);
68 
69  };
70 
71 }
72 
73 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
Definition: TCPServer.h:24
+
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: TCPSession.cpp:29
+
void send()
Definition: TCPSession.cpp:51
+
void onConnected() override
Called when socket is open and ready to communicate.
Definition: TCPSession.cpp:25
+
virtual void protocol(std::string data)
Definition: TCPSession.cpp:17
+
Definition: TCPSocket.h:20
+
Definition: SessionFilter.h:10
+
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:13
+
void sendToAll()
Definition: TCPSession.cpp:33
+
+ + + + diff --git a/html/_t_c_p_socket_8h_source.html b/html/_t_c_p_socket_8h_source.html new file mode 100644 index 0000000..feb9950 --- /dev/null +++ b/html/_t_c_p_socket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: TCPSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPSocket.h
+
+
+
1 #ifndef __TCPSocket_h__
2 #define __TCPSocket_h__
3 
4 #include "includes"
5 #include "Socket.h"
6 #include "IPAddress.h"
7 
8 namespace core {
9 
19 
20  class TCPSocket : public Socket {
21 
22  public:
23 
24  TCPSocket(EPoll &ePoll);
25  ~TCPSocket();
26 
27  void connect(IPAddress &address);
28 
29  IPAddress ipAddress;
30 
37 
38  virtual void output(std::stringstream &out);
39 
40  };
41 
42 }
43 
44 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: Socket.h:32
+
Definition: IPAddress.h:9
+
Definition: TCPSocket.h:20
+
virtual void output(std::stringstream &out)
Definition: TCPSocket.cpp:19
+
+ + + + diff --git a/html/_t_l_s_server_8h_source.html b/html/_t_l_s_server_8h_source.html new file mode 100644 index 0000000..4dda053 --- /dev/null +++ b/html/_t_l_s_server_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: TLSServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TLSServer.h
+
+
+
1 #ifndef TLSServerSocket_h__
2 #define TLSServerSocket_h__
3 
4 #include "Socket.h"
5 #include "TCPServer.h"
6 #include "Command.h"
7 #include "TCPSession.h"
8 #include "IPAddress.h"
9 
10 namespace core {
11 
18 
19  class TLSServer : public TCPServer {
20 
21  public:
22 
31 
32  TLSServer(EPoll &ePoll, IPAddress address);
33 
37 
38  ~TLSServer();
39 
40  TCPSession * getSocketAccept();
41 
42  SSL_CTX *ctx;
43 
44  private:
45 
46  char *sip_cacert = (char *)"/home/barant/testkeys/certs/pbxca.crt";
47  char *sip_cert = (char *)"/home/barant/testkeys/certs/pbxserver.crt";
48  char *sip_key = (char *)"/home/barant/testkeys/certs/pbxserver.key";
49 
50  };
51 
52 }
53 
54 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
~TLSServer()
Definition: TLSServer.cpp:54
+
Definition: TCPSession.h:21
+
Definition: TCPServer.h:24
+
Definition: IPAddress.h:9
+
TLSServer(EPoll &ePoll, IPAddress address)
Definition: TLSServer.cpp:18
+
Definition: TLSServer.h:19
+
+ + + + diff --git a/html/_t_l_s_session_8h_source.html b/html/_t_l_s_session_8h_source.html new file mode 100644 index 0000000..e0f8235 --- /dev/null +++ b/html/_t_l_s_session_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: TLSSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TLSSession.h
+
+
+
1 #ifndef __TLSSession_h__
2 #define __TLSSession_h__
3 
4 #include "includes"
5 #include "TCPSession.h"
6 #include "TLSServer.h"
7 #include <openssl/ssl.h>
8 
9 namespace core {
10 
11  class TLSServer;
12 
22 
23  class TLSSession : public TCPSession {
24 
25  public:
26 
27  TLSSession(EPoll &ePoll, TCPServer &server);
28  ~TLSSession();
29 
36 
37  virtual void output(std::stringstream &out);
38  virtual void protocol(std::string data) override;
39 
40  protected:
41  void receiveData(char *buffer, int bufferLength) override;
42 
43  private:
44  bool initialized = false;
45  SSL *ssl;
46 
47  };
48 
49 }
50 
51 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
virtual void protocol(std::string data) override
Definition: TLSSession.cpp:81
+
Definition: TCPServer.h:24
+
void receiveData(char *buffer, int bufferLength) override
Definition: TLSSession.cpp:85
+
Definition: TLSSession.h:23
+
virtual void output(std::stringstream &out)
Definition: TLSSession.cpp:121
+
+ + + + diff --git a/html/_terminal_session_8h_source.html b/html/_terminal_session_8h_source.html new file mode 100644 index 0000000..9a443b8 --- /dev/null +++ b/html/_terminal_session_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +My Project: TerminalSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TerminalSession.h
+
+
+
1 #ifndef __Terminal_h__
2 #define __Terminal_h__
3 
4 #include "includes"
5 #include "TCPSession.h"
6 #include "TCPServer.h"
7 
8 namespace core {
9 
10  static const int FG_BLACK = 30;
11  static const int FG_RED = 31;
12  static const int FG_GREEN = 32;
13  static const int FG_YELLOW = 33;
14  static const int FG_BLUE = 34;
15  static const int FG_MAGENTA = 35;
16  static const int FG_CYAN = 36;
17  static const int FG_WHITE = 37;
18 
19  static const int BG_BLACK = 40;
20  static const int BG_RED = 41;
21  static const int BG_GREEN = 42;
22  static const int BG_YELLOW = 43;
23  static const int BG_BLUE = 44;
24  static const int BG_MAGENTA = 45;
25  static const int BG_CYAN = 46;
26  static const int BG_WHITE = 47;
27 
28  static const char esc = 0x1b;
29 
30  class TerminalSession : public TCPSession {
31 
32  public:
33  TerminalSession(EPoll &ePoll, TCPServer &server);
34  ~TerminalSession();
35 
36  int getLines();
37 
38  void clear();
39  void clearEOL();
40  void setCursorLocation(int x, int y);
41  void setColor(int color);
42  void setBackColor(int color);
43  void saveCursor();
44  void restoreCursor();
45  void NextLine(int lines);
46  void PreviousLine(int lines);
47  void scrollArea(int start, int end);
48 
49  };
50 
51 }
52 
53 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: TCPSession.h:21
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
+
+ + + + diff --git a/html/_thread_8h_source.html b/html/_thread_8h_source.html new file mode 100644 index 0000000..4b26377 --- /dev/null +++ b/html/_thread_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +My Project: Thread.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Thread.h
+
+
+
1 #ifndef __Thread_h__
2 #define __Thread_h__
3 
4 #include "includes"
5 #include "Log.h"
6 #include "Object.h"
7 #include "TCPSession.h"
8 
9 namespace core {
10 
11  class EPoll;
12 
20 
21  class Thread : public Object {
22 
23  public:
24  Thread(EPoll &ePoll);
25  ~Thread();
26 
30 
31  void start();
32  void join();
33  std::string getStatus();
34  pid_t getThreadId();
35  int getCount();
36  void output(std::stringstream &data);
37 
38  private:
39  EPoll &ePoll; // The EPoll control object.
40  std::string status;
41  int count;
42  std::thread *_thread;
43  void print_thread_start_log();
44  pid_t threadId;
45  void run();
46 
47  };
48 
49 }
50 
51 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: Thread.h:21
+
void start()
Definition: Thread.cpp:10
+
Definition: Object.h:8
+
+ + + + diff --git a/html/_timer_8h_source.html b/html/_timer_8h_source.html new file mode 100644 index 0000000..bcbc6a9 --- /dev/null +++ b/html/_timer_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: Timer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Timer.h
+
+
+
1 #ifndef __Timer_h__
2 #define __Timer_h__
3 
4 #include "Socket.h"
5 #include "EPoll.h"
6 
7 namespace core {
8 
17 
18  class Timer : Socket {
19 
20  public:
21  Timer(EPoll &ePoll);
22  Timer(EPoll &ePoll, double delay);
23  ~Timer();
24 
32 
33  void setTimer(double delay);
34 
38 
39  void clearTimer();
40 
45 
46  double getElapsed();
47 
48  double getEpoch();
49 
50  protected:
51 
55 
56  virtual void onTimeout() = 0;
57 
58  private:
59  void onDataReceived(std::string data) override;
60  double delayValue;
61 
62  };
63 
64 }
65 
66 #endif
Definition: EPoll.h:31
+
double getElapsed()
Definition: Timer.cpp:47
+
Definition: Command.cpp:3
+
virtual void onTimeout()=0
+
Definition: Timer.h:18
+
void setTimer(double delay)
Definition: Timer.cpp:14
+
Definition: Socket.h:32
+
void clearTimer()
Definition: Timer.cpp:34
+
+ + + + diff --git a/html/_u_d_p_server_socket_8h_source.html b/html/_u_d_p_server_socket_8h_source.html new file mode 100644 index 0000000..05ddca1 --- /dev/null +++ b/html/_u_d_p_server_socket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: UDPServerSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
UDPServerSocket.h
+
+
+
1 #ifndef __UDPServerSocket_h__
2 #define __UDPServerSocket_h__
3 
4 #include "Socket.h"
5 #include "UDPSocket.h"
6 #include "Command.h"
7 
8 namespace core {
9 
16 
17  class UDPServerSocket : public UDPSocket, public Command {
18 
19  public:
20 
21  UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName);
22  ~UDPServerSocket();
23 
24  protected:
25 
26  //---------------------------------------------------------------
27  // Override the virtual dataReceived since for the server these
28  // are requests to accept the new connection socket.
29  //---------------------------------------------------------------
30 
31  void onDataReceived(std::string data) override;
32 
33  int processCommand(std::string request, std::stringstream &data);
34 
35  //------------------------------------------------------------------------------------
36  // The retrieved socket connections are placed into the client vector list.
37  //------------------------------------------------------------------------------------
38 
39  std::vector<Session *> sessions;
40 
41  private:
42 
43 
44  };
45 
46 }
47 
48 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: UDPSocket.h:8
+
Definition: UDPServerSocket.h:17
+
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
+
Definition: Command.h:19
+
+ + + + diff --git a/html/_u_d_p_socket_8h_source.html b/html/_u_d_p_socket_8h_source.html new file mode 100644 index 0000000..be02b70 --- /dev/null +++ b/html/_u_d_p_socket_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: UDPSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
UDPSocket.h
+
+
+
1 #ifndef UDPSocket_h__
2 #define UDPSocket_h__
3 
4 #include "Socket.h"
5 
6 namespace core {
7 
8  class UDPSocket : public Socket {
9 
10  public:
11  UDPSocket(EPoll &ePoll);
12  ~UDPSocket();
13 
14 // virtual int open(string address, short int port);
15 // virtual void write(istream data);
16 
17 };
18 
19 }
20 
21 #endif
Definition: EPoll.h:31
+
Definition: Command.cpp:3
+
Definition: UDPSocket.h:8
+
Definition: Socket.h:32
+
+ + + + diff --git a/html/annotated.html b/html/annotated.html new file mode 100644 index 0000000..e956aa0 --- /dev/null +++ b/html/annotated.html @@ -0,0 +1,98 @@ + + + + + + + +My Project: Class List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + +
 Ncore
 CCommand
 CCommandList
 CConsoleServer
 CConsoleSession
 CEPoll
 CIPAddress
 CIPAddressList
 CObject
 CSessionFilter
 CSocket
 CTCPServer
 CTCPSession
 CTCPSocket
 CTerminalSession
 CThread
 CTimer
 CTLSServer
 CTLSSession
 CUDPServerSocket
 CUDPSocket
+
+
+ + + + diff --git a/html/bc_s.png b/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/html/bdwn.png b/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Command Member List
+
+
+ +

This is the complete list of members for core::Command, including all inherited members.

+ + + + + + + +
check(std::string request)core::Commandvirtual
getName() (defined in core::Command)core::Command
output(Session *session)core::Commandvirtual
processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
setName(std::string name)core::Command
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1_command.html b/html/classcore_1_1_command.html new file mode 100644 index 0000000..a166e37 --- /dev/null +++ b/html/classcore_1_1_command.html @@ -0,0 +1,283 @@ + + + + + + + +My Project: core::Command Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Command Class Reference
+
+
+ +

#include <Command.h>

+
+Inheritance diagram for core::Command:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for core::Command:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + +

+Public Member Functions

virtual bool check (std::string request)
 
virtual int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

Command

+

Use the Command object in combination with a CommandList object to maintain a list of functions that can be invoked as a result of processing a request.

+

Member Function Documentation

+ +

◆ check()

+ +
+
+ + + + + +
+ + + + + + + + +
bool core::Command::check (std::string request)
+
+virtual
+
+

Implement check method to provide a special check rule upon the request to see if the command should be processed.

+

The default rule is to verify that the first token in the request string matches the name given on the registration of the command to the CommandList. This can be overridden by implementing the check() method to perform the test and return the condition of the command.

+
Parameters
+ + +
requestThe request passed to the parser to check the rule.
+
+
+
Returns
Return true to execute the command. Returning false will cause no action on this command.
+ +
+
+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::Command::output (Session * session)
+
+virtual
+
+

Specify the output that will occur to the specified session.

+
Parameters
+ + +
sessionThe session that will receive the output.
+
+
+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::Command::processCommand (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+virtual
+
+

This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object.

+
Parameters
+ + + +
requestThe request that was entered by the user to invoke this command.
sessionSpecify the requesting session so that the execution of the command process can return its output to the session.
+
+
+
Returns
Returns 0 if execution of the command was successful. Otherwise returns a non-zero value indicating an error condition.
+ +

Reimplemented in core::EPoll, core::TCPServer, and core::CommandList.

+ +
+
+ +

◆ setName()

+ +
+
+ + + + + + + + +
void core::Command::setName (std::string name)
+
+

Set the name of this command used in default rule checking during request parsing. NOTE: You do not need to call this under normal conditions as adding a Command to a CommandList using the add() method contains a parameter to pass the name of the Command.

+
Parameters
+ + +
nameSpecify the name of this command for default parsing.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_command__coll__graph.map b/html/classcore_1_1_command__coll__graph.map new file mode 100644 index 0000000..8d43cd0 --- /dev/null +++ b/html/classcore_1_1_command__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_command__coll__graph.md5 b/html/classcore_1_1_command__coll__graph.md5 new file mode 100644 index 0000000..4956832 --- /dev/null +++ b/html/classcore_1_1_command__coll__graph.md5 @@ -0,0 +1 @@ +fb20e2e2818e0deb25bd92d98bab297f \ No newline at end of file diff --git a/html/classcore_1_1_command__coll__graph.png b/html/classcore_1_1_command__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d4d947ac282331fbc07fef79efe1ae1e40671c GIT binary patch literal 3394 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 F{{;CBslEUJ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_command__inherit__graph.map b/html/classcore_1_1_command__inherit__graph.map new file mode 100644 index 0000000..1638fe1 --- /dev/null +++ b/html/classcore_1_1_command__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/html/classcore_1_1_command__inherit__graph.md5 b/html/classcore_1_1_command__inherit__graph.md5 new file mode 100644 index 0000000..54bfea5 --- /dev/null +++ b/html/classcore_1_1_command__inherit__graph.md5 @@ -0,0 +1 @@ +0a00db25409a71f7d1cd846d121e26a0 \ No newline at end of file diff --git a/html/classcore_1_1_command__inherit__graph.png b/html/classcore_1_1_command__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1fceae9a44e087141f2e8e9112d574524f562267 GIT binary patch literal 15326 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_command_list-members.html b/html/classcore_1_1_command_list-members.html new file mode 100644 index 0000000..d8903a6 --- /dev/null +++ b/html/classcore_1_1_command_list-members.html @@ -0,0 +1,90 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::CommandList Member List
+
+
+ +

This is the complete list of members for core::CommandList, including all inherited members.

+ + + + + + + + + + + +
add(Command &command, std::string name="")core::CommandList
check(std::string request)core::Commandvirtual
commands (defined in core::CommandList)core::CommandListprotected
getName() (defined in core::Command)core::Command
output(Session *session)core::Commandvirtual
processCommand(std::string request, TCPSession *session, std::stringstream &data)core::CommandListvirtual
processRequest(std::string request, TCPSession *session, std::stringstream &data) (defined in core::CommandList)core::CommandList
remove(Command &command) (defined in core::CommandList)core::CommandList
setName(std::string name)core::Command
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1_command_list.html b/html/classcore_1_1_command_list.html new file mode 100644 index 0000000..724393a --- /dev/null +++ b/html/classcore_1_1_command_list.html @@ -0,0 +1,231 @@ + + + + + + + +My Project: core::CommandList Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::CommandList Class Reference
+
+
+ +

#include <CommandList.h>

+
+Inheritance diagram for core::CommandList:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::CommandList:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void add (Command &command, std::string name="")
 
+void remove (Command &command)
 
+bool processRequest (std::string request, TCPSession *session, std::stringstream &data)
 
int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + +

+Protected Attributes

+std::vector< Command * > commands
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

CommandList

+

This object organizes Command objects into a list that is used to parse an input and run the process associated with the selected command.

+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void core::CommandList::add (Commandcommand,
std::string name = "" 
)
+
+

Add a new command to the command list and assign a default search value.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::CommandList::processCommand (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+virtual
+
+

This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object.

+
Parameters
+ + + +
requestThe request that was entered by the user to invoke this command.
sessionSpecify the requesting session so that the execution of the command process can return its output to the session.
+
+
+
Returns
Returns 0 if execution of the command was successful. Otherwise returns a non-zero value indicating an error condition.
+ +

Reimplemented from core::Command.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_command_list__coll__graph.map b/html/classcore_1_1_command_list__coll__graph.map new file mode 100644 index 0000000..b644a8c --- /dev/null +++ b/html/classcore_1_1_command_list__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1_command_list__coll__graph.md5 b/html/classcore_1_1_command_list__coll__graph.md5 new file mode 100644 index 0000000..ae6b44f --- /dev/null +++ b/html/classcore_1_1_command_list__coll__graph.md5 @@ -0,0 +1 @@ +9537f0ac08146b53ecb7539fe3757032 \ No newline at end of file diff --git a/html/classcore_1_1_command_list__coll__graph.png b/html/classcore_1_1_command_list__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b008d2735e08fc7d3f75408312b80cc8cbeb2eb4 GIT binary patch literal 6222 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_command_list__inherit__graph.map b/html/classcore_1_1_command_list__inherit__graph.map new file mode 100644 index 0000000..b644a8c --- /dev/null +++ b/html/classcore_1_1_command_list__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1_command_list__inherit__graph.md5 b/html/classcore_1_1_command_list__inherit__graph.md5 new file mode 100644 index 0000000..2284409 --- /dev/null +++ b/html/classcore_1_1_command_list__inherit__graph.md5 @@ -0,0 +1 @@ +a7a4026a028979ef6450e0516b274bd5 \ No newline at end of file diff --git a/html/classcore_1_1_command_list__inherit__graph.png b/html/classcore_1_1_command_list__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b008d2735e08fc7d3f75408312b80cc8cbeb2eb4 GIT binary patch literal 6222 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_console_server-members.html b/html/classcore_1_1_console_server-members.html new file mode 100644 index 0000000..8eafe53 --- /dev/null +++ b/html/classcore_1_1_console_server-members.html @@ -0,0 +1,124 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::ConsoleServer Member List
+
+
+ +

This is the complete list of members for core::ConsoleServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleServer(EPoll &ePoll, IPAddress address) (defined in core::ConsoleServer)core::ConsoleServer
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept(EPoll &ePoll) overridecore::ConsoleServervirtual
ipAddress (defined in core::TCPSocket)core::TCPSocket
logSend(std::string out) override (defined in core::ConsoleServer)core::ConsoleServer
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address)core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1_console_server.html b/html/classcore_1_1_console_server.html new file mode 100644 index 0000000..40a0538 --- /dev/null +++ b/html/classcore_1_1_console_server.html @@ -0,0 +1,276 @@ + + + + + + + +My Project: core::ConsoleServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::ConsoleServer Class Reference
+
+
+
+Inheritance diagram for core::ConsoleServer:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for core::ConsoleServer:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConsoleServer (EPoll &ePoll, IPAddress address)
 
+void logSend (std::string out) override
 
TCPSessiongetSocketAccept (EPoll &ePoll) override
 
- Public Member Functions inherited from core::TCPServer
 TCPServer (EPoll &ePoll, IPAddress address)
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPServer
IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::TCPServer
void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Member Function Documentation

+ +

◆ getSocketAccept()

+ +
+
+ + + + + +
+ + + + + + + + +
TCPSession * core::ConsoleServer::getSocketAccept (EPollepoll)
+
+overridevirtual
+
+

getSocketAccept is designed to allow a polymorphic extension of this object to return a type of object that extends the definition of the server socket. Returning the appropriate session object that extends from Session provides the mechanism where the server can select the protocol dialog for the desired service.

+ +

Reimplemented from core::TCPServer.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_console_server__coll__graph.map b/html/classcore_1_1_console_server__coll__graph.map new file mode 100644 index 0000000..7ddfa51 --- /dev/null +++ b/html/classcore_1_1_console_server__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1_console_server__coll__graph.md5 b/html/classcore_1_1_console_server__coll__graph.md5 new file mode 100644 index 0000000..3d42476 --- /dev/null +++ b/html/classcore_1_1_console_server__coll__graph.md5 @@ -0,0 +1 @@ +fdc736b549b2aef461468fd336e73258 \ No newline at end of file diff --git a/html/classcore_1_1_console_server__coll__graph.png b/html/classcore_1_1_console_server__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bad5147b6078dbc76ddaa65aa866f4aae2e1166a GIT binary patch literal 52559 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⪼tiMR7mhidA$la;lGY))-}KNPdk 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 OOI$=oxL8ov=f43*p;}@9 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_console_server__inherit__graph.map b/html/classcore_1_1_console_server__inherit__graph.map new file mode 100644 index 0000000..ee002f5 --- /dev/null +++ b/html/classcore_1_1_console_server__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1_console_server__inherit__graph.md5 b/html/classcore_1_1_console_server__inherit__graph.md5 new file mode 100644 index 0000000..6fd8087 --- /dev/null +++ b/html/classcore_1_1_console_server__inherit__graph.md5 @@ -0,0 +1 @@ +68e9852b297c0c906ba5c10dc836f528 \ No newline at end of file diff --git a/html/classcore_1_1_console_server__inherit__graph.png b/html/classcore_1_1_console_server__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..448412e890cc00a9fe402fdbc2f6fc67cfa72c6f GIT binary patch literal 17710 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 ZlMd=1dV9SMcmxRpgQu&X%Q~loCIHEiW?KLN literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_console_session-members.html b/html/classcore_1_1_console_session-members.html new file mode 100644 index 0000000..86b0cbe --- /dev/null +++ b/html/classcore_1_1_console_session-members.html @@ -0,0 +1,130 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::ConsoleSession Member List
+
+
+ +

This is the complete list of members for core::ConsoleSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
clear() (defined in core::TerminalSession)core::TerminalSession
clearEOL() (defined in core::TerminalSession)core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onConnected() overridecore::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
out (defined in core::TCPSession)core::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::string data) overridecore::ConsoleSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
restoreCursor() (defined in core::TerminalSession)core::TerminalSession
saveCursor() (defined in core::TerminalSession)core::TerminalSession
scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown() (defined in core::Socket)core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
writeLog(std::string data) (defined in core::ConsoleSession)core::ConsoleSession
~ConsoleSession() (defined in core::ConsoleSession)core::ConsoleSession
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
+ + + + diff --git a/html/classcore_1_1_console_session.html b/html/classcore_1_1_console_session.html new file mode 100644 index 0000000..fb414c5 --- /dev/null +++ b/html/classcore_1_1_console_session.html @@ -0,0 +1,306 @@ + + + + + + + +My Project: core::ConsoleSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::ConsoleSession Class Reference
+
+
+ +

#include <ConsoleSession.h>

+
+Inheritance diagram for core::ConsoleSession:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for core::ConsoleSession:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConsoleSession (EPoll &ePoll, TCPServer &server)
 
+void writeLog (std::string data)
 
- Public Member Functions inherited from core::TerminalSession
TerminalSession (EPoll &ePoll, TCPServer &server)
 
+int getLines ()
 
+void clear ()
 
+void clearEOL ()
 
+void setCursorLocation (int x, int y)
 
+void setColor (int color)
 
+void setBackColor (int color)
 
+void saveCursor ()
 
+void restoreCursor ()
 
+void NextLine (int lines)
 
+void PreviousLine (int lines)
 
+void scrollArea (int start, int end)
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

void protocol (std::string data) override
 
- Protected Member Functions inherited from core::TCPSession
void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
void onConnected () override
 Called when socket is open and ready to communicate. More...
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

ConsoleSession

+

Extends the session parameters for this TCPSocket derived object. Extend the protocol() method in order to define the behavior and protocol interaction for this socket which is a console session.

+

Member Function Documentation

+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::ConsoleSession::protocol (std::string data = "")
+
+overrideprotectedvirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented from core::TCPSession.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_console_session__coll__graph.map b/html/classcore_1_1_console_session__coll__graph.map new file mode 100644 index 0000000..9f30d80 --- /dev/null +++ b/html/classcore_1_1_console_session__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/html/classcore_1_1_console_session__coll__graph.md5 b/html/classcore_1_1_console_session__coll__graph.md5 new file mode 100644 index 0000000..dba342b --- /dev/null +++ b/html/classcore_1_1_console_session__coll__graph.md5 @@ -0,0 +1 @@ +3c5c72aea2099bf3e4553e3492282805 \ No newline at end of file diff --git a/html/classcore_1_1_console_session__coll__graph.png b/html/classcore_1_1_console_session__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..42cd9da34656c1e81fc81e6712f3d372e76afafe GIT binary patch literal 59171 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 + + + + + + diff --git a/html/classcore_1_1_console_session__inherit__graph.md5 b/html/classcore_1_1_console_session__inherit__graph.md5 new file mode 100644 index 0000000..33b0b74 --- /dev/null +++ b/html/classcore_1_1_console_session__inherit__graph.md5 @@ -0,0 +1 @@ +bae5e50f8aec677a0e3a9c7376aecb91 \ No newline at end of file diff --git a/html/classcore_1_1_console_session__inherit__graph.png b/html/classcore_1_1_console_session__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..19727c16fd650546ec7b17119612d314934fb443 GIT binary patch literal 15873 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_e_poll-members.html b/html/classcore_1_1_e_poll-members.html new file mode 100644 index 0000000..1a2562f --- /dev/null +++ b/html/classcore_1_1_e_poll-members.html @@ -0,0 +1,96 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::EPoll Member List
+
+
+ +

This is the complete list of members for core::EPoll, including all inherited members.

+ + + + + + + + + + + + + + + + + +
check(std::string request)core::Commandvirtual
EPoll()core::EPoll
eventReceived(struct epoll_event event)core::EPoll
getDescriptor()core::EPoll
getName() (defined in core::Command)core::Command
isStopping()core::EPoll
maxSocketscore::EPoll
output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::EPollvirtual
registerSocket(Socket *socket)core::EPoll
setName(std::string name)core::Command
start(int numberOfThreads, int maxSockets)core::EPoll
stop()core::EPoll
tag (defined in core::Object)core::Object
unregisterSocket(Socket *socket)core::EPoll
~EPoll()core::EPoll
+ + + + diff --git a/html/classcore_1_1_e_poll.html b/html/classcore_1_1_e_poll.html new file mode 100644 index 0000000..0d4f07a --- /dev/null +++ b/html/classcore_1_1_e_poll.html @@ -0,0 +1,457 @@ + + + + + + + +My Project: core::EPoll Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::EPoll Class Reference
+
+
+ +

#include <EPoll.h>

+
+Inheritance diagram for core::EPoll:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::EPoll:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EPoll ()
 
 ~EPoll ()
 
bool start (int numberOfThreads, int maxSockets)
 Start the BMAEPoll processing. More...
 
bool stop ()
 Stop and shut down the BMAEPoll processing. More...
 
bool isStopping ()
 Returns a true if the stop command has been requested. More...
 
bool registerSocket (Socket *socket)
 Register a BMASocket for monitoring by BMAEPoll. More...
 
bool unregisterSocket (Socket *socket)
 Unregister a BMASocket from monitoring by BMAEPoll. More...
 
int getDescriptor ()
 Return the descriptor for the ePoll socket. More...
 
void eventReceived (struct epoll_event event)
 Dispatch event to appropriate socket. More...
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 Output the threads array to the console. More...
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + +

+Public Attributes

int maxSockets
 The maximum number of socket allowed. More...
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

EPoll

+

Manage socket events from the epoll system call.

+

Use this object to establish a socket server using the epoll network structure of Linux.

+

Use this object to establish the basis of working with multiple sockets of all sorts using the epoll capabilities of the Linux platform. Socket objects can register with BMAEPoll which will establish a communication mechanism with that socket.

+

The maximum number of sockets to communicate with is specified on the start method.

+

Threads are used to establish a read queue for epoll. The desired number of threads (or queues) is established by a parameter on the start method.

+

Constructor & Destructor Documentation

+ +

◆ EPoll()

+ +
+
+ + + + + + + +
core::EPoll::EPoll ()
+
+

The constructor for the BMAEPoll object.

+ +
+
+ +

◆ ~EPoll()

+ +
+
+ + + + + + + +
core::EPoll::~EPoll ()
+
+

The destructor for the BMAEPoll object.

+ +
+
+

Member Function Documentation

+ +

◆ eventReceived()

+ +
+
+ + + + + + + + +
void core::EPoll::eventReceived (struct epoll_event event)
+
+ +

Dispatch event to appropriate socket.

+

Receive the epoll events and dispatch the event to the socket making the request.

+ +
+
+ +

◆ getDescriptor()

+ +
+
+ + + + + + + +
int core::EPoll::getDescriptor ()
+
+ +

Return the descriptor for the ePoll socket.

+

Use this method to obtain the current descriptor socket number for the epoll function call.

+ +
+
+ +

◆ isStopping()

+ +
+
+ + + + + + + +
bool core::EPoll::isStopping ()
+
+ +

Returns a true if the stop command has been requested.

+

This method returns a true if the stop() method has been called and the epoll system is shutting.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::EPoll::processCommand (std::string command,
TCPSessionsession,
std::stringstream & data 
)
+
+overridevirtual
+
+ +

Output the threads array to the console.

+

The processCommand() method displays the thread array to the requesting console via the session passed as parameter.

+
Parameters
+ + +
sessionthe session to write the requested data to.
+
+
+ +

Reimplemented from core::Command.

+ +
+
+ +

◆ registerSocket()

+ +
+
+ + + + + + + + +
bool core::EPoll::registerSocket (Socketsocket)
+
+ +

Register a BMASocket for monitoring by BMAEPoll.

+

Use registerSocket to add a new socket to the ePoll event watch list. This enables a new BMASocket object to receive events when data is received as well as to write data output to the socket.

+
Parameters
+ + +
socketa pointer to a BMASocket object.
+
+
+
Returns
a booelean that indicates the socket was registered or not.
+
Parameters
+ + +
socketThe Socket to register.
+
+
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool core::EPoll::start (int numberOfThreads,
int maxSockets 
)
+
+ +

Start the BMAEPoll processing.

+

Use the start() method to initiate the threads and begin epoll queue processing.

+
Parameters
+ + + +
numberOfThreadsthe number of threads to start for processing epoll entries.
maxSocketsthe maximum number of open sockets that epoll will manage.
+
+
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
bool core::EPoll::stop ()
+
+ +

Stop and shut down the BMAEPoll processing.

+

Use the stop() method to initiate the shutdown process for the epoll socket management.

+

A complete shutdown of all managed sockets will be initiated by this method call.

+ +
+
+ +

◆ unregisterSocket()

+ +
+
+ + + + + + + + +
bool core::EPoll::unregisterSocket (Socketsocket)
+
+ +

Unregister a BMASocket from monitoring by BMAEPoll.

+

Use this method to remove a socket from receiving events from the epoll system.

+
Parameters
+ + +
socketThe Socket to unregister.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ maxSockets

+ +
+
+ + + + +
int core::EPoll::maxSockets
+
+ +

The maximum number of socket allowed.

+

The maximum number of sockets that can be managed by the epoll system.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_e_poll__coll__graph.map b/html/classcore_1_1_e_poll__coll__graph.map new file mode 100644 index 0000000..f8fa3a7 --- /dev/null +++ b/html/classcore_1_1_e_poll__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1_e_poll__coll__graph.md5 b/html/classcore_1_1_e_poll__coll__graph.md5 new file mode 100644 index 0000000..9a32398 --- /dev/null +++ b/html/classcore_1_1_e_poll__coll__graph.md5 @@ -0,0 +1 @@ +c75340d7c5a82ba0c2ab4d100006cfa2 \ No newline at end of file diff --git a/html/classcore_1_1_e_poll__coll__graph.png b/html/classcore_1_1_e_poll__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1af8f754732fd251c507966802f4c4494a78c179 GIT binary patch literal 5244 zcmcIobx;)C*Iv3C=>--9q(kXY*`+%qge6rLgqQ9TX(Xk)JC^Q{kj|x)kdCE6mqtF` z_`UOeGvB|zxpC&qoVoYRoipcoo*S;Iu0VuOhYtV%h?Eo|+7H(EVYT66KkSNvagh%O z+d@SF0=WNk&+`qVs5v)%M0DGw87@&fGtG z->0A;Or5uDQkcqxXZ92CXX3JAV?S&R#L(+t?SO{H#^hXF>a|>HTnjM1d_cp9T-X;Q zQP9<;M9090Dhq5v68026#Z4Y(HkJsi=7welW}3DWWp_fS##^OZQK;_A33nC+s37!F z6u=XZ_sVs2akBm$ARVC+U+r;O=V8^v5D`r8Ackc2!}BIOTfUF^-Am0{S|4{+Xp&Oz zLf#&EwW84Q=-ADh+6e2LW90AT%B$SoV5W~J4Spig2Lu7>a$jN8?u2wAn7~l!nAH8s1t7!6h%25aIP*w?E(^F-ZL=Sd{841x$52kXL8EIn z)D;;P&Ieh&B{?F1_w^7l1z|J$|2%Fk!2k#giK>4ks5%5S?V}x&h%%#0fT;Q8!cNpH zyWWDMcv5!`;`mmLYpX_Aa4gvqN__1nlxlq0tsbPVjGbZUrla{Pc>6HKwBF3l&$PajZLr)XR?l$_(5sfuw?++xRjgnb_?ENPNndTJ(MNQg}Sj!2#ZsxohjZGI174$Z{mg&1X|SYuW>6XO~x( zsOK0;cUa3sSC!dbWesg^3dKj4(&J5qxwN)K`vBP|8y6p9U5Yj0k9V{<{A7=yfk+1> zVRO`5E05tYTY^_rSBqMG5BZ7ZfC_e3GeQ_3F}- zYBo>y7f^nTsh{XumlmSvXOp!|lcaCJtsG}QE z#l!8du8r*XYP`PUlWy{lo{8abl< zx!DzZa<#ubxT|SKKK3|XYNMTLyPIpRzPRL*B#;K|){=IC7!4B_+xn|9rHgz+4fEh9 zh-zAcj-Qwap=k%7ftZxjGfkgdqW;1f&pzVD_snGvo}i~^=Y{mV=JlXy z5jTi$0BfA3c82pMXfGd{T1&_U)9iWGs!`KPIkK@W&(Rmn@|n)xmf0?JIxuu>ZmHVw z+6@lfd3v$h5)`gf%1m_a?xSA*%6so!TeJU?e?n9Hogol4n_QTSn$5~TRuGS0a+95I zVoEJiqb9q%D>lEoyF;V72==RkJT#=6CzzWGFQ*KgEiAaYUJJ|8=euu4%Eo+-Bs8WN zNjuEs<+}q-W&TE&VHL?m%`^!%pO0m}lXYG;!~!F@De?4WgQLwUZx#R3PtEnbtV>Bv zZDi7PnUp6I+0asxAWBPDa&^^d1yH8mV)0PpjR-sQHjUr2dY zGj%T|CGqn^NgTi=%;j6hP2`vGQ4(i_`+*oy=J*L^kmBQ>?J*^E4x#6xO8Q*!%;ez! zfL8~jLUciX$!^t`(oq5(#HWa(^}g`YGS=k}xQk8qYzFKgGv(_fUQPf+xSxzHFaMsB zJ@$nFo3zBW2I;JilQx{ApkQ-#IME_NJC*5OftA(D7v!{lE_}nFEyoRbMY<+-?vS@`u>S z8*jXRUY;T?3n~ao;{5t_KU!2WQJaOApH2LaR1kV;_lvj3|l*+c^Xqq z2OKvy;Q{GC1g?1L0b&y4FCcx34^PeOLRr__hs@NW_#5cf5VS%6qTYYQiCf_R06&;J zb-Xutea==|AGIp}8>sVy!&6D-t9171KwzMw|E>{W_^D~i)ZDK2 zpW=B)YqRFFdXskbbuZcOj!n#*-r?GTFddUZ(RvNC0{l0AMje>#)x@bcZIGSa;szzh z$bJg}i>1892*L!EF)l_inB~gTUtY z?YF*!GEBm>(J^Cue=zjhW4jVJ`b*GtWG=k;(T&jy&WqJDvGX#NU;&5pE>B^L0Hscp z6)6!TnvP{>17(>6s~hV9v8;4pXm0-6cP--b#wrg^80&cQs~Me}89iTvkOHN|n z<|=e|%i-?sL^dWR!FJBji+(5JslAfM4;mN`j!6e@o}19zul&@+_|Qo+^js}i1FjC6 zZUwfU1EX4u_*jDiYrSdcC3_CAP_EPV$@@W zV}S)vQ1;oh`;@G`!dXVPY?%|=Rg;YhR3T(C;S)_BxBLA;Dl1LZn|t4yt+?~0@^CX$ z)w(M(pAX1BZIYP8SH+-yUWNaW4&tE%9bSzpnx8$ctg(G4X z@7ZFd=$K?-DNSzi`X=n!^H?s>1x1#2gm?hw8Qrlwaa!ex=8(xLa<(fYRPMxtb@^V} z>~y-`=5E<=(s8P)I^R=dN^2a$mgBP@e$OiHRlO`dD-1pimz=q_Yvp)Fr{@OpJ)tOpQIkch2vtg!Q zPf}WCtlM2S)Q_)yj5~gi@nv%J6G8q$ZGQIvOu(E9wrP~hu?yQ)oh|*B`F;1Cf`&njCN&dqvYB8R52uWui*Ls|Pb(oaNC zvfV1sMJxTaS7TWXA8+$E4G-{VDKzmo26Nc@SfM8! z$$VPsdEe|HfF565DW`5})xmDI`P&W+E*@vF&KP4I*w$aR{UP|N!|;WC=u;pD55{t7sf z%FD|mrJ=#Ks7sC+!1wp}2ax!E9k$mO_($$!G3RZr+B$n&;J|?ZhctIN z?#?(A>qV^c*Kf631(R{3#Lfs&d-V|2cLsKqdZB9R>bMz$w-1r*?6h=IYeFG|4x7b= zPztd`Pjlt#)Tb@YK35W&hnya%svp07qg<241Lz)RLykXIqAQ51N z!a1HKDruH8`3zQ6pAdhJuN!4jW=@IoTkm6|e3UpNuErj}da?4oCBjPH%hneEjgV62 z^fNl3g~jKb*|gQt-gf{Bgz$rJsgpA`-0?Rj-~(UtCLYw0#z*SfTXzGhSAH zX?AOC-|x1R14a1emjH~Ss?VNOJO*ZnYmfB51oq$M7Bc($Ad>7~wWlHx`d*T!h) zPj+VV6{m@0@82~(3VuJ`5G>ZYz2YJIg`_hgJO$`S+A^zAS7ywBn;nH0p+!@e5*E`# z!lIAWi$u7it*hTs*A1vaF0CtbtFrH-F3^2X{r&7gn{9W4r9Q~IZPFf}UI#^;iIWw% z#~}vrz^XI0a@3YDCYfR@@%Jf$n%j?(MSP~8n5a9^ZZ_ekhPqUQ@bB|1mK(CSu~*NE zc#L9DBSl|We|q!W@?yLOOlI^IebXk)zT&)v2H0*{g$?>rO?Ukn^aGqcvz5|x&Y%lm zMiO^1KX-xqbon2e@8Vi=PMrjz07;vi|UA z;&&&H^-02VU7cMvuA9GY5+9;kUSDBGSt}W0H*yj?F7~ zA$_?R2g>A*@qnt_m2-G2#?fQEO=4E z7IOwB%|=g;jccft*CgB+WehsdS8x>aa1U2ST=2KMkodGV?s1&KBkA}3eZt(;E(NtAq&wdzP2%C$l)LdiK-l)iP=m+*0iO-$7hl z_yGX{x8<|`AFv3ha(r*jHMtVmOJi2N{}-?SKiZ>j(|t397-+M{B@Up(4<6bR`VMT_ zzN{$Ama*e)vuVD9Ncqs$|VR{tsS4 B2`&Ht literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_e_poll__inherit__graph.map b/html/classcore_1_1_e_poll__inherit__graph.map new file mode 100644 index 0000000..f8fa3a7 --- /dev/null +++ b/html/classcore_1_1_e_poll__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1_e_poll__inherit__graph.md5 b/html/classcore_1_1_e_poll__inherit__graph.md5 new file mode 100644 index 0000000..5ac5bad --- /dev/null +++ b/html/classcore_1_1_e_poll__inherit__graph.md5 @@ -0,0 +1 @@ +addfef9e1ecea7461431caef8589e67c \ No newline at end of file diff --git a/html/classcore_1_1_e_poll__inherit__graph.png b/html/classcore_1_1_e_poll__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1af8f754732fd251c507966802f4c4494a78c179 GIT binary patch literal 5244 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 B2`&Ht literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_i_p_address-members.html b/html/classcore_1_1_i_p_address-members.html new file mode 100644 index 0000000..3e41bd9 --- /dev/null +++ b/html/classcore_1_1_i_p_address-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::IPAddress Member List
+
+
+ +

This is the complete list of members for core::IPAddress, including all inherited members.

+ + + + + + + + + + + + + +
addr (defined in core::IPAddress)core::IPAddress
addressLength (defined in core::IPAddress)core::IPAddress
getClientAddress()core::IPAddress
getClientAddressAndPort()core::IPAddress
getClientPort()core::IPAddress
getPointer() (defined in core::IPAddress)core::IPAddress
IPAddress() (defined in core::IPAddress)core::IPAddress
IPAddress(std::string address) (defined in core::IPAddress)core::IPAddress
IPAddress(std::string address, int port) (defined in core::IPAddress)core::IPAddress
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
~IPAddress() (defined in core::IPAddress)core::IPAddress
+ + + + diff --git a/html/classcore_1_1_i_p_address.html b/html/classcore_1_1_i_p_address.html new file mode 100644 index 0000000..02dd50f --- /dev/null +++ b/html/classcore_1_1_i_p_address.html @@ -0,0 +1,142 @@ + + + + + + + +My Project: core::IPAddress Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::IPAddress Class Reference
+
+
+
+Inheritance diagram for core::IPAddress:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::IPAddress:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

IPAddress (std::string address)
 
IPAddress (std::string address, int port)
 
+struct sockaddr * getPointer ()
 
+std::string getClientAddress ()
 Get the client network address as xxx.xxx.xxx.xxx.
 
+std::string getClientAddressAndPort ()
 Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
 
+int getClientPort ()
 Get the client network port number.
 
+ + + + + + + + + + +

+Public Attributes

+struct sockaddr_in addr
 
+socklen_t addressLength
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_i_p_address__coll__graph.map b/html/classcore_1_1_i_p_address__coll__graph.map new file mode 100644 index 0000000..58eac7e --- /dev/null +++ b/html/classcore_1_1_i_p_address__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_i_p_address__coll__graph.md5 b/html/classcore_1_1_i_p_address__coll__graph.md5 new file mode 100644 index 0000000..89a89a4 --- /dev/null +++ b/html/classcore_1_1_i_p_address__coll__graph.md5 @@ -0,0 +1 @@ +c805616539c6f4a1201bc6f8bb4a8947 \ No newline at end of file diff --git a/html/classcore_1_1_i_p_address__coll__graph.png b/html/classcore_1_1_i_p_address__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1e1f40d948a97105011818c12c71f0d5e0a68 GIT binary patch literal 3747 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 Xq(m$r`F`r}*9p*4*N0TA*+u^kex^GV literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_i_p_address__inherit__graph.map b/html/classcore_1_1_i_p_address__inherit__graph.map new file mode 100644 index 0000000..58eac7e --- /dev/null +++ b/html/classcore_1_1_i_p_address__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_i_p_address__inherit__graph.md5 b/html/classcore_1_1_i_p_address__inherit__graph.md5 new file mode 100644 index 0000000..9e9fdfc --- /dev/null +++ b/html/classcore_1_1_i_p_address__inherit__graph.md5 @@ -0,0 +1 @@ +169afbf207aa8295752439747ffd68a2 \ No newline at end of file diff --git a/html/classcore_1_1_i_p_address__inherit__graph.png b/html/classcore_1_1_i_p_address__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1e1f40d948a97105011818c12c71f0d5e0a68 GIT binary patch literal 3747 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 Xq(m$r`F`r}*9p*4*N0TA*+u^kex^GV literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_i_p_address_list-members.html b/html/classcore_1_1_i_p_address_list-members.html new file mode 100644 index 0000000..e96b951 --- /dev/null +++ b/html/classcore_1_1_i_p_address_list-members.html @@ -0,0 +1,85 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::IPAddressList Member List
+
+
+ +

This is the complete list of members for core::IPAddressList, including all inherited members.

+ + + + + + +
add(IPAddress ipAddress) (defined in core::IPAddressList)core::IPAddressList
contains(std::string ipAddress) (defined in core::IPAddressList)core::IPAddressList
getList() (defined in core::IPAddressList)core::IPAddressList
IPAddressList() (defined in core::IPAddressList)core::IPAddressList
remove(IPAddress ipAddress) (defined in core::IPAddressList)core::IPAddressList
+ + + + diff --git a/html/classcore_1_1_i_p_address_list.html b/html/classcore_1_1_i_p_address_list.html new file mode 100644 index 0000000..07df531 --- /dev/null +++ b/html/classcore_1_1_i_p_address_list.html @@ -0,0 +1,100 @@ + + + + + + + +My Project: core::IPAddressList Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::IPAddressList Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

+std::map< std::string, IPAddressgetList ()
 
+bool add (IPAddress ipAddress)
 
+bool remove (IPAddress ipAddress)
 
+bool contains (std::string ipAddress)
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_object-members.html b/html/classcore_1_1_object-members.html new file mode 100644 index 0000000..6348c09 --- /dev/null +++ b/html/classcore_1_1_object-members.html @@ -0,0 +1,82 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Object Member List
+
+
+ +

This is the complete list of members for core::Object, including all inherited members.

+ + + +
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1_object.html b/html/classcore_1_1_object.html new file mode 100644 index 0000000..5b3229c --- /dev/null +++ b/html/classcore_1_1_object.html @@ -0,0 +1,118 @@ + + + + + + + +My Project: core::Object Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Object Class Reference
+
+
+
+Inheritance diagram for core::Object:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + +

+Public Attributes

+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/html/classcore_1_1_object__inherit__graph.map b/html/classcore_1_1_object__inherit__graph.map new file mode 100644 index 0000000..32c2132 --- /dev/null +++ b/html/classcore_1_1_object__inherit__graph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/html/classcore_1_1_object__inherit__graph.md5 b/html/classcore_1_1_object__inherit__graph.md5 new file mode 100644 index 0000000..42c60c6 --- /dev/null +++ b/html/classcore_1_1_object__inherit__graph.md5 @@ -0,0 +1 @@ +d15dcae92063e20907bc38a0b5ebbecd \ No newline at end of file diff --git a/html/classcore_1_1_object__inherit__graph.png b/html/classcore_1_1_object__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4ea7603b6d7429025fbfdff8113d6b8e031f88 GIT binary patch literal 40307 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 + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::SessionFilter Member List
+
+
+ +

This is the complete list of members for core::SessionFilter, including all inherited members.

+ + + + +
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
test(TCPSession &session) (defined in core::SessionFilter)core::SessionFilterinlinevirtual
+ + + + diff --git a/html/classcore_1_1_session_filter.html b/html/classcore_1_1_session_filter.html new file mode 100644 index 0000000..460d029 --- /dev/null +++ b/html/classcore_1_1_session_filter.html @@ -0,0 +1,116 @@ + + + + + + + +My Project: core::SessionFilter Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::SessionFilter Class Reference
+
+
+
+Inheritance diagram for core::SessionFilter:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::SessionFilter:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + +

+Public Member Functions

+virtual bool test (TCPSession &session)
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/html/classcore_1_1_session_filter__coll__graph.map b/html/classcore_1_1_session_filter__coll__graph.map new file mode 100644 index 0000000..c37e30c --- /dev/null +++ b/html/classcore_1_1_session_filter__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_session_filter__coll__graph.md5 b/html/classcore_1_1_session_filter__coll__graph.md5 new file mode 100644 index 0000000..03a8579 --- /dev/null +++ b/html/classcore_1_1_session_filter__coll__graph.md5 @@ -0,0 +1 @@ +97891e0f4daebeb83feaf9d169c0a749 \ No newline at end of file diff --git a/html/classcore_1_1_session_filter__coll__graph.png b/html/classcore_1_1_session_filter__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8512724310b8f7e913d562bd37bb459c84c751c0 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_session_filter__inherit__graph.map b/html/classcore_1_1_session_filter__inherit__graph.map new file mode 100644 index 0000000..c37e30c --- /dev/null +++ b/html/classcore_1_1_session_filter__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_session_filter__inherit__graph.md5 b/html/classcore_1_1_session_filter__inherit__graph.md5 new file mode 100644 index 0000000..5057701 --- /dev/null +++ b/html/classcore_1_1_session_filter__inherit__graph.md5 @@ -0,0 +1 @@ +202e7b44c4a5ef1bdc5cf673c0a8377c \ No newline at end of file diff --git a/html/classcore_1_1_session_filter__inherit__graph.png b/html/classcore_1_1_session_filter__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8512724310b8f7e913d562bd37bb459c84c751c0 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_socket-members.html b/html/classcore_1_1_socket-members.html new file mode 100644 index 0000000..e33464f --- /dev/null +++ b/html/classcore_1_1_socket-members.html @@ -0,0 +1,102 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Socket Member List
+
+
+ +

This is the complete list of members for core::Socket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data)=0core::Socketprotectedpure virtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
+ + + + diff --git a/html/classcore_1_1_socket.html b/html/classcore_1_1_socket.html new file mode 100644 index 0000000..77291f4 --- /dev/null +++ b/html/classcore_1_1_socket.html @@ -0,0 +1,408 @@ + + + + + + + +My Project: core::Socket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <Socket.h>

+
+Inheritance diagram for core::Socket:
+
+
Inheritance graph
+ + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for core::Socket:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + +

+Public Attributes

+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void onDataReceived (std::string data)=0
 Called when data is received from the socket. More...
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + +

+Protected Attributes

+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

Socket

+

The core component to managing a socket.

+

Hooks into the EPoll through the registration and unregistration process and provides a communication socket of the specified protocol type. This object provides for all receiving data threading through use of the EPoll object and also provides buffering for output data requests to the socket.

+

A program using a socket object can request to open a socket (file or network or whatever) and communicate through the streambuffer interface of the socket object.

+

The socket side of the Socket accepts EPOLLIN event and will maintain the data in a buffer for the stream readers to read. A onDataReceived event is then sent with the data received in the buffer that can be read through the stream.

+

When writing to the stream the data is written into a buffer and a EPOLLOUT is scheduled. Upon receiving the EPOLLOUT event then the buffer is written to the socket output.

+

Member Function Documentation

+ +

◆ eventReceived()

+ +
+
+ + + + + + + + +
void core::Socket::eventReceived (struct epoll_event event)
+
+ +

Parse epoll event and call specified callbacks.

+

The event received from epoll is sent through the eventReceived method which will parse the event and call the read and write callbacks on the socket.

+

This method is called by the BMAEPoll object and should not be called from any user extended classes unless an epoll event is being simulated.

+ +
+
+ +

◆ onConnected()

+ +
+
+ + + + + +
+ + + + + + + +
void core::Socket::onConnected ()
+
+protectedvirtual
+
+ +

Called when socket is open and ready to communicate.

+

The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device.

+ +

Reimplemented in core::TCPSession.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void core::Socket::onDataReceived (std::string data)
+
+protectedpure virtual
+
+ +

Called when data is received from the socket.

+

The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Implemented in core::TCPServer, core::TCPSession, and core::UDPServerSocket.

+ +
+
+ +

◆ onRegistered()

+ +
+
+ + + + + +
+ + + + + + + +
void core::Socket::onRegistered ()
+
+virtual
+
+ +

Called when the socket has finished registering with the epoll processing.

+

The onRegistered method is called whenever the socket is registered with ePoll and socket communcation events can be started.

+ +
+
+ +

◆ onUnregistered()

+ +
+
+ + + + + +
+ + + + + + + +
void core::Socket::onUnregistered ()
+
+virtual
+
+ +

Called when the socket has finished unregistering for the epoll processing.

+

The onUnregistered method is called whenever the socket is unregistered with ePoll and socket communcation events will be stopped. The default method will close the socket and clean up the connection. If this is overridden by an extended object then the object should call this method to clean the socket up.

+ +
+
+ +

◆ receiveData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::Socket::receiveData (char * buffer,
int bufferLength 
)
+
+protectedvirtual
+
+

receiveData will read the data from the socket and place it in the socket buffer. TLS layer overrides this to be able to read from SSL.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + + + + +
void core::Socket::write (std::string data)
+
+

Write data to the socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_socket__coll__graph.map b/html/classcore_1_1_socket__coll__graph.map new file mode 100644 index 0000000..4cc8728 --- /dev/null +++ b/html/classcore_1_1_socket__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1_socket__coll__graph.md5 b/html/classcore_1_1_socket__coll__graph.md5 new file mode 100644 index 0000000..4d431e5 --- /dev/null +++ b/html/classcore_1_1_socket__coll__graph.md5 @@ -0,0 +1 @@ +cfdb6d9e4804ba41c584ec0de80f66e9 \ No newline at end of file diff --git a/html/classcore_1_1_socket__coll__graph.png b/html/classcore_1_1_socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9387beef840a9d784230e7985a6b5cda68d0f254 GIT binary patch literal 14382 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_socket__inherit__graph.map b/html/classcore_1_1_socket__inherit__graph.map new file mode 100644 index 0000000..fe86f5a --- /dev/null +++ b/html/classcore_1_1_socket__inherit__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/html/classcore_1_1_socket__inherit__graph.md5 b/html/classcore_1_1_socket__inherit__graph.md5 new file mode 100644 index 0000000..60bbe09 --- /dev/null +++ b/html/classcore_1_1_socket__inherit__graph.md5 @@ -0,0 +1 @@ +db66237ef00de1378c1d6a1f2937427d \ No newline at end of file diff --git a/html/classcore_1_1_socket__inherit__graph.png b/html/classcore_1_1_socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..89caf00c965746add242d98f676d66d62a0f68c5 GIT binary patch literal 28653 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 YfB4=i?)D70Pb4JCx3Z$e!n(fy1qwGDnE(I) literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_t_c_p_server-members.html b/html/classcore_1_1_t_c_p_server-members.html new file mode 100644 index 0000000..2d385de --- /dev/null +++ b/html/classcore_1_1_t_c_p_server-members.html @@ -0,0 +1,122 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TCPServer Member List
+
+
+ +

This is the complete list of members for core::TCPServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept(EPoll &epoll)core::TCPServervirtual
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address)core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1_t_c_p_server.html b/html/classcore_1_1_t_c_p_server.html new file mode 100644 index 0000000..1afa362 --- /dev/null +++ b/html/classcore_1_1_t_c_p_server.html @@ -0,0 +1,488 @@ + + + + + + + +My Project: core::TCPServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <TCPServer.h>

+
+Inheritance diagram for core::TCPServer:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPServer:
+
+
Collaboration graph
+ + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TCPServer (EPoll &ePoll, IPAddress address)
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString)
 
virtual TCPSessiongetSocketAccept (EPoll &epoll)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPServer

+

Manage a socket connection as a TCP server type. Connections to the socket are processed through the accept functionality.

+

A list of connections is maintained in a vector object.

+

This object extends the BMACommand object as well so it can be added to a Console object and process commands to display status information.

+

Constructor & Destructor Documentation

+ +

◆ TCPServer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
core::TCPServer::TCPServer (EPollePoll,
IPAddress address 
)
+
+

The constructor for the BMATCPSocket object.

+
Parameters
+ + + + + +
ePollthe EPoll instance that manages the socket.
urlthe IP address for the socket to receive connection requests.
portthe port number that the socket will listen on.
commandNamethe name of the command used to invoke the status display for this object.
+
+
+
Returns
the instance of the BMATCPServerSocket.
+ +
+
+ +

◆ ~TCPServer()

+ +
+
+ + + + + + + +
core::TCPServer::~TCPServer ()
+
+

The destructor for this object.

+ +
+
+

Member Function Documentation

+ +

◆ getSocketAccept()

+ +
+
+ + + + + +
+ + + + + + + + +
TCPSession * core::TCPServer::getSocketAccept (EPollepoll)
+
+virtual
+
+

getSocketAccept is designed to allow a polymorphic extension of this object to return a type of object that extends the definition of the server socket. Returning the appropriate session object that extends from Session provides the mechanism where the server can select the protocol dialog for the desired service.

+ +

Reimplemented in core::ConsoleServer.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPServer::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+

Override the virtual dataReceived since for the server these are requests to accept the new connection socket. No data is to be read or written when this method is called. It is the response to the fact that a new connection is coming into the system

+
Parameters
+ + + +
datathe pointer to the buffer containing the received data.
lengththe length of the associated data buffer.
+
+
+ +

Implements core::Socket.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::TCPServer::processCommand (std::string command,
TCPSessionsession,
std::stringstream & data 
)
+
+overrideprotectedvirtual
+
+

This method is called when the Command associated with this object is requested because a user has typed in the associated command name on a command entry line.

+
Parameters
+ + +
thesession object to write the output to.
+
+
+ +

Reimplemented from core::Command.

+ +
+
+

Member Data Documentation

+ +

◆ blackList

+ +
+
+ + + + +
IPAddressList* core::TCPServer::blackList
+
+

If not NULL the blacklist object can be assigned to this server socket and the server IP addresses connecting to the server attempting to accept a socket are contained in this list then the connection is rejected and no accept is granted.

+ +
+
+ +

◆ commands

+ +
+
+ + + + +
CommandList core::TCPServer::commands
+
+

The commands object is a CommandList and is used to store Command objects to be parsed and run as data comes into the session.

+ +
+
+ +

◆ sessions

+ +
+
+ + + + +
std::vector<TCPSession *> core::TCPServer::sessions
+
+

The list of sessions that are currently open and being maintained by this object.

+ +
+
+ +

◆ whiteList

+ +
+
+ + + + +
IPAddressList* core::TCPServer::whiteList
+
+

If not NULL the blacklist object can be assigned to this server socket and the server IP addresses connecting to the server attempting to accept a socket are contained in this list then the connection is rejected and no accept is granted.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_t_c_p_server__coll__graph.map b/html/classcore_1_1_t_c_p_server__coll__graph.map new file mode 100644 index 0000000..6402d79 --- /dev/null +++ b/html/classcore_1_1_t_c_p_server__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/html/classcore_1_1_t_c_p_server__coll__graph.md5 b/html/classcore_1_1_t_c_p_server__coll__graph.md5 new file mode 100644 index 0000000..882baef --- /dev/null +++ b/html/classcore_1_1_t_c_p_server__coll__graph.md5 @@ -0,0 +1 @@ +49b3fa04958a6e6af41d2cea8dcef2c3 \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_server__coll__graph.png b/html/classcore_1_1_t_c_p_server__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..54d5b656eea5670149b51d97271e00e5af6fdd19 GIT binary patch literal 46662 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 kcfK_BzeUsk`jOwy@T=D2-xPJ-;9mZu#N + + + + + + + diff --git a/html/classcore_1_1_t_c_p_server__inherit__graph.md5 b/html/classcore_1_1_t_c_p_server__inherit__graph.md5 new file mode 100644 index 0000000..fca9363 --- /dev/null +++ b/html/classcore_1_1_t_c_p_server__inherit__graph.md5 @@ -0,0 +1 @@ +38b6dcce73595b30f45053401b3fcf32 \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_server__inherit__graph.png b/html/classcore_1_1_t_c_p_server__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6d72c11147570cd496900d28da9502208fad0d GIT binary patch literal 16641 zcmb8X1yCH%x;MN8NPq+n4#6e326y)m+#P~0?w%mQo!}0^oy9jma3{EXaCcaEC;xNq zty}lJ^?vmYMX@{E)7{(MGyVMJ;oC&MnG(SgY6mtx4qIIX%UJR=CVJB&K@niPF#B?XagO57{B_B(HXF?-QS=mgQr? zKire4ew4R=xZ>%D+6pV}t^>E=0KBlbr=H})bkt$t3fD1}XvFyG(Iy#=6 zo#mmbzM!L{LqbQ#^Q<;uTD{fM(h3v)G(bj8UC0nb!s}GfZ@9IbIX?c8mXwV*{=KRKTgDIcjNHbV{Ntateeuyjnv+Peqjg?Gc z+Q!#Qyh#!l1PWvxF-am?6zHiU;HJQ zx=Gx>8GNn`eJZwqGEnVo=jUWPPe19ho1Ax~xRB2#R4k#l>cT$a@vmsdbbE+|8mT8~ z)*ulAwXo0aw=BGEGhaiy=|--CdK_d6oU#=IGs#+m&$VayMb>oob}ahrt;?%{&w1$+ z=)FPCGuYKW-9o}Ee^`e_6h&o+d4+UEQ}+|kXW zI=U_Fo3m7(8?E(PZ~c}uJ`X!cbA_t9yUnG&IrZ#%S>C4W$H9a;l{lqH>!I&s_zJX^ zB(Si_v-DA4MWuTyMLmUm{%Uar&a7;oK7GO> zAzAK~EY~9a?HBO{%PIUKftl$5ya7uLHjZR{r5?)qGQ>EeJYayY==v2HI>1CP<9iB` z_xDsAC65d=&d3PuM0e)F58>jor{sKN`jxl8>?U&u8!IW%uv>1PzXhuLvuB<&$Ycks0DY?i>wdCr8t$`JAup{S0Oq4W1k~6YSzL{vJ!6#ViQke~*WmD%oZ3 z(y=W;^g5Kf&CynLHNqDD)Gx;Py$Y9ghgNkLqoErcm#wX~UOM*vJ+>E~CSp$Ej?Qt> z%Xcgz`8!G3=_}4>6{R!Tw5^g7G1!RK_BX$aCO+%0qfy-3WtODM8|lGih8hz~G35`K zn)HELPyUdoE;{hS&eA$iy0VQ9a?fItLXMTzjqpQiHhdlyiHA1N!RAZ4mEhWAg1Qz~ z!MY~gZdNJTM>m^oFpWy8S7T(TF}_sshKoUxy)QMKVO>Jw=`vfmIEks~b%|gea{lpJ zLx!mF8Szc=eNz(|;Fd9PG&ZPDfkPI>KoB*vQ^rY5Of*J0SHE%Rd$JYm9i?3JL_As4 z56i2?0t(ZGQ-sTfuSOFEQ4^(JS7=JHv2ow)XpGvtwSwH2KdGh$%98r&U~rW+N6-?+ zfk17w@hI@7-S?dFsES^iZ&S_}ys`wy9b==0-%Mf|Omp$;-|&%FxC@&)m5tSzOGtv_ z8_YNJzxvaGB1DL`H8>>0!>e83=IvJC{zA1)#xZqeu=W+ zk=4~=EL&9f=ZE16LF`Nu_m?XnBg-F+Fk933>Ob$P@-+Y8eSSR|$&GNSt5n^35v@x) zI0#kKm`qh8p#QtglvR}Ufaa~|tzi++7Lq5H=A8Q7?)-!y!LjW#|E8rF6>=5QX2lp? z^a_GR%-5Op(H?hwW+`urR+cx-?A)nRL)rGf)1@LbUABe#XL=34b;%cL+OwQ__IvO( z?raUSvl$(1X+q1VFB^n*xL$S7rez$2j?yAK2#IR%4!_p(XXR_<;a=asWr6+}LtzJj z2E!09erm6_->}Qea~vOOyT43_8hLE`X#|d8BMrP4+5h9Ygf}m29PhrC`Nt~N>I|an ztxWv<%5o$Qr-+Jd*Ynd?X&12-$s7wZs)L@8ew!Z^M$J9xvkRUn7gJV7ze=^u zEh``I{ye-9kdh?u#v04o_r?=BNp02cM;PT(Yl;G*U1d?Q4T8Yx6<|Zq@N7_d7C+q0oAZ_~y#+ zaC`s7h7{rP#S4Mp?YAMo6J)r(!KM>|LEKeR-8Z7YOS^nla`JSiXa!(uZf8)*+SC` z3)lN?-<2jMZPqr{AX8InXVMGr=4=fle%X+an9Z^3w>2P1s;a7P8Ta<}x!YDqzD*)e zXrOz`gd&+BH%%Rv$iP54xi>(fk(b9VD^+weU)KS0DZX1ek}miAJ^A;*vWyh|6-6ZL z>Y8!sQdD)q)7B6cLz<@jNk<2EtncS^UhIB?VgMawpua}}<$RPOM#Jk42n~(OUX4Rz zSU;-{gopUviTR&z!M?KxNnQ{d;Iz+e?s0VLUG}bBv}TLe0D$J3&JY+iHuem*s|>!sG4sYZA%0wKbkyZsg*Y zw6ir)6i~p(&eP3mYqN9cdPNwUn;H5a+QP1*|;Y zQDPuqesD~YpeXs#kBG>WlyGqPt2CW^)qw|i1_cF_X=3ve5V8gOmC-UDQU{TNK<{F1 zwq)=BjB$A|P@w2S76t~84TRoEV$$OjP6)WTs`C@bdwDtf`5``kAL@q`3y0#)>0Q z+%KmC4Xkun`=}gE0<%HlPkpjnpiMG?N5l|cL#3~M-3IN0Ha}Kmn26C%mYR!aX8e~r zV7>G6Eh=~DGE^>4k8$$JkvOsv)YM4>1Hn;!OFYE(62HpQ2q{pZ(dN)l+aPc2ts2MQ+gqi&8}G1T>* zVJVZf;DnwH38@ZT^|uIc_o%?iDb-d)2K`)j==Ru&ilJ}PrJkA!#sf@LxV@Hc%ol3m`V=_8A4K)=Egk5focTe#{+l>Ox z>*9`HUNyH@Ye-)@g&a55$AnK56^2n!bfoet_sKqy!STUiBbYZtzFl|uLSlUc!A_4g;M%6Ho-?V;$a zx-}+xE|($Supc08y}z9|3gsERt`BWb{7v)nCV7ZEZ5-nV3Wid$BUqW2;@qJ6t=BD% zV`ipvw#-q@e_**+s{iP%eQSoz%3k#PViV6zk zbal1IE8<1WsbN0@pPyhidjW7>ad8IXq1Twu5QFw9jmiw*e%#tFp$mU{@-7JNyCoNY zlbC2GOQoi*9o=^z#GnER)|$CAoT( z?b5fnugLH&S5`p<`-i&ExRE+{i+o{6aMvj!ND`3a128&(B=g3XAMO|70YK+Zl@FBs z`6P>!CG*M9-#a#`aB8{}xa^&b7VsA684{X|*}p!h)*^m~o>1*aCNvKIx_O{^-}xne z9%%daL5D5%a1`tyDU!2_^!3*b&@*6UKmnZqZgioZ9RFL!dqmb68|@y|zn~as@N|e< zmIN!nuN&Ly0O%6xm26wE3-UO)i9GmkXOqDgn3N6weicW)4ZI3mWqMzd?I8~RhCDaB zs$^!?4@w5dj)H*i5n~1>2f=0nrz{$SY!? zCo~BK9i53rJIyTNF*g_D8qW((Ma8+vaHTj>f6}aML|$h0018} zj3xU~NlA$Ux!9Y$Q=We9gxki(#>(3tLRxZ_UNA$e(uOEPHWIhSgaDxFui`-m3Ba6m z!5t(3P&@XYvwvel+2%H@YX?&jb3}E)I+Y7Iy`h|EBaFYOv(LdIr9a_=(H+f%(Kh$& z@Jbx);y4UXyV)vcw2I5CcENtLyOf#myO|U-mjNMi=6hn~Yoe!3xZCboW*+sg|doWuOkx!U0pe8o8M zS4U?HfBVqrUaF~26S4Nta<)es<~#GaT835(fU;?Ae-5^8bN`+cQIuVF37YM>c_eux zoV_QEmepyo9?%>U=r5^YnHU$!La%+XKQhBkVH|&Jv^_y2y^DI&ZrEEkyQk8g}tie`K{rt-I|hR->X zeX}egFQ4V4BI@0??qq00MQbc9($6#|s4*77n4>uL^TpRe2tXeE$U(S&aS-7t7S&3wTW|KH#C*>9Nj;7_7Kp zGNmxEQY74s!VqLlzViNMqE?DwWT}g_8)r zU#@erWBv#5>ZP3@FL0N1e2)(LM2anr_1xRl_L&79D~Jp!sDB}gp6>nn>*Z|PQ$#2fyAH8*d`BA>?XM!EDo^F-NTKguMxU!k9k52{Qy*@ z#2tpW^u1XbVq_X=f>kT8(27&VMho3gyG|0UB!Wu zLre#eENQp4x+FvGsS38YEZW-cW(UQ4(3tao1W`C$U%O#aA%g1PV$N9-2$*=gCJiI(>Qtt)}?0gdi1J%jc4NJCfhisMDk`v-X&n$&~R zAG_BOeeXMXm~M=ucxzbJyM2y%F-`5<(24Ioa4Za-_%oMjy?x~|5I3d_BlCjFoC0%B zpV6J_8<%xVk!TAF*xkKhW-k7rc3vpY$xbj+b0+<1i2HW&1tx2z0^ybm?Lx&fc50&cx84xQx-5=PCufGKKk1$o0mUgS4e~l?f27fw&6f6J6 z#uj#JUe$ct$$B`F?n6v1dMmT<5uo-^p$%M+^Rd4gSsG#O5lfcx!-tEWhztwbWG6Uli0s94a2}Fv*E$+8dMq(L!`{o6`#|J0G5JYq!fQ58=0`bWu!0oZn`p1i zn1WH3xZWo$9Gts+>CC%6+Yhs=!uz*pulyg`AUQb{EL9Zzt>py;D2BlpvK7j5`KyHD zxv{%0$+@{j3BQrr8bmsNR|kuTBTBHx_THOuoL?|pUU{!oyqH9gT^0k~quxh_$?V6A zj)QY@a`H4;xZ2c3(*BvR4!PFV?+Qv*R$Pp$VJ{h1sS<*MP~LRs0B8guaK8{5fodLo zc<@Ces9ayeS>5Q0ib_@)RQpg;VBLL#s6C*fbzl;F%cy0X2Fimaq$pC}#9KpsiG02s zaZ|hi!V5}asF>FgXUC2vn93XvoMszFKCBcIDF%H_xq<8L)#|i9msR^w?!e zVJ}~;hP?s0j{`U{@3#>kKIa4wqw^h4G>`uO*oR zP!H72F$mP{?Cc1hgqz;`gIn19pVim&P!T|&`!wDCWVF=Vo9X4>DK`k9fD=3$n*+P^ zv1V?1_CP^X6kPx9#)%eg8(JH35J(ZVZ`o2Fi{`7aFpu%4lsAYqrGsTuM;tqi>qU+6 z{L3A0G34-yBmcjNem=jrBZvJ_G~EO^A?3M%B=;e3QDIQrDgEtGC%6PP@?7#OH_wz7lH7OB4Q91o086vq{-j!^;RQ79n+hgG|8>S^tWyIB&k1pUcvk0oZXAx@f;utLy&Uk+NcF_Vsd$Mh}A z7(e8U9;^GgIlHHmHS)@=Vjy5pd#VPpm2<*%lGXxEA1UGjKv{;rm zB5>U-qH1QQc2?XfHm+xW$#K%bIuz3wIKA4+G=+jc^v=T1FY zQvOH?3_tycvNq`-{cj#9w- z@2RS8|0OA4W2)4pwR+@X0+bB{LkTPEhjK9Ae`yLJvMV+=sxvU-aKtq`*;y;P`9Cto zX_=`os5!>5DiUI)s3Vn8AkNWO9!=K=0*N%PBcC^2#&6m9eORCaWB{Qa!-$d1!M!&b zyNB)EJT#PoX2Tp%(=*$^L17#u1xirB9nay&=UJ8cV)UhTX}UBQSFVkLh8bsRExrFx zMn1z{NQidqKPmNPSM<$!A_!D{9uL{yzetay3kQLkBoWPbx*4I$@yR5g=anT$Nc8u( z)x_l+PECdI034`6Z~*0H4MYQpa5YSyvpe%Vmhq6*ovSx+emsSB<`C+5HPS|ST-pB^ z_PsgJsTfA@Rodq^CA{j&Eh}8*Z~HE5{O8zL<)~tEUqZtE+T1WkRTfnkvGh1B_hm!U z^mmbMKE4;fkwCGj_p?b~LX~XU!cONg)q}s$>+45(I8|INVG?ToF%n+neJ&_>pW7_H zsl08~_JMr-T~b0N2!C|LlF)$;$ELbk8Wm5C#8>-G67uZS5uLBT1@zv6=!dOlkO zyn)6!Yxy1*Q!4?2tAK-WU$#Rw&)i3SQI)cj@ziv&-=&^nEKg_$n-%)6X|)JS80f4B zP_yfJ4+Zs`oC2+EiT&&jL*NF*-P=r%6!2)bPxeBrb?oEpxYh%{-^>3>u@Q4F9%({& z2l0gK_42o0$6zvVSecQ3w0bDovxyRn)nV9`v)6w7R=D|aP(o*o|I7(~h6Oa+HPkH5 z`-xXa`(bPY>IEoZbu$bVK~&oi#q`T5~FIMmy4rYYeLQY|esmOC<2GWD5g zr5Bo=>5}BSR3iJWoM)8!U^Md?{5NI?Gi7w)ryg_F#v!^8rRP1`E*$seh(BX>H%F~F zq}hrz`NU{Do2CZ`{D@$cjhFX|tgf!*E*nj9by71rSPd3i+?#ICNcp7W=!&J88o z+2(rp4M45lDr5Z>6R@!%Wn~N-Oo~fCpRhXn2UM1qdSeIZKmpI#o@W%^3-#S-XtXQs z3_o@CA>?dq?wvuu-Q1)}g`Yqjg0d*VTZaOlP)1%F-OZo?WOsMS(Z;g`Az6Y7GhQ8_ zOw^jEHG3+z)njJ=`nA*@`Wz81N0}f?tdwx_R^_edy^DOd5TS=vH>OqxvZSuA`L!*B zALcA5w7Z*?k!Gj+*SA;6Ob^_&()V8ViyK!50+xRgfVQ&)WM6?eIfzmtl~UP1^8M2| zUr9+YHtiGj<8xR@h>6SP%e`_!1-wNvViZ*u34OH~ia~g1Hpw#icG$BYaOx;@bwv7LnvS?9`S`5 z(^o5mVQ8t5?5P<5&m4++Af8{Lrjbm)b;TD zP`P%p8olQXW7)4?G0n}}2Q!L+&KrDBz5!}ycg|N;&?i;RSu@^8_*cifd!Et~R2zli z0T}`W%XP)>GW~VEw5bY>DYL<)rF_QjvH+!}aEEp?`{%3uZ$uvydURh;1o~m40x)#sXm}BVs99C{fo-B!H~O~8`)2uk`wt!y zVY|(&ZCis2e9o$bls?JO{GFPCfuzJQYj}9qw(YPleKEp}IxZH+OUAFzc;xOx-1vbS zsnylryb8sho{kI)19VDykD)!CETItxSJVtP)BarX3!*XiFZC}j)5G4gRHbtK0b?Pz zJDDe?rM*~jY6%BM`(h`PSh&MbB!J-?f_L-c>&x`r_so?UTnA0@@rOwaWxy&vO{VmU zPY~wixz*LZ5%gV9T}Ct> zp^RMT|NJveeYuy9`L2VV`{rV!$5NXS^Qb`yR9h?eXM~^ENTkaDSzoTOu>+k?0yGZR zmt5`8!DC_ee`qx73C~G3EO(O@@_V!epRBe*dYhf)&CGJ<`G7kD&%`(v53BZYAi;$+ zTVBB6#-7&y{;~(q<&~AMHhQ*EP}qUNs08S5CSaA`{mG_|i<4b!)bG@l?*qPJJw!OS zfQkrfqw)vR$c$soYD-3qsiJb03o7!r#SR$ZiVj~FASfy+!I`n|O%~#mmYxIEt^7Pu z>WzW^;L- zBsqf)AL13K1xa&HkG(`kp`Ji({CTu@g_C+7a$<>aIQl2IMe(AzD zG|g3AUw^+pJ>BkAvd$ze7T|}?Fq91YWMEL|X!<=bZ#a@5*<%P(4p=JFT&(=9mxD>u z?cVY|OEzZ!mtz0HF0I$ZQ9zKTe`rV{V~!Ne`@*QM8K~gl$#)`&Ve-l@4nN?6))CZQ zeRUvSWuW*5*^!iM5FgB|2$Yjg$?|>@VBmD2*7H)>5`nJ6rwr*f&{Og8MM+)Yvwx*K z*yH}u;xjLvrg?Y5w{}Y;6f3iPw#f`AW}M)afy6{*k0Cffm_^sE+u49UynlXbeVbMh z0caekD8VlG^^1V+b@3;Ac#ytF^G%3x`iJ1tu&4eiEk|=lgxAf*l4^Bymq={BA9P>>Kz#9DOTGHdD`XvbL zn1e~3`VbWH&%3V;4HtT&o^_iiiz4y@kPz;p9JF)@^_r?5C-QGPI#OCqa6$m-`}Q7~ zc8mCw6g9B^->M|cZXLSoEK>lbc43S~te$+e{lR{^)QB6xb}-xB&gB5QkIH#GkI)tg zuyJrW41{-=#M#;GBh@HJs)dktIR9Z(2}ZsnUwe$-A?9s({FA4(9*$G zEy=VSGRF6K(2zICvNJiCq*~yMX=rGOi9uhX|Aq4SRKW}QCu2y3k5{uX42#HRw6le_ z2IVF$)%SPR$dDlA3RHov$$(L!jd~4qnGU+YIYCcR*|#pZK<)+@lz;ms;b8x5+W;bk zpe|p3ud{vmyQLya*>*gH4A}J7uhV8reBL`dLy?b8Sxzhwju*@NeK*PQplZ^SjE+rA z|1n;KB$WxScWjHM+r+PN0ODcVHxf;V=$?lfnn7JWZ#n+eQ+_9A4-o>7K{*aa2sW!d zJ#l!&{1WsqA4okW1>58ge*qGUSEn#;sDib-QKz!#w752O=(%2BFj%75mL?)=3CrQY zfj&y#y?lty0|1I^_V4_$cgr|A-WHp5)E{x&mrhn&2(qBwX+ILIh1y%acXpHM?-H^! z&K)l79N}P6YBElPrA{EwPmKZ!HAyZmE|h1|wiwJ})5tdEho|x&0C0`1(Cix~S4Mc8 zmo;Pp<|-ekmZDIegEwN|CdZC; zp+tS}kr|6H-flZK`%hG zqhYIHFjTmsGOG1wol~EqsFpaNGCiT=!e9i^K||_H!q+ul;nq1$b`z+4HCJp_%f=FF-OD9Bmfg z<3OL?7%}XPMN6`bPiQ2uDDq1Sb0uJIh!LH|*EXV`etoNcB&Qr10L2ay&&=hzH?}Uc zmS6LG9N#CPZ=*Kupy2ju9=DzZJe;OA(US52bK;K!%eWshV`%k87O>Pu5}R#2^_yRn7A6 zpXW6bGW`As4@Tm+;p&v`O9`_)yXxuND$u+Fsr5O<7orI>5R$%rxoIq8gUURUAZ)3S z$>+L1RpREHeB9QVS=)1grw**`A380^$Q^S0jrP}Mg?T@qvrUZi4?o_*gB*mAa5buy z=5{U9jk(6MEF3^Nv{KNIjj6Vxb{CZ$X|>h*bHrNCCrIXo4StjB&^Ao!gzN*TZD)sH z$t3$kg?~wc%T;|Dc83uthp+wiWf#3r3e7}@ZM6UES8>^Dclp12Wcj?(5a*kT$Dh4d z967rE_;q-;(W`2lKp*>#nwnvFauGx|Vn5Iq)16ED1CtvJBqH~J04D<%!L+C(Sc1~M8F&34- z9|p)ut>p@{!<&A7M*ywi;w8T?Eg=I8C+p9T7&u%}#zNB9^H(Au5Pmx+Bxs?okWJ?m z7rtP8EgNI+9yihS{rQ*7yWP>D{Rw*%q|e(7FYJxgeyV7XsLGGrrYdQ0bN@Cm8xKbD zc7}@b#zF{%^RCr~ZMwT4zP2d``CSRWZ<%GB*S_o_HDY^kD~EJ2m(qDYv!2e)YbMpc z1%c*$;!&GO9L~0js|;To7@R_b6~9kaoxP5-wde2Pd%V4ZNE!}0V>2J?HB$?`f(P7` zhO7Si!w|Vm)6Uq)9p-1=KVdgn)t2v@5$D0A`U@9*N&7VsfAAqIdKBr(#OM^yOW4C%g!kGRQkTGrYgQG4z5ol4s!s|5~hM)W0ipS<#$U5 zSTqSS$Y9z4zY^|Nj8beXWQeH8iewCn($0K_F1d zYjzIp-d?qMx}pV3i(2n1iXkjhLPu@w)S@C9V5dR__MT6ws_w^2->P0B#HoD5FUT?K zF)~xrkorcYz{~55lZ5Q*`ksrcs%c3s?&~}OQtgjQ9zeQ4lGfICHCo$r{*yH|Q!7Ko zDdd-)m6awVw&Ub!+WVNAt{a`#pZFeLP>>ewT{%m9Ecp?zbBk>4B)>wCFl>2?4gz8* zDy;ooo{cq8T1+X&E9;H@X*|%+elx7lZrC2Jxbm3nX5Wpt4y*u;f*vr6hyq@WZ`kNn zhW^2Mbm{s~I=pXRdwcEKSU=(!OXx9!59fq0&gpOYhvEk4Lcb6Y*|fCAIJ*!l6?R=q z&c1+!a3CYk_eBeaMf)k!_`4H=0>sEivIH;t*o7qE(JXV-dzu|csn}{>ey$= z(d55HnV1UGj4an8;XmU98{fHuX%8zeWarjh7z2gs~O`tG`BU_(7I-V_*==JHyHZ$o-BiD>L{>mNofqvh!ud8To& zN7wpkzgeP!6cM8|P5$%4YK|YwrIpVbL3E}nd$K-E954`0PNL{u=Zi=H%9cG~7;JYi z&S_{k1JDQ|W8b!kkWk|WCadqg5jM6R7BUCbT?yt0?85^@`RH0eT8=_zWcAi@d zyp#r`PAej!3m|@tAqD##FICZnlOa_%G_Z1?ynly^6jW{~oYdEifuLR2>o$@mi%oki z?0!58I4CQ0aF#q+F(}ws!{)w4D{*k@L4EE#Kcp`@oIk-a{_=S25^7@Jj?8g-`o={8iAWA`|{F+wipBte-(@2PED=d zwk`9b8Y-c%)D#Cma9-)Y_2nL05J*)uv$|US?hXeH?a8oXYJ*7{D_}dFCoEDyr=4#O zSayITZ24HeuC2{Ux(@`Hs-kvsD=H!(8ONxXx+%`EdmH7kSVMo9=ficXhs_>Ywvex* z!zpdT1i)0Bwg!%Z4ifZ-wuiSU#oZTKKS`@oX$*Y*ViYCiEGl+eLOl+_IbP|0P`;6>_RFjsHp6_Lq4LTr&s6} zZ&pZhezvC9Z*S2N7q_}T+}zvi0Wf3o&uiTjjJKDz7dxk}2Q&}23cY}{pro|a*^xIh zMbq!DHuP5dPb+`554K>jlHfucuMh10eY_>mIY1hY+A+2$;;n(Qa?SZ088hu2esHT#h*2t z#mQ+ZC#P^`#y2zL(bSX!C}#(hBcN3hc-)Lhhdv8=?@eZ(%}}5LHiNz2_M5#|&aSAD z-|hl{F^0QL|IFjCb`0R&g?8`JcxqFipb*{L$r9BFz+Sku@3phiZUzh>ywP(3(j4@8 zw8r!X{awbNEzTEUCZ3<$=RUqxnpHF}5t^P({J)$gi+={TE$!>$cGt(-FXEv)^2LCe zlnTphcf2k5wKS8VpOC;K^@7{0Moj<;am+b?AO(Iju#WF^PwbQMJQ+L zaGDQ_v~6QVtC!K_(6yNMHKY-SNQ_qRy%`4!zXTvMSrcr(u03ijK5gM^{G~993p@veK`BEQXU)JYAN(7~LWspS_xZvVq_}O7dRT22Kkx%>Anro0 zySC3~D%)KE<1{dB!q2uLkPQ2Px(gXk&r*QzN+aye_Fr&MQP*vGy9;sav~U&_2+GS} z%@%$>0DR!Ua``ZvW-dvQTc#Q6&^*`Si#F~w4z}yIaMmp6dA>ah&B-y(mnPa|Do!`H z?mWEn%hg#jrIpOZ-;YLee`{A(1_C!6=Ym|*lNw%Js`mcw zZdGBS&)%dH7Z)NxprP+VXw=l%^z@Xrx08N*rYKNS&+5x1F{W{cx{OFuYqJj6~qR& zBOSmAsS-ScoNS_y1qlf=nSQK`^ zeRxpzb6PbteV>lOicn`{Nk+b6uciO{dbD-)y284N^(SU`FnC(;>$t?S> zez8=`8kOz7v}l@m%^a?~woy@iJl?M{nxK2svdD7+{^@KsU(5c@S!8as*8Wwk4ow+bTpj{jL5?wyCja5x|Wy2NK$0{U^ z$D~E6gO&2k@?gO0$VKd)%_RFB_`VLH75-F95;ao;Xot`X0+6G z&zJ>_VSg~%UOrE^vdSqcu;=SM*m&RriTn=N>t^GoJeN8W7$YED)l7*as1c;O$`D7d zPii`ZRoT^W&1(Fvaf00lz6J~*V=*_pZ#X`xew<{_uHAMcSN=X_foxlpP*7Nw>~l5z zC1c@UlX{`=LR3SUY<{+!)7Ban}GpPz5s7U*8ydlgSL>6-RM6NRs zVIQZ+^vAhD2%gS$^@mWxjleMda5Vpk&_}D?V>2NC4WDCTthRV$l%F&_;`hmM?VeRL z3?~6|hpcMFJxy6g?UNrWgZatslM>vRll<$|uT=z<7RN;LeXNlQ7p%9&Xs@~nNjdCW z_C}HJ=@o*io2EiMgU!`63J{rCCw2X@zZw5uG9sxT-TsviX)DU-S*X%lM8Ke`9$9YL z{E*pnpBHeYX#_9My$k|wvpH+4W}WldH&7s2_WjhpX=!2{}t zt8W!(&L4rC#^Ap>jo}ynsP?+gR3}Wc+}eH0Ss;9FJy(mDuP@T8n-Zl-hc`^{Lnf@Q zAAL-EDml2Eks}#$E?6VGf0)!U+UMx|ZQ5Wa;#EApF1EGagOFA#`_Xf-?sbE& z$gMS;@sv3!;6NVc)HpADL#`@BYjb5!!Z$v>0~H9-girx=2M*qjq&GqAZKiTDmixy>{cifuw+BaYugb9?%IqJi(+=>i z1EU)$l43+MGnCI}O)i?8_~2>zyiZW02V~F*E{0FE1av)G2(c=e<<_5b5*|~$0VaSnXjaa^<%{jTG1RIA*Kha_@a+0YZwljnMKcZu`cc%VV_<<6 z>W}(gNq!&^6~8w>LXxwN2J-IDQ#4Z_j<-d1jmtD+??=8%wL9!u@7-ikTYQ>p_BK@W zE+gyO6pOVe`*tq$$CvA2`WZU)m?+PT^FZPzWDcQFZ&Gslw*>!G{9nG-hWJV_@+&#) zj3Tw=CPLpYxTZDZ^NCaYzdtuc(1lU9`Xg1Iwte0<{5nuX+5!ImVQr0?HO!0D+EsJ> zH6%>aTEKdB{EpV9m2v>!o^DLlWTvG3Li~hj(9ajRX+4vo4%YjdrY_ytj302Bc<#+d zm6YY3_&2NrQm_w?+csxHYtLDdl3ZxiL&ED_TSYPxF-Mj92ZAHemStpy21YzQFRGG4 z!%6g{RDz4kFvCA6J(qQ~?c5Z1>yx}0*T{Z(h9U0;d2wMQODV^YTCpPuJhyt2hOX;Z zt6L(gT@#pGl5n^bdaGJuHExasV6Z~2gke{8HJ69Q%J#>=mAog#|4ak4@lyPK(44)g z+@wrw`=c`F$F%$Iuwt&&blY{$73{mNhh<$wYDiEVbe{8WId$OzdyJnjok-4nCw(eZxoA0R)qxKygV8h|;yQ$2?u^^Ak!$-A z>3SGoFsAD?uBMe2V-OPVZ*6_WeBZ=?4dC*uzyB9tlS4v=fecA3e}eD%AE6xSS7#?2 zCyYMSXao^SA}{cNrP2QnI`|(EUHs<__)!!-EYacibUk^fQB*?A$LFy>j*=+bYJ=O? z*B3~2K9dV_`J43Y>x*fdh*;MuPr&PBR@dON?nm-BQU4!L?*CTgZ-rB{v+e~T=2AdU OL9&uc5|v^`LH`F7LCTE) literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_t_c_p_session-members.html b/html/classcore_1_1_t_c_p_session-members.html new file mode 100644 index 0000000..6ee53bd --- /dev/null +++ b/html/classcore_1_1_t_c_p_session-members.html @@ -0,0 +1,114 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TCPSession Member List
+
+
+ +

This is the complete list of members for core::TCPSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
onConnected() overridecore::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
out (defined in core::TCPSession)core::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
protocol(std::string data)core::TCPSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1_t_c_p_session.html b/html/classcore_1_1_t_c_p_session.html new file mode 100644 index 0000000..02f8d38 --- /dev/null +++ b/html/classcore_1_1_t_c_p_session.html @@ -0,0 +1,416 @@ + + + + + + + +My Project: core::TCPSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <TCPSession.h>

+
+Inheritance diagram for core::TCPSession:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPSession:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TCPSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

+std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
void onConnected () override
 Called when socket is open and ready to communicate. More...
 
virtual void protocol (std::string data)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPSession

+

TCPSession defines the nature of the interaction with the client and stores persistent data for a defined session. BMASession objects are not sockets but instead provide a communications control mechanism. Protocol conversations are provided through extensions from this object.

+

Member Function Documentation

+ +

◆ onConnected()

+ +
+
+ + + + + +
+ + + + + + + +
void core::TCPSession::onConnected ()
+
+overrideprotectedvirtual
+
+ +

Called when socket is open and ready to communicate.

+

The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device.

+ +

Reimplemented from core::Socket.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+ +

Called when data is received from the socket.

+

The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Implements core::Socket.

+ +
+
+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (BMASession) and will output the detail information for the client socket. When extending BMATCPSocket or BMASession you can override the method to add attributes to the list.

+ +

Reimplemented from core::TCPSocket.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::protocol (std::string data = "")
+
+protectedvirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented in core::TLSSession, and core::ConsoleSession.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + +
void core::TCPSession::send ()
+
+

The send method is used to output the contents of the out stream to the session containing the stream.

+ +
+
+ +

◆ sendToAll() [1/2]

+ +
+
+ + + + + + + +
void core::TCPSession::sendToAll ()
+
+

Use this sendToAll method to output the contents of the out stream to all the connections on the server excluding the sender session.

+ +
+
+ +

◆ sendToAll() [2/2]

+ +
+
+ + + + + + + + +
void core::TCPSession::sendToAll (SessionFilter filter)
+
+

Use this sendToAll method to output the contents of the out stream to all the connections on the server excluding the sender session and the entries identified by the passed in filter object.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_t_c_p_session__coll__graph.map b/html/classcore_1_1_t_c_p_session__coll__graph.map new file mode 100644 index 0000000..7d7eef2 --- /dev/null +++ b/html/classcore_1_1_t_c_p_session__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1_t_c_p_session__coll__graph.md5 b/html/classcore_1_1_t_c_p_session__coll__graph.md5 new file mode 100644 index 0000000..3f62399 --- /dev/null +++ b/html/classcore_1_1_t_c_p_session__coll__graph.md5 @@ -0,0 +1 @@ +d6e02c5d4c543b614000eecbbbd4b91e \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_session__coll__graph.png b/html/classcore_1_1_t_c_p_session__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..06dee7dc38974f88d8f6c06125875a6811d0ff41 GIT binary patch literal 53772 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 z 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_t_c_p_session__inherit__graph.map b/html/classcore_1_1_t_c_p_session__inherit__graph.map new file mode 100644 index 0000000..6bf2443 --- /dev/null +++ b/html/classcore_1_1_t_c_p_session__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1_t_c_p_session__inherit__graph.md5 b/html/classcore_1_1_t_c_p_session__inherit__graph.md5 new file mode 100644 index 0000000..03eed34 --- /dev/null +++ b/html/classcore_1_1_t_c_p_session__inherit__graph.md5 @@ -0,0 +1 @@ +ac543468b68d1922d4dad07584c5c5ee \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_session__inherit__graph.png b/html/classcore_1_1_t_c_p_session__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9b340ab5b792bfe4363af0c9568b53568bfbc29a GIT binary patch literal 18684 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�)(y(d zQL_^Dj6w+;F0&!V*0yq$-8K`@)+DNq_mN)q3=Fb%hx5v=?k56szji09a#pFVd>*cN zn;iE^oll7)!m+L|?_JBx&WB-Rsl8jR(NoeIMTL5tid7V|>Wr0@sftymB&1qyC6}Ky zIyyRRot&^*5R=}m&w|SFYu9pFk8a>kvk z?ZqQ0p=5r=;y$M0@IW{&PWzL##LqMTXnAX~&$2$*KDqUH&lB~3ug+PL&xZH-F(6?w zBz7JnlI;DwZNCf5RF+JyO)8BU`)K-Hd0R;2r{{zrBbhy@st!>9DxE3zMv~{g6_aEr zj53$|!JStwS+6xyGng7VK}m!s*?_F;$VZVCWQhU3kIJjFn)-I|T2F*Wu#hd-VURzi z8X-(_pd~F%5|^-JxRyHL%0}+cOL?W`-tIQ{6dWK|=DJXyKP9$dUPnautB@o!v8zUr z5z*Wd1rKDFhlXbqaxk|>)RCy}Adr{>D`E~Y^s6T)^;2HCX^gynTLvO}7!>eTuv97L z`t4)xrTan_B z1N}=FjoJ-V-NI8MADQ1WHg=PVY}58tHLk(p@@(cdsD=}6+k5qX5+IPdn}!zOKzqnR zq~dJM$#z%})`%p80DK9XvexJ0>VszNgccW&)puNLUCq#&V7J*EH{XnSF@x*+v5*%e zh3c5*IF#HJA6Jy=xV zgamP(e}FXbTV^(XVk7i1fb6Z?{KtKD30X+Piec5aHV!%d(7xJ@-ju_?ffdr$f(W2g zan6owPU3<+#lH*TCg4NL?q3iARc3l0toadz!3EDL{O)LE+7CI+e$ko_?p=9V(R?7^ zKG*><^dX`_!;%oZ&+<=5IOrFOto_?oU-+A490OM!OtRqN?IZtfZ%b4xC(25zGw#8c_{N=o^m z5v+Zq$zsJC=jD^To~Wj#ri)8U@H)_=@7M9Vp&H$&|3&8g#f1l zZhZX}9Rz2+<{1vGC%~#K5*iQBfP+?1g{uU@`5jB7ibGC4mCCW!eSNBD@|UibB-Q=tCFg{)k{w%GoNK5Oyv zEO=vXJ6TOuq-2hYYWtp6_2jmGV1ROSrFoL9EIbSkhKSCdN`9?7jboUbKTkoT+T(VY z>{nC!rN5NSZO=B4K2ml1)c9BXZ>2qajeXq9(*FoN18z1uL$bKcTLf(8 zO6;SLdOkYuu(1b3HHa|Ck-61Asr=gUQ!Rzg(Q1SiO70N}b4MBV3{a4;*)nt;5{!Bc9QE z=s0dC2R&`~%@c`?ag5kb&F%f%GGqd8;{thL;)T63=YV9-gX&)=W!YP6ma{=)6GM`LZ1q zb9u&5tJC{Gzh?psPdi+%h!^O|ca-pQ|3uEfu5I|Uw9Jc?ASy-STR?vJ-^!Rn7u`!b zqV~S9;otf*j_A>1mg~O{k1qHAtBz6sWH-6b&Th@PA5fi~UIkV`tvGr>Q+>sY=0ga` z2K?-ek(ITxwihhy%(jSDDx9s-Lt-%Rsl~y(_z2vX-Z^x@{PzG;@(-?ddQZ4ZaBHT* zsP={o2ReiinKKjQXrLY0v*)b!Jjn+>ftv;H(YBZ$gL8@#isx$|!tC4@ml6a^B3;-d z!ehieJ-=*i8=+yjqtkuCCeNRHogDk%)RIXjCe+Z4SO5K2o?A?8%1Jv+a;B+V%F2Tm z9Ean0CEHRm=lSI;(}oD$cRn_f;}L0yVuwur&cyENR?Eq`GP?N{odAYl{eHA+!~TVZ zQcS9n-HR|p1p_DbZHt|NOD+t3qT(gAth-*WRvaaI5Y|_+x?I0D?np~3IeC_{?aUL?4VdB+AuSas4>>i)Oh zPPpz)7&FaE_Gp>0bLaW=<*JPxx*UdKU=5)gw%HAT#4TXbXP@pWogEqJ(&I&M3ejuz zqXxS^D)uo#-*JcmYhsP_Prote^NHj z_z~}WZZUC@1Y9YpN@SIyT)aevJ%RP;KVpp-tVr@r!aS69EC3W0@+yxTE7gCJ&b4ZGdkjl(tbLk$7bvZn=hvW)C4VH zgyny?vfA9)`RIuEhJHYCIGBLu%eaCrc4h6Z4?am0P*_?fVetVAEmXlAI&fM7F{!bcjtn+@(0tuO@#V-)*h0E+_AJ~Ztwt1yRl8gIit98C&Xac??U^~GnU}4a` z3Ax@78=>;?`}_bA$h*f&dV`}Gz;*IptUpw$XlyoT3yh~a1wxNIGC*AdXQ8uaW&g2E1>Zbu}dv zG@r<~Z{HOY`b45_4ov%n3Z#fN>Mc-PoGd>$(#Qn50z}LI%Ch`t>*4=5dG;^w;~yG; zPDYj!LA{SnuNjDd!vL!joL!;UD3(ZDXkamh;%xN}_*o|x>5|O`5pwVZYY*Ns#OAV&0FR7JTfq&sa z=y*~;M+DB*H+j83S8yTsoaqhp%!84LpIQ+Pv7Z7pdK2$*n%{o}=}!{IH{?elAff98 zZUjy!jp=?xJEY_Yq1m$CoG@QZSw!0QCV~m6VQKSn#|T-V?@!<~D#KrZ9f%VG=g%V3 zYio8z-+EjT1MVLa3wg>{+=3T9ReWglcL@!3fyM(#G1xITW!>f;C}lrq(ai}=idFg{ zjP;O07BX3J|IT6=L%d15x=$e;#1rT1DGp8L=FujYku$Gqfu%95shatpzZtB-_j*Tm zTTLj#60gF_!W+pZsS2n0&B5mwsLcY&T`V^|4hMaIOQ#K)k`{KoCQ47>X1T(j4_2=B zoN{-c`U|%k&mngeTdzMvlFY*=78Eg+?!mF8YGM_=ehISRujmIaF*h~2(RjXe_!Wg= z7tdKUQMNStWst6|JJAhQq<<#d8>h;>Ui^zknk?m~8IWwaO@JrkWECWt|HFd4L@QDW zA%Wd1lof^{&#rQyScBF{L^3E-qltIfbGVu@aPg3*dXWc|+`A@Vt%H*xER)~W>C^e{lmdb(6K4{Y zrY|I&54`@^plmVl%^wZBN@6j_KmPR6VtFU+yD9DDm=+)fo&IrOD95u@_+)&6lneDT z_*Y1b*Oj+}y7*ja3T5bO z*J7*d83xTw(>dIkd z-mt)pR`*e`139B09kAoM3)+7O7@9@X%DU^1^x6DqDWdfg?e$A(?MGrpvDrM>9lg7~ zvzO6mhA#Kk3>_{n`=GeqpR@A7(nRs`L$QkHP}JyV?L4u@VGQCoD za-f;wdn82{$8W{$31!z&7Y8f?Kw||PqCPLd>#0b*3B%bO3T|UWpD1-ZHQVAl>so2G zDd>3{$n$WJ1YNfMdvh@@#@veTg>v?nF*dj`JDxu8qhu8|h|jyd=O1K{X2)An%};2U zz4lohpRB%ge1_DYglD}yTqG*Qf#t*TvzK!+FkZ*CIwHu68dYe@`U(}p-io?nhz$hWoW;L50L#R zvAjMndxjsS4<->npAj49#JBrA<`Sn>S33H2CzQ1@2FhH`fXa*HV#R7XD-R~ysRJT zt8Q4#gZO9m&H|Dw4!CQ!9A2- zn*bN5HxEAR!@Mu##JWxCDI@MyEn>uAxu{4u7ojF%pUf>Z6BOvT&XJBYdbuXM$a{0- z%F7STR{nOQe+^DGNy=WW=rTK!awDyX>QdWKpS3ix^>5{XS@wG}Cw~BTM$e5apfGJ?B-JQcj(Y^3}yrfF=v5_~&EQCqLaE_aos1-o!f0 z8(UlcV6d6Dj51u(OA6%+H#RbmL%xx*|FMAn2f+KEd?C+nTV^yOqNsQ(d3c=xacL>C zFJ8X}OtY|F$lcc4rnasv>1oxI4xf+J1qB6xW!(Z;)t8`y0ii8Z_W5fqjtByca zSBuA{xHd`@YE@|4NEA?p#&m}F^?fj_9~NcNDb%|ghrQ{ZwV;1fXzZ49Z(bY7SF@gW zE6c~*S4ER8O#^V-#3wRGAwba3_E$%LaC?KjqPU&DhktvJ;RpOR$cV78K_LFDvR=h& zb3KPvDuKe6J&4NTarTU{=_vV{e~n1kgbf&NL7L@$0N9~fE_%H58TZQ_T~iZVP!8#7 zQv$I4`n2xvpJ})~;GjVJ8lYAhq$w+K;2`%QUUI5f5$oxC;f}2G@a37h&f*$|E!Cy8 zMkVzDmJUcIuMYPDy8}A?qoRys7Y4#%khu%v)ucI{Kj8u~bYFkOEor>uo6Jn71n7yk zDA{hC7E%RHCUpl$`??4%m8ri?n$_LiXo)wq`UGIp6MmSwt;H!5-~?+#>$Zmv-W=mp z1053)?H8g=G&#yNp-LW|tkAK#yF;YkqFoP*jO(mr8wWpJR>gmCr)SpaS&8d`4sxYatHzxi>+MfNYit$W(q`gig}vCl%vn) znY5}FBqys8ea#LzKSnPfcjOCC-&%68(AZxnOa38w^ut_r5`gwxojgik|!q>{1o##unMcR z0e}g}^|6*@LNJY4;36Xt_06aUL(vG%p6)F-;lKF<+O3(}oelQ+pG-n@7T^I0X%b%z7OSppovgy04uiWU6{3H#b_(B~M1ep_NtC$USC)RIV?Ra6y2pO5 z=1iFZwmd+2FwIulAXr+m9mA;~F9)cG=-ojfvR!AmyM@xX- znjaNYp+yQt{2DTzahNBc#rXaglTR?>xnQF;(o~*!-lx-|{9_763#dC9vL6YG7?0c)TqBKX?|y zEP-=As{#1_)mAj{nin1brx>hvgb~{RoGtqb0Rgd{tzZY@NkZW$d4#c%O=nP{ z4JQmtUIsRL#8SIv33Te307OHiwal{EXafl_R8#eb(~;}F`VSERAH)Sbh71gAX7gqE z4c1N}B{U=fBT+#?%x@i!B2f2BTb3f^_tpYhE)KjmDX_B+-0bDZmQH@qXmt)9w;a=; zH8OhleUXW9wUwi1qx-PRVXyPwXre4(Mu_=J{($|NTm7LQmCPPDE>9kC?}22cTHlY3 zR+S|Lpj`|Nx0r#)D`(X3Ez~g-2^5WZ8ORkCKO1G#xkGsH`-l$L*2dk_(*xWS$ys53dtmkT@!A^~;uKLAw-%6BVBuhAHX$)7_qb>jh(x@xuz=VHU zh4boKm1~fS^#P=1cpwr-a7K(0*dJVbTH8Ti!MPb zmhdMXp#B9W_Z2rm3+g4NxAbrwmi?2p!4Lh+p8n9?JZIhC~yQE0$}z0rwp(H+N0H z%a=VAm{;e^$rT$JUhQb2@3^_qVBsX&3#4;?yuooH+GsU3EP&TwvvJd)S)&m(pzwe!%b*7PxU9`(!=RWcb%nRZ|l;BI8k2orox@2@j&W&Sp_;2Gr2%;xDT z4X{ZD(;xNTmdVS#RzZfn3@TE<*#3z{7rlAAjsncjyss(J%zwA0F@Y@U?&b0K+h{zP z3%C=6huj*KzJfwC_&e5F<^7EJbRNR`aJ`+iHv{vAWBEc@DgZ<0t((RpDX=<9VSR!{ zFu)u&5Vaf(SSp717cb!HARpVWS%JY~xi;%_Ow7!EH^=0PC2>KM6p5UGcF-0Qf)|Ti z^zG^j0eBYwBzjBWnm&SJW9`5THtf0`k-%zr0)RY!_(fEJ4QF`utX9kX*7LPuk*?@W@EfO5IU3EUXY-j{&=(FyH28W`N4t zJgg+zIA}qKLDt4;$wv>jDll7e z7#+?d2qmkKo$XTek6jbfj&FDjgW^M zr=A+)XMiJ1i6%NUSZ;{rbYZ}JTivv^M-y+7RO?zr(8m$eYd`@SGza+e8W zwfT||ILfcN8Lh#FWH@H!A&?UcB_xu<>+x^o(7MlQ5X8Gw1RZobXkcIo0<&XmT<$L;&?eRk@2h?cZjc@bJKB%~SpZf1G zpFDZCj3YiLeht6fX5@vLYTJw2wS+S#X+js2QR%!g)&1F5Dy=RBLs&oyXb@oEI3DJn zUbSRZv?oL?I!zMmE>PtLs2(VP8cBBOC(M$7YB(S4L|D$&G59jMqkJ2HrLB8dRY9K% zG+U)+p*&_iSK2M|opNiQpB0|Q(yS$T*I$TpRq~A^!}Kr+~8{t8nks=04B&6JCr@nI!P8|@Mo`J+&D>#E9Kn_5|X4 zpIpRkX>aELvmBY9H!PB1AN=JPo?-x;kD`Jr=lf%PQ75`0q*0~Hq}=Fy@z~-9E-M^?>tJ*A%&N?3Lp&9D8lyo98%}SIP|%FG908+PR2`B&M4k zG}q7FNil9KNZwAnga-Olndi<1a-(g0wjqv4Hn(ev7ecqWV#()u-Rv_cdbAQ68a^7U zuVCDy=HRxZuhw2;MTR(z4>ib#h%HysPGubT_mP>ES|ZIbtAoca7UXAaOUTHoGbq=R z`hSXXg6rx-5J7cQp^??X*A}P9???W(>0m?2|4aw#Zt{MOwH}W-fqe7X#$;wPuK;74 zmIi5N`ls&RXCiaaMYT8+PloNU)#wih_ zua|Nw2T2y~xiLw#v^JjVjGKx_@)%jD#ui&aQ4A9Ttq0C#vzGV?E*MIOsz3(|g1@|V za8~`TcSpkB^J#JI)?V6^l0doE79KJ0RDQeQKa^Ruwh8|$J!EsbP%lQ&mtM;As6+ccZV> zekiWIGA5d*;6Idw(`)2AIV=YfL9cp^$6ldyS5&{MuHzIIZ~W*^CO?CvvzK;=EJ>e@ zp>}GKAmVQAN~dhT=P8v~VXc3P5S36YEQmMn=C@rFI`~X{GSo9#mKeS#1onNS*!M^I?4z+^v3P&j91GowbQKN=XPG~F9N+7h+;dqc$X4@+iRY6X+5$AB)b80+z0&?* z=SB5esOKu#$TRM$hdl1h{yR_U1mk}YWdkY5&3rKo&zc_#)1)YbB_!}>OEBmiY1~P_d})&?bU5D< z)eZR?eCt0B6pz1UlC!zVx@}BC-^)k=!i20ly#8L*{#SGZ7D^Snf0r0XD9WYmY$s*wNuPX>lJ;G!Tw~+=7CNdiG*%*^ zCMcl77qG|xI{ISG+7hr?f_Xh$ZxgGx05sVbs0HZ;_B+kU>ZR=50Y8}4t~kN)Kx0M~ zs2wNXvQjIRDs2!5_UGH@0sy(`D!`aAC*dHsKuXA|ZEtj^DU@8axMkfP(HZqiRK%DY zo=VHebmxk;*S5LrPm`DFc)*vcql{d1#KsCLCJo@u_+{x{#NM2=2cLGX2bxY`1M!{F zC!Ds!k$=bo|8pJw|AX83fACPMiT&R|Jh?F(PbI1oq1)mPDA%ru3Hc4FEAh*}zZIM9 zje(CDpa=~NrG88Up7*ocTbx|tcJf&24~h7~d0|*BnC+W~hY0HGKxKeFg+#QLBWMG7 z0D)1FP+x@(6a&NRK+^f$;r>&X!x+HeYpgP&WjI+&72lucZYq|uMDbn$=W50NanG9; z`|z(jZTwRIjFk(W7soJrQT)oz`|lXBQyp>T^#7JNrz_hsu0P8dbSb8w%fG>+gSKyP z6L~d5ZF{0RdRQS)pT7}mt}Dgm`!D=gxMf|D_J88NA{hTG?-j(PPRZ5&PJ~oVF zqJy5xNZR^x^VO-zar8oC%k1BG$4&7m^Kv(Ig71~#O;Glqp-~?!DgSg+59=0 zvLo5}uQ_{p^x>CyG<$1=$PrguVQ4_0o(Sd3jp;t*B+9}n`=d}Am@L6GbrOeEb*^i9 zlc4aV#ww3heplRA>q}WpC&HKJ&I_HPU2Y%8xgsNt8@C6+%iwCmXnWw^zLmgpA&vNj z`~P#Ty#*PWRN?3hzEZ(_EqHPjHXN2qrdCTmH<-0T!5)}gBS)uAGkDDp&n>TZtl-~2 zpJUBAYf0|)=7Rq?`J_(H#t~9wnd}x*KYsgNF>S%=EHnFC@VHL?N${*Qe-op#ZiybR zb^jX@-dJ~!yQAU(Sl5)+VaC%SK>|Qc#Cw9U>X@r@!Q_8r-X{zGzccSK+;KNkUGS^s z(z=4l>bxd;Q$3I7GxBE?dsnCuT;jUy7D}DQ>i+fSgrTs6 zHS*ov>s7>0?(VQAv0#7H^il0T39?PGkZZ#~GPckmOh!p5->tvPC5OVDZ;PD=?8h-j z;WN&ffBJ*XQ5%I2DFQ?KiS$6ASSW|!f})Ihp8D!bYq5UBZk-D2(D`dCkJrTGj@x?t zmwh++2`!lkjVL588YW2JrHGT4kNK4RUy<1;iVWm@aNJcu1I-fBpQHN@j+z2e*=a#?(T3bYdci~t_SL98=Cl_Ny6dzOx~|)He->Oc>e(?!kGWl|-jMl&0)}%J zx<^HdjxQz*?M>I9@b|0KguhfJd_4HTQ16`6e&X?+ zkycPO3yV2s8DSohs^LU*x19Kjldjry)NTmoy@nw&8eJtxNcf22>QdDBzZ4I#{z%Kz8yb$`kI>ai|>j~mO-p}`aP7= zvaN*?pR?|FvC~xu*DtzX>iW8JBgqTr@5X)(O(@&u+wzWhR|qR>@uXjO>c3JMgEecB zza}v~*I&$75U{^0{zjVmhI8QU?1@4yvg4;rsHHYS&|uEO&L^8>#Z4}Y0=d-Av3s;f zx8tN$*0+Qm`W)dfeUzw(u-UuUFm%uOTwPX~FL4umn!lF!uq>8ElG|BXsn)TYLT*Db zfqFO#^|R46@jK7@$J_sFS2R9xT7C0;zW!*Ef4}(aDVavq7k>v;?exF$@z@oq`^wW} z?!;>3r!P6d^ZN9p37cGsx@C(lOP~Cc@pSpcZy|LT&-gw$U}`msA^Dv + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TCPSocket Member List
+
+
+ +

This is the complete list of members for core::TCPSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data)=0core::Socketprotectedpure virtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out)core::TCPSocketvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1_t_c_p_socket.html b/html/classcore_1_1_t_c_p_socket.html new file mode 100644 index 0000000..d6e7300 --- /dev/null +++ b/html/classcore_1_1_t_c_p_socket.html @@ -0,0 +1,240 @@ + + + + + + + +My Project: core::TCPSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TCPSocket Class Reference
+
+
+ +

#include <TCPSocket.h>

+
+Inheritance diagram for core::TCPSocket:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPSocket:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + +

+Public Attributes

+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void onDataReceived (std::string data)=0
 Called when data is received from the socket. More...
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPSocket

+

Provides a network TCP socket.

+

For accessing TCP network functions use this object. The connection oriented nature of TCP provides a single client persistent connection with data error correction and a durable synchronous data connection.

+

Member Function Documentation

+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSocket::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (BMASession) and will output the detail information for the client socket. When extending BMATCPSocket or BMASession you can override the method to add attributes to the list.

+ +

Reimplemented in core::TLSSession, and core::TCPSession.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_t_c_p_socket__coll__graph.map b/html/classcore_1_1_t_c_p_socket__coll__graph.map new file mode 100644 index 0000000..2218e44 --- /dev/null +++ b/html/classcore_1_1_t_c_p_socket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1_t_c_p_socket__coll__graph.md5 b/html/classcore_1_1_t_c_p_socket__coll__graph.md5 new file mode 100644 index 0000000..31c7dd4 --- /dev/null +++ b/html/classcore_1_1_t_c_p_socket__coll__graph.md5 @@ -0,0 +1 @@ +e572fa0263f9b6d26b0c97a9da58e008 \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_socket__coll__graph.png b/html/classcore_1_1_t_c_p_socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6eddb9ce72721fad0c3730b389a50f2a0dcae550 GIT binary patch literal 24612 zcmaHT1yo$y5@qA=)QA+%_wY1j6~|%uVzbb-NLj{at3L79{&3daYthl0y^uR zcM~g{Y(rppvXBJL$a`HH(h&55)>0XCF?c#W90W0VvfTo5QFyW+|n zCZz`GTSY94ED@4<>&h+fxx-tt`NJMy$eKWdtNcQXel|EA*{hrG`ug9QUR4gZ3?Z-> z@Q^c_(e4nVny;MPr=pva>v+(!!Y&wuz4S@t4%)UT{0)jio+i0eEg_MX z-M~EVXa$!B4KJ7VU++ASUVD$58XS4{SwA;t>v2!M--HHM%!UTa~BrGWMd}z=Q2a|E=`_-cJj>MP8N}b(MYYf zDH&r4UFd>p_dr@no#4g^H!C*f@P5cxjU6lmo^j=I2BM%tZDQ9`|nX(Ww1n z!v|)+W8>S=u2g5p1)dZ)y24CyE7uUg!!a>W8Ar{e(q7sVpEs_ zs_p6NIb2ViYa}H|A}zwrDdIQusQ40(frd+L!d7USPft{qj(YCk^Op^akFU^duUke9 z0{weXLt&oBDmEoem{Dgi=t_T4Xwn67=3{aQI$wU3IA@V33Zpkh{#9UqIW%rMef+~mMFPaVfoQTi{1e+M%z1X+#Mpw&TnJ`uCtAGVEt-Z`f) zLwv+N&!{N=oEqHw z{Ixq!%0X1hrZ-(Oj`)cqs1GuH_%Ukkdh3IQ>ae^j8S%O7G!2>|!lXb_JY9!F?X%6v z80^^6XaSPG7IW+H?IcN`Ze}`L!{?LqyCC6DF(I8@ulksyLC;Z5W~P4zye97>^{^_U zQaU^S9s$pbAbM~@B;48jQ5iFy-l;>v<#;2Cn|Zh8E7frJH*NT_ozrNq>11&ulpNRK zJmVxewYXroBEnR->*NQc%{R@L2L@Pzq$zb#fgy0RuUHfe42;q9{e^`KNi^WoxKM)Z z<-rr}x*`|kms0)Xwf`^g8kiur3%qoPNl}ndbg?c8 zL`6kin@-Fpiz4E13tg?TIITaIHl3_>q(cORGwW4abym&ILBc}|Xz3g+2!W@qfEGPt zFSds(Y;^>3Ky7W~`6Ua8kB_#b=xL(#z5$h$;#SLWAT6yJ5XjVwsQRYKLqLzy@{(Dd zp0{X5OQ!fjnU>wEQ?J1HAjVqkuxGYpiN}|ZfJRAbbEOrGjr}9Pf+0lVTR>1vIko&FQ<$WjAa8mA?HR2Lce_?VH+%LT9FMnl@=&=ie0 zUh~KoJ(dPIwju~f5_z0

qdMd-kv7Qj<3>Jnm1LKY;~WI<@a!_j6y3 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 + + + + + + + + + + diff --git a/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 b/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 new file mode 100644 index 0000000..b73a6ce --- /dev/null +++ b/html/classcore_1_1_t_c_p_socket__inherit__graph.md5 @@ -0,0 +1 @@ +c7cdf0e9af3db54490f901b31d8f5ac5 \ No newline at end of file diff --git a/html/classcore_1_1_t_c_p_socket__inherit__graph.png b/html/classcore_1_1_t_c_p_socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..466b4d4304d6858bbc29c541ef2e1720aca6c53f GIT binary patch literal 24405 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 E50w + + + + + + +My Project: Member List + + + + + + + + + +

+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TLSServer Member List
+
+
+ +

This is the complete list of members for core::TLSServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ctx (defined in core::TLSServer)core::TLSServer
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept() (defined in core::TLSServer)core::TLSServer
core::TCPServer::getSocketAccept(EPoll &epoll)core::TCPServervirtual
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutDown (defined in core::Socket)core::Socketprotected
shutdown() (defined in core::Socket)core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address)core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TLSServer(EPoll &ePoll, IPAddress address)core::TLSServer
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSServer()core::TLSServer
+ + + + diff --git a/html/classcore_1_1_t_l_s_server.html b/html/classcore_1_1_t_l_s_server.html new file mode 100644 index 0000000..64e3d41 --- /dev/null +++ b/html/classcore_1_1_t_l_s_server.html @@ -0,0 +1,317 @@ + + + + + + + +My Project: core::TLSServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TLSServer Class Reference
+
+
+ +

#include <TLSServer.h>

+
+Inheritance diagram for core::TLSServer:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for core::TLSServer:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TLSServer (EPoll &ePoll, IPAddress address)
 
 ~TLSServer ()
 
+TCPSessiongetSocketAccept ()
 
- Public Member Functions inherited from core::TCPServer
 TCPServer (EPoll &ePoll, IPAddress address)
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString)
 
virtual TCPSessiongetSocketAccept (EPoll &epoll)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+SSL_CTX * ctx
 
- Public Attributes inherited from core::TCPServer
IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from core::TCPServer
void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TLSServer

+

Manage a socket connection as a TLS server type. Connections to the socket are processed through the accept functionality.

+

Constructor & Destructor Documentation

+ +

◆ TLSServer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
core::TLSServer::TLSServer (EPollePoll,
IPAddress address 
)
+
+

The constructor.

+
Parameters
+ + + + + +
ePollthe BMAEPoll instance that manages the socket.
urlthe IP address for the socket to receive connection requests.
portthe port number that the socket will listen on.
commandNamethe name of the command used to invoke the status display for this object.
+
+
+
Returns
the instance of the BMATLSServerSocket.
+ +
+
+ +

◆ ~TLSServer()

+ +
+
+ + + + + + + +
core::TLSServer::~TLSServer ()
+
+

The destructor for this object.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_t_l_s_server__coll__graph.map b/html/classcore_1_1_t_l_s_server__coll__graph.map new file mode 100644 index 0000000..c1cf8a9 --- /dev/null +++ b/html/classcore_1_1_t_l_s_server__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1_t_l_s_server__coll__graph.md5 b/html/classcore_1_1_t_l_s_server__coll__graph.md5 new file mode 100644 index 0000000..4ed75f4 --- /dev/null +++ b/html/classcore_1_1_t_l_s_server__coll__graph.md5 @@ -0,0 +1 @@ +7e50a7dc450b2ff323f922e522dd0362 \ No newline at end of file diff --git a/html/classcore_1_1_t_l_s_server__coll__graph.png b/html/classcore_1_1_t_l_s_server__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..58b54c017ddf148666a7b01730d0246b26454d10 GIT binary patch literal 48992 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 + + + + + + diff --git a/html/classcore_1_1_t_l_s_server__inherit__graph.md5 b/html/classcore_1_1_t_l_s_server__inherit__graph.md5 new file mode 100644 index 0000000..35ebb06 --- /dev/null +++ b/html/classcore_1_1_t_l_s_server__inherit__graph.md5 @@ -0,0 +1 @@ +46c4ef6e523046cf3d2bb41300912011 \ No newline at end of file diff --git a/html/classcore_1_1_t_l_s_server__inherit__graph.png b/html/classcore_1_1_t_l_s_server__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..90345266dfe2b00b4eaa616d2fb736eefe3ef0a1 GIT binary patch literal 14183 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 XhAJh2r + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TLSSession Member List
+
+
+ +

This is the complete list of members for core::TLSSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
onConnected() overridecore::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
out (defined in core::TCPSession)core::TCPSession
output(std::stringstream &out)core::TLSSessionvirtual
protocol(std::string data) overridecore::TLSSessionvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSSession() (defined in core::TLSSession)core::TLSSession
+ + + + diff --git a/html/classcore_1_1_t_l_s_session.html b/html/classcore_1_1_t_l_s_session.html new file mode 100644 index 0000000..7b2c075 --- /dev/null +++ b/html/classcore_1_1_t_l_s_session.html @@ -0,0 +1,333 @@ + + + + + + + +My Project: core::TLSSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TLSSession Class Reference
+
+
+ +

#include <TLSSession.h>

+
+Inheritance diagram for core::TLSSession:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for core::TLSSession:
+
+
Collaboration graph
+ + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TLSSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &out)
 
virtual void protocol (std::string data) override
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

void receiveData (char *buffer, int bufferLength) override
 
- Protected Member Functions inherited from core::TCPSession
void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
void onConnected () override
 Called when socket is open and ready to communicate. More...
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onTLSInit ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TLSSession

+

Provides a network TLS socket.

+

For accessing TLS network functions use this object. The connection oriented nature of TLS provides a single client persistent connection with data error correction and a durable synchronous data connection.

+

Member Function Documentation

+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TLSSession::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (Session) and will output the detail information for the client socket. When extending TLSSocket or Session you can override the method to add attributes to the list.

+ +

Reimplemented from core::TCPSession.

+ +
+
+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TLSSession::protocol (std::string data)
+
+overridevirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented from core::TCPSession.

+ +
+
+ +

◆ receiveData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TLSSession::receiveData (char * buffer,
int bufferLength 
)
+
+overrideprotectedvirtual
+
+

receiveData will read the data from the socket and place it in the socket buffer. TLS layer overrides this to be able to read from SSL.

+ +

Reimplemented from core::Socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_t_l_s_session__coll__graph.map b/html/classcore_1_1_t_l_s_session__coll__graph.map new file mode 100644 index 0000000..a2fc968 --- /dev/null +++ b/html/classcore_1_1_t_l_s_session__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1_t_l_s_session__coll__graph.md5 b/html/classcore_1_1_t_l_s_session__coll__graph.md5 new file mode 100644 index 0000000..e716ec5 --- /dev/null +++ b/html/classcore_1_1_t_l_s_session__coll__graph.md5 @@ -0,0 +1 @@ +6f43cb3150be98e1ce290c7b0baf2e3c \ No newline at end of file diff --git a/html/classcore_1_1_t_l_s_session__coll__graph.png b/html/classcore_1_1_t_l_s_session__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..47d4e623f1a97fca6c56caf45bd0773c2ae1f774 GIT binary patch literal 56241 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[)@iQR-&2E=tq{5^DJ~E0zXCPZTVY=oN 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 + + + + + diff --git a/html/classcore_1_1_t_l_s_session__inherit__graph.md5 b/html/classcore_1_1_t_l_s_session__inherit__graph.md5 new file mode 100644 index 0000000..32a1c86 --- /dev/null +++ b/html/classcore_1_1_t_l_s_session__inherit__graph.md5 @@ -0,0 +1 @@ +c14323e231506e30daa0601fdf316427 \ No newline at end of file diff --git a/html/classcore_1_1_t_l_s_session__inherit__graph.png b/html/classcore_1_1_t_l_s_session__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..25938ac9eb2cdbbdeb661366974e7a04fe3f599a GIT binary patch literal 13241 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_terminal_session-members.html b/html/classcore_1_1_terminal_session-members.html new file mode 100644 index 0000000..ad07f24 --- /dev/null +++ b/html/classcore_1_1_terminal_session-members.html @@ -0,0 +1,127 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TerminalSession Member List
+
+
+ +

This is the complete list of members for core::TerminalSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
clear() (defined in core::TerminalSession)core::TerminalSession
clearEOL() (defined in core::TerminalSession)core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onConnected() overridecore::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
out (defined in core::TCPSession)core::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::string data)core::TCPSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
restoreCursor() (defined in core::TerminalSession)core::TerminalSession
saveCursor() (defined in core::TerminalSession)core::TerminalSession
scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
send()core::TCPSession
sendToAll()core::TCPSession
sendToAll(SessionFilter filter)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown() (defined in core::Socket)core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
+ + + + diff --git a/html/classcore_1_1_terminal_session.html b/html/classcore_1_1_terminal_session.html new file mode 100644 index 0000000..fbbf360 --- /dev/null +++ b/html/classcore_1_1_terminal_session.html @@ -0,0 +1,259 @@ + + + + + + + +My Project: core::TerminalSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TerminalSession Class Reference
+
+
+
+Inheritance diagram for core::TerminalSession:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for core::TerminalSession:
+
+
Collaboration graph
+ + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TerminalSession (EPoll &ePoll, TCPServer &server)
 
+int getLines ()
 
+void clear ()
 
+void clearEOL ()
 
+void setCursorLocation (int x, int y)
 
+void setColor (int color)
 
+void setBackColor (int color)
 
+void saveCursor ()
 
+void restoreCursor ()
 
+void NextLine (int lines)
 
+void PreviousLine (int lines)
 
+void scrollArea (int start, int end)
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::TCPSession
void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
void onConnected () override
 Called when socket is open and ready to communicate. More...
 
virtual void protocol (std::string data)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_terminal_session__coll__graph.map b/html/classcore_1_1_terminal_session__coll__graph.map new file mode 100644 index 0000000..8c4f845 --- /dev/null +++ b/html/classcore_1_1_terminal_session__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1_terminal_session__coll__graph.md5 b/html/classcore_1_1_terminal_session__coll__graph.md5 new file mode 100644 index 0000000..eadbf60 --- /dev/null +++ b/html/classcore_1_1_terminal_session__coll__graph.md5 @@ -0,0 +1 @@ +3b32eda457929e77d16d38fa0ef6a4cb \ No newline at end of file diff --git a/html/classcore_1_1_terminal_session__coll__graph.png b/html/classcore_1_1_terminal_session__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d75eb7429969b069242e4e4bd69a5d10fb056a42 GIT binary patch literal 56564 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_terminal_session__inherit__graph.map b/html/classcore_1_1_terminal_session__inherit__graph.map new file mode 100644 index 0000000..9cdcc25 --- /dev/null +++ b/html/classcore_1_1_terminal_session__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1_terminal_session__inherit__graph.md5 b/html/classcore_1_1_terminal_session__inherit__graph.md5 new file mode 100644 index 0000000..fba6859 --- /dev/null +++ b/html/classcore_1_1_terminal_session__inherit__graph.md5 @@ -0,0 +1 @@ +7329afadb07bf9f01a6fcba4e78fa4a0 \ No newline at end of file diff --git a/html/classcore_1_1_terminal_session__inherit__graph.png b/html/classcore_1_1_terminal_session__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..63d1a3003afa1c7fb7fa214079501243959dfa91 GIT binary patch literal 15888 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 A)&Kwi literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_thread-members.html b/html/classcore_1_1_thread-members.html new file mode 100644 index 0000000..cab9510 --- /dev/null +++ b/html/classcore_1_1_thread-members.html @@ -0,0 +1,90 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::Thread Member List
+
+
+ +

This is the complete list of members for core::Thread, including all inherited members.

+ + + + + + + + + + + +
getCount() (defined in core::Thread)core::Thread
getStatus() (defined in core::Thread)core::Thread
getThreadId() (defined in core::Thread)core::Thread
join() (defined in core::Thread)core::Thread
name (defined in core::Object)core::Object
output(std::stringstream &data) (defined in core::Thread)core::Thread
start()core::Thread
tag (defined in core::Object)core::Object
Thread(EPoll &ePoll) (defined in core::Thread)core::Thread
~Thread() (defined in core::Thread)core::Thread
+ + + + diff --git a/html/classcore_1_1_thread.html b/html/classcore_1_1_thread.html new file mode 100644 index 0000000..2049362 --- /dev/null +++ b/html/classcore_1_1_thread.html @@ -0,0 +1,158 @@ + + + + + + + +My Project: core::Thread Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Thread Class Reference
+
+
+ +

#include <Thread.h>

+
+Inheritance diagram for core::Thread:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::Thread:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Member Functions

Thread (EPoll &ePoll)
 
void start ()
 
+void join ()
 
+std::string getStatus ()
 
+pid_t getThreadId ()
 
+int getCount ()
 
+void output (std::stringstream &data)
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

Thread

+

This thread object is designed to be the thread processor for the EPoll object. It wraps the thread object to allow maintaining a status value for monitoring the thread activity. EPoll will instantiate a Thread object for each thread specified in the EPoll's start method.

+

Member Function Documentation

+ +

◆ start()

+ +
+
+ + + + + + + +
void core::Thread::start ()
+
+

Start the thread object. This will cause the epoll scheduler to commence reading the epoll queue.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_thread__coll__graph.map b/html/classcore_1_1_thread__coll__graph.map new file mode 100644 index 0000000..5347857 --- /dev/null +++ b/html/classcore_1_1_thread__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1_thread__coll__graph.md5 b/html/classcore_1_1_thread__coll__graph.md5 new file mode 100644 index 0000000..9c70a86 --- /dev/null +++ b/html/classcore_1_1_thread__coll__graph.md5 @@ -0,0 +1 @@ +7f313cc00294ba573a468abe1e0a23a6 \ No newline at end of file diff --git a/html/classcore_1_1_thread__coll__graph.png b/html/classcore_1_1_thread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c39d4199d33e89ae757c4f45e32571d274c6ad6f GIT binary patch literal 3072 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 + + diff --git a/html/classcore_1_1_thread__inherit__graph.md5 b/html/classcore_1_1_thread__inherit__graph.md5 new file mode 100644 index 0000000..4719022 --- /dev/null +++ b/html/classcore_1_1_thread__inherit__graph.md5 @@ -0,0 +1 @@ +8ca33a2ec98fc4a19debba20b3f86be1 \ No newline at end of file diff --git a/html/classcore_1_1_thread__inherit__graph.png b/html/classcore_1_1_thread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c39d4199d33e89ae757c4f45e32571d274c6ad6f GIT binary patch literal 3072 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Timer Member List
+
+
+ +

This is the complete list of members for core::Timer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socketprivate
clearTimer()core::Timer
enable(bool mode)core::Socketprivate
ePoll (defined in core::Socket)core::Socketprivate
eventReceived(struct epoll_event event)core::Socketprivate
getDescriptor()core::Socketprivate
getElapsed()core::Timer
getEpoch() (defined in core::Timer)core::Timer
name (defined in core::Object)core::Objectprivate
onConnected()core::Socketprivatevirtual
onRegistered()core::Socketprivatevirtual
onTimeout()=0core::Timerprotectedpure virtual
onTLSInit() (defined in core::Socket)core::Socketprivatevirtual
onUnregistered()core::Socketprivatevirtual
output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprivate
setDescriptor(int descriptor)core::Socketprivate
setTimer(double delay)core::Timer
shutDown (defined in core::Socket)core::Socketprivate
shutdown() (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
tag (defined in core::Object)core::Objectprivate
Timer(EPoll &ePoll) (defined in core::Timer)core::Timer
Timer(EPoll &ePoll, double delay) (defined in core::Timer)core::Timer
write(std::string data)core::Socketprivate
write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
~Socket() (defined in core::Socket)core::Socketprivate
~Timer() (defined in core::Timer)core::Timer
+ + + + diff --git a/html/classcore_1_1_timer.html b/html/classcore_1_1_timer.html new file mode 100644 index 0000000..f520c30 --- /dev/null +++ b/html/classcore_1_1_timer.html @@ -0,0 +1,223 @@ + + + + + + + +My Project: core::Timer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Timer Class Referenceabstract
+
+
+ +

#include <Timer.h>

+
+Inheritance diagram for core::Timer:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::Timer:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

Timer (EPoll &ePoll)
 
Timer (EPoll &ePoll, double delay)
 
void setTimer (double delay)
 
void clearTimer ()
 
double getElapsed ()
 
+double getEpoch ()
 
+ + + +

+Protected Member Functions

virtual void onTimeout ()=0
 
+

Detailed Description

+

Timer

+

Set and trigger callback upon specified timeout.

+

The Timer is used to establish a timer using the timer socket interface. It cannot be instantiated directly but must be extended.

+

Member Function Documentation

+ +

◆ clearTimer()

+ +
+
+ + + + + + + +
void core::Timer::clearTimer ()
+
+

Use the clearTimer() to unset the timer and return the timer to an idle state.

+ +
+
+ +

◆ getElapsed()

+ +
+
+ + + + + + + +
double core::Timer::getElapsed ()
+
+

Use the getElapsed() method to obtain the amount of time that has elapsed since the timer was set.

+ +
+
+ +

◆ onTimeout()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void core::Timer::onTimeout ()
+
+protectedpure virtual
+
+

This method is called when the time out occurs.

+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void core::Timer::setTimer (double delay)
+
+

Use the setTimer() method to set the time out value for timer. Setting the timer also starts the timer countdown. The clearTimer() method can be used to reset the timer without triggering the onTimeout() callback.

+
Parameters
+ + +
delaythe amount of time in seconds to wait before trigering the onTimeout function.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_timer__coll__graph.map b/html/classcore_1_1_timer__coll__graph.map new file mode 100644 index 0000000..6c0f1fd --- /dev/null +++ b/html/classcore_1_1_timer__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1_timer__coll__graph.md5 b/html/classcore_1_1_timer__coll__graph.md5 new file mode 100644 index 0000000..4b53c42 --- /dev/null +++ b/html/classcore_1_1_timer__coll__graph.md5 @@ -0,0 +1 @@ +84af671723de2e54d3ab0390dcb1a973 \ No newline at end of file diff --git a/html/classcore_1_1_timer__coll__graph.png b/html/classcore_1_1_timer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4639e70cc0d68e6a4171c5bbf02fea976f960b61 GIT binary patch literal 16064 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 P9V92EBv~bH9Q?lkSe3bD literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_timer__inherit__graph.map b/html/classcore_1_1_timer__inherit__graph.map new file mode 100644 index 0000000..26a28a4 --- /dev/null +++ b/html/classcore_1_1_timer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1_timer__inherit__graph.md5 b/html/classcore_1_1_timer__inherit__graph.md5 new file mode 100644 index 0000000..48195b7 --- /dev/null +++ b/html/classcore_1_1_timer__inherit__graph.md5 @@ -0,0 +1 @@ +c3a133d113e20ecf0fe44943b6e9ae3c \ No newline at end of file diff --git a/html/classcore_1_1_timer__inherit__graph.png b/html/classcore_1_1_timer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..82b9c986ac9d24903e61e95a97385976a9be4518 GIT binary patch literal 7962 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 BZE64j literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_u_d_p_server_socket-members.html b/html/classcore_1_1_u_d_p_server_socket-members.html new file mode 100644 index 0000000..ea8d110 --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket-members.html @@ -0,0 +1,114 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPServerSocket Member List
+
+
+ +

This is the complete list of members for core::UDPServerSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data) overridecore::UDPServerSocketprotectedvirtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string request, std::stringstream &data) (defined in core::UDPServerSocket)core::UDPServerSocketprotected
core::Command::processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
sessions (defined in core::UDPServerSocket)core::UDPServerSocketprotected
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName) (defined in core::UDPServerSocket)core::UDPServerSocket
UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~UDPServerSocket() (defined in core::UDPServerSocket)core::UDPServerSocket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1_u_d_p_server_socket.html b/html/classcore_1_1_u_d_p_server_socket.html new file mode 100644 index 0000000..272ea5e --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket.html @@ -0,0 +1,260 @@ + + + + + + + +My Project: core::UDPServerSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::UDPServerSocket Class Reference
+
+
+ +

#include <UDPServerSocket.h>

+
+Inheritance diagram for core::UDPServerSocket:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for core::UDPServerSocket:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UDPServerSocket (EPoll &ePoll, std::string url, short int port, std::string commandName)
 
- Public Member Functions inherited from core::UDPSocket
UDPSocket (EPoll &ePoll)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
+int processCommand (std::string request, std::stringstream &data)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + + + +

+Protected Attributes

+std::vector< Session * > sessions
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

UDPSocket

+

Manage a socket connection as a UDP server type. Connections to the socket are processed through the session list functionality. A list of sessions is maintained in a vector object.

+

Member Function Documentation

+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::UDPServerSocket::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+ +

Called when data is received from the socket.

+

The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Implements core::Socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_u_d_p_server_socket__coll__graph.map b/html/classcore_1_1_u_d_p_server_socket__coll__graph.map new file mode 100644 index 0000000..4c019b1 --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 b/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 new file mode 100644 index 0000000..88ab481 --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket__coll__graph.md5 @@ -0,0 +1 @@ +df33ed281f718c9794f3e662f696454c \ No newline at end of file diff --git a/html/classcore_1_1_u_d_p_server_socket__coll__graph.png b/html/classcore_1_1_u_d_p_server_socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..935219f338a7ff64bf4d64d16c16f97849654ab7 GIT binary patch literal 23470 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 RP=FgxO<7y1TERN({{YezJ`ex^ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map b/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map new file mode 100644 index 0000000..324d8ce --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 b/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 new file mode 100644 index 0000000..8c596c3 --- /dev/null +++ b/html/classcore_1_1_u_d_p_server_socket__inherit__graph.md5 @@ -0,0 +1 @@ +cc1c5349569f38d7f74986f6f26326b0 \ No newline at end of file diff --git a/html/classcore_1_1_u_d_p_server_socket__inherit__graph.png b/html/classcore_1_1_u_d_p_server_socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f4689bb84f50872ca94e7ed871f60a495a9688a2 GIT binary patch literal 14649 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_u_d_p_socket-members.html b/html/classcore_1_1_u_d_p_socket-members.html new file mode 100644 index 0000000..a2bfe6a --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket-members.html @@ -0,0 +1,104 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPSocket Member List
+
+
+ +

This is the complete list of members for core::UDPSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
bufferSize (defined in core::Socket)core::Socket
enable(bool mode)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
name (defined in core::Object)core::Object
onConnected()core::Socketprotectedvirtual
onDataReceived(std::string data)=0core::Socketprotectedpure virtual
onRegistered()core::Socketvirtual
onTLSInit() (defined in core::Socket)core::Socketprotectedvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown() (defined in core::Socket)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1_u_d_p_socket.html b/html/classcore_1_1_u_d_p_socket.html new file mode 100644 index 0000000..38a8d38 --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket.html @@ -0,0 +1,185 @@ + + + + + + + +My Project: core::UDPSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::UDPSocket Class Reference
+
+
+
+Inheritance diagram for core::UDPSocket:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for core::UDPSocket:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UDPSocket (EPoll &ePoll)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
+void shutdown ()
 
+void setDescriptor (int descriptor)
 Set the descriptor for the socket.
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
void eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
void write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegistered ()
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+void enable (bool mode)
 Enable the socket to read or write based upon buffer.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Socket
+class {
bufferSize
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onConnected ()
 Called when socket is open and ready to communicate. More...
 
+virtual void onTLSInit ()
 
virtual void onDataReceived (std::string data)=0
 Called when data is received from the socket. More...
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1_u_d_p_socket__coll__graph.map b/html/classcore_1_1_u_d_p_socket__coll__graph.map new file mode 100644 index 0000000..71d4187 --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1_u_d_p_socket__coll__graph.md5 b/html/classcore_1_1_u_d_p_socket__coll__graph.md5 new file mode 100644 index 0000000..54162fe --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket__coll__graph.md5 @@ -0,0 +1 @@ +fa5993f45debd135994c4e83a921308c \ No newline at end of file diff --git a/html/classcore_1_1_u_d_p_socket__coll__graph.png b/html/classcore_1_1_u_d_p_socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..53d9a5108abbacc9cdebe09ce0149a7907bcc8ef GIT binary patch literal 16843 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 LMW#l|EcpKbAt2{m literal 0 HcmV?d00001 diff --git a/html/classcore_1_1_u_d_p_socket__inherit__graph.map b/html/classcore_1_1_u_d_p_socket__inherit__graph.map new file mode 100644 index 0000000..c3401fe --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 b/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 new file mode 100644 index 0000000..9396081 --- /dev/null +++ b/html/classcore_1_1_u_d_p_socket__inherit__graph.md5 @@ -0,0 +1 @@ +00f2a6a76bc28f9b4a521f3d0aaa44a1 \ No newline at end of file diff --git a/html/classcore_1_1_u_d_p_socket__inherit__graph.png b/html/classcore_1_1_u_d_p_socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..139255d4ec039e99a531c3aeb7c1dd02bd4a52be GIT binary patch literal 11276 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 T33f<%FF-*?S-MKnB>3L|ygp&) literal 0 HcmV?d00001 diff --git a/html/classes.html b/html/classes.html new file mode 100644 index 0000000..63be743 --- /dev/null +++ b/html/classes.html @@ -0,0 +1,94 @@ + + + + + + + +My Project: Class Index + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | e | i | o | s | t | u
+ + + + + + + + + + + +
  c  
+
  i  
+
  s  
+
TCPSession (core)   
  u  
+
TCPSocket (core)   
Command (core)   IPAddress (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
CommandList (core)   IPAddressList (core)   Socket (core)   Thread (core)   UDPSocket (core)   
ConsoleServer (core)   
  o  
+
  t  
+
Timer (core)   
ConsoleSession (core)   TLSServer (core)   
  e  
+
Object (core)   TCPServer (core)   TLSSession (core)   
EPoll (core)   
+
c | e | i | o | s | t | u
+
+ + + + diff --git a/html/closed.png b/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/html/doc.png b/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/html/doxygen.css b/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/html/doxygen.png b/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/html/dynsections.js b/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/html/dynsections.js @@ -0,0 +1,97 @@ +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 + + + + + + +My Project: File List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + +
 Command.h
 CommandList.h
 ConsoleServer.h
 ConsoleSession.h
 EPoll.h
 IPAddress.h
 IPAddressList.h
 Object.h
 SessionFilter.h
 Socket.h
 TCPServer.h
 TCPSession.h
 TCPSocket.h
 TerminalSession.h
 Thread.h
 Timer.h
 TLSServer.h
 TLSSession.h
 UDPServerSocket.h
 UDPSocket.h
+
+
+ + + + diff --git a/html/folderclosed.png b/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/html/functions.html b/html/functions.html new file mode 100644 index 0000000..90e7ccc --- /dev/null +++ b/html/functions.html @@ -0,0 +1,273 @@ + + + + + + + +My Project: Class Members + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/html/functions_func.html b/html/functions_func.html new file mode 100644 index 0000000..33631e5 --- /dev/null +++ b/html/functions_func.html @@ -0,0 +1,250 @@ + + + + + + + +My Project: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/html/functions_vars.html b/html/functions_vars.html new file mode 100644 index 0000000..e23844f --- /dev/null +++ b/html/functions_vars.html @@ -0,0 +1,86 @@ + + + + + + + +My Project: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/html/graph_legend.html b/html/graph_legend.html new file mode 100644 index 0000000..1625d6c --- /dev/null +++ b/html/graph_legend.html @@ -0,0 +1,102 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
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/html/graph_legend.md5 b/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/html/graph_legend.png b/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee31eeb7848f3fece8a1c2cab872e3c29022c93 GIT binary patch literal 20374 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 RXMz9#002ovPDHLkV1mhopSb`4 literal 0 HcmV?d00001 diff --git a/html/hierarchy.html b/html/hierarchy.html new file mode 100644 index 0000000..9b7d7c6 --- /dev/null +++ b/html/hierarchy.html @@ -0,0 +1,105 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+ + + + diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..04e75a5 --- /dev/null +++ b/html/index.html @@ -0,0 +1,73 @@ + + + + + + + +My Project: Main Page + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
My Project Documentation
+
+
+
+ + + + diff --git a/html/inherit_graph_0.map b/html/inherit_graph_0.map new file mode 100644 index 0000000..c50ca5d --- /dev/null +++ b/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/html/inherit_graph_0.md5 b/html/inherit_graph_0.md5 new file mode 100644 index 0000000..bcf5e5c --- /dev/null +++ b/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +51746708fc61da0c1cc4d63c4317826f \ No newline at end of file diff --git a/html/inherit_graph_0.png b/html/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..670d0af32bcbe38ad8be8cfe5140cd6a5852813b GIT binary patch literal 1693 zcmV;O24eY%P);t6U-aeogVu7K zP#CM?Rxv0Bo|WZp_S&3lZnSs^4_G<6sGxZUuiTx^@wl5?tWZCPzCe(=`Ee(s8I{>N zhWFmMVG$6uFDgLKCo&cC-tJzxxpR*`JbCl=z2Sjwlc}_TFiuvjbU^Rtb2(xD(;OXX z0n0gA{C-u(V4bF8^Yx_gAa|1E3)2oo|YIS;8PwCn1%-Pc?+dFyA4Nv@|L1suaZW4AqIKrCiPPMgj_FbNM zqZI>&M12e{N~c72EygG2YVXw;pO|arZ9b?4m&+Zd=%A=NvT#ONN?v{ItD;|GX4%a- zRDnVWp{z71Xj9iq|JK3KX+gvLqs zJgRR(fdoQ`HsqbpYd|5?9!q&FM;1>CAykb&Ki@4Di^XE`n|A*F6A?3MY;HRSA%sv~ zyqjSk_Ty^|DxU83w+=i|jzS30`i!ut-jS&{o;S6%RNXtZ-ftq=Ci2utU6I8T88ay_ z;CM4O{aV~06qH@s;zy5rEQe69sBK$=Ml`*|0000kmpeomU3l`MUA}?)$`lYn2(g}0 zac|*lUJj ztyvzXl(bh|NeXpQ*_Idca_U7lqNkEcB$DO4l$X+~oa_oz+1AqOJ2zCkqr6r0>Zr zmH+_A@3~N$>l#qiRcK?qz|q->3;-aL$peKn=IJ&}9fGLoMM)~t>g~MCp71UUKRQ;^ zD^@qvhw+~L9Hbo5++C_m$|QpqR+aNn8z()YdQ~HtwCrkr;}e~JyGl@bX?@R8)`7v2RsaCY`5V@Pa|ws<)OB>!-bsl+ z3)gL!XF0Tx-E%xP{o$+j)~Z`6?2ylnS6~1DWn=z@{6^KAL3?Zh(n8*q&V_4PUUs%B z975QuJ?buJSI*w@mD|PWjmK_Rv~;x9{CRro*FQI7)TP^WMV-~@n#3B;$3*SFUenqA zw@4(BO|Y6k0zj__006Q#?OJq*25&?RmB2o6pSfQn((a)q+^|5{U(1UR^LMqMnlq&O(vD@mt_}{ae$1V}*GP04x`dy_3G;Wgx1Bum!%Z0_B5cT!pgqiD>~ z&CTxPvjh7CLI|OvB+<``vAbBV?0oXW=EZ(Ahe=Le3)UXJn-Ss2;z{(0BBLgitvB~D zeVlA<>}f%fM;>%x5b76)9M1p%0Iap=*H?m8p8C{->bx=6gkul9?F|dT_@NsfE5gv}w^N*&itgNy3L0|@Y!eg`9WAB5&3`mgpeI9Nh n&O97Lgok5@@Nf(f9*+4J%CfX=6{9|&00000NkvXXu0mjf8mS}x literal 0 HcmV?d00001 diff --git a/html/inherit_graph_1.map b/html/inherit_graph_1.map new file mode 100644 index 0000000..e507c7a --- /dev/null +++ b/html/inherit_graph_1.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/html/inherit_graph_1.md5 b/html/inherit_graph_1.md5 new file mode 100644 index 0000000..e12ed10 --- /dev/null +++ b/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +065079fb059e24b7c56f7b36bc6be576 \ No newline at end of file diff --git a/html/inherit_graph_1.png b/html/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..997e9d2c0b68afcb82efb8d4bccda64d924f9d65 GIT binary patch literal 44042 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%0ALNTj-Fv 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 z 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 + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/html/jquery.js b/html/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/html/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * 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: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,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.1",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);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.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&&typeof b0==="object"&&"setInterval" in b0},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(bb.JSON&&bb.JSON.parse){return bb.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){var b0,b1;try{if(bb.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)){(bb.execScript||function(b1){bb["eval"].call(bb,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?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.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};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.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";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,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;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):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.nodeName.toLowerCase()]||b.valHooks[this.type];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)?aY:be)}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(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?: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}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||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.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))}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(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(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||a9.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 aG(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=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],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){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},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(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(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 E(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 al(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||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=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(!bc.test(bv)&&bn.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||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.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(a6,"")).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||q.test(this.nodeName)||aZ.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){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),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?bj(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=G(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,s[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]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.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]!=="*"?", "+aV+"; 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=aW(r,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){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(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 G(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(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(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{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,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.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(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=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=$('