From b6546cd0dd5b75a5d98303ed01a505752d565f60 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Tue, 27 Oct 2020 14:40:15 -0700 Subject: [PATCH] Sync. --- TCPSession.cpp | 5 +- TCPSession.h | 2 +- html/CommandList_8h_source.html | 127 + html/Command_8h_source.html | 124 + html/ConsoleServer_8h_source.html | 120 + html/ConsoleSession_8h_source.html | 113 + html/EPoll_8h_source.html | 157 + html/INotify_8h_source.html | 116 + html/IPAddressList_8h_source.html | 104 + html/IPAddress_8h_source.html | 110 + html/Object_8h_source.html | 96 + html/SessionFilter_8h_source.html | 100 + html/Socket_8h_source.html | 205 ++ html/TCPServer_8h_source.html | 155 + html/TCPSession_8h_source.html | 181 ++ html/TCPSocket_8h_source.html | 111 + html/TLSServer_8h_source.html | 120 + html/TLSSession_8h_source.html | 124 + html/TerminalSession_8h_source.html | 141 + html/Thread_8h_source.html | 121 + html/Timer_8h_source.html | 124 + html/UDPServerSocket_8h_source.html | 123 + html/UDPSocket_8h_source.html | 100 + html/annotated.html | 102 + html/bc_s.png | Bin 0 -> 676 bytes html/bdwn.png | Bin 0 -> 147 bytes html/classcore_1_1Command-members.html | 89 + html/classcore_1_1Command.html | 288 ++ html/classcore_1_1CommandList-members.html | 95 + html/classcore_1_1CommandList.html | 345 +++ .../classcore_1_1CommandList__coll__graph.map | 5 + .../classcore_1_1CommandList__coll__graph.md5 | 1 + .../classcore_1_1CommandList__coll__graph.png | Bin 0 -> 6202 bytes ...asscore_1_1CommandList__inherit__graph.map | 5 + ...asscore_1_1CommandList__inherit__graph.md5 | 1 + ...asscore_1_1CommandList__inherit__graph.png | Bin 0 -> 6202 bytes html/classcore_1_1Command__coll__graph.map | 4 + html/classcore_1_1Command__coll__graph.md5 | 1 + html/classcore_1_1Command__coll__graph.png | Bin 0 -> 3446 bytes html/classcore_1_1Command__inherit__graph.map | 10 + html/classcore_1_1Command__inherit__graph.md5 | 1 + html/classcore_1_1Command__inherit__graph.png | Bin 0 -> 16220 bytes html/classcore_1_1ConsoleServer-members.html | 130 + html/classcore_1_1ConsoleServer.html | 291 ++ ...lasscore_1_1ConsoleServer__coll__graph.map | 13 + ...lasscore_1_1ConsoleServer__coll__graph.md5 | 1 + ...lasscore_1_1ConsoleServer__coll__graph.png | Bin 0 -> 50318 bytes ...score_1_1ConsoleServer__inherit__graph.map | 9 + ...score_1_1ConsoleServer__inherit__graph.md5 | 1 + ...score_1_1ConsoleServer__inherit__graph.png | Bin 0 -> 16741 bytes html/classcore_1_1ConsoleSession-members.html | 142 + html/classcore_1_1ConsoleSession.html | 326 +++ ...asscore_1_1ConsoleSession__coll__graph.map | 14 + ...asscore_1_1ConsoleSession__coll__graph.md5 | 1 + ...asscore_1_1ConsoleSession__coll__graph.png | Bin 0 -> 57998 bytes ...core_1_1ConsoleSession__inherit__graph.map | 8 + ...core_1_1ConsoleSession__inherit__graph.md5 | 1 + ...core_1_1ConsoleSession__inherit__graph.png | Bin 0 -> 12628 bytes html/classcore_1_1EPoll-members.html | 100 + html/classcore_1_1EPoll.html | 453 +++ html/classcore_1_1EPoll__coll__graph.map | 5 + html/classcore_1_1EPoll__coll__graph.md5 | 1 + html/classcore_1_1EPoll__coll__graph.png | Bin 0 -> 5211 bytes html/classcore_1_1EPoll__inherit__graph.map | 5 + html/classcore_1_1EPoll__inherit__graph.md5 | 1 + html/classcore_1_1EPoll__inherit__graph.png | Bin 0 -> 5211 bytes html/classcore_1_1INotify-members.html | 101 + html/classcore_1_1INotify.html | 161 ++ html/classcore_1_1INotify__coll__graph.map | 7 + html/classcore_1_1INotify__coll__graph.md5 | 1 + html/classcore_1_1INotify__coll__graph.png | Bin 0 -> 12942 bytes html/classcore_1_1INotify__inherit__graph.map | 5 + html/classcore_1_1INotify__inherit__graph.md5 | 1 + html/classcore_1_1INotify__inherit__graph.png | Bin 0 -> 5272 bytes html/classcore_1_1IPAddress-members.html | 95 + html/classcore_1_1IPAddress.html | 147 + html/classcore_1_1IPAddressList-members.html | 88 + html/classcore_1_1IPAddressList.html | 103 + html/classcore_1_1IPAddress__coll__graph.map | 4 + html/classcore_1_1IPAddress__coll__graph.md5 | 1 + html/classcore_1_1IPAddress__coll__graph.png | Bin 0 -> 3342 bytes ...classcore_1_1IPAddress__inherit__graph.map | 4 + ...classcore_1_1IPAddress__inherit__graph.md5 | 1 + ...classcore_1_1IPAddress__inherit__graph.png | Bin 0 -> 3342 bytes html/classcore_1_1Object-members.html | 85 + html/classcore_1_1Object.html | 123 + html/classcore_1_1Object__inherit__graph.map | 22 + html/classcore_1_1Object__inherit__graph.md5 | 1 + html/classcore_1_1Object__inherit__graph.png | Bin 0 -> 51308 bytes html/classcore_1_1SessionFilter-members.html | 86 + html/classcore_1_1SessionFilter.html | 121 + ...lasscore_1_1SessionFilter__coll__graph.map | 4 + ...lasscore_1_1SessionFilter__coll__graph.md5 | 1 + ...lasscore_1_1SessionFilter__coll__graph.png | Bin 0 -> 3819 bytes ...score_1_1SessionFilter__inherit__graph.map | 4 + ...score_1_1SessionFilter__inherit__graph.md5 | 1 + ...score_1_1SessionFilter__inherit__graph.png | Bin 0 -> 3819 bytes html/classcore_1_1Socket-members.html | 107 + html/classcore_1_1Socket.html | 487 ++++ html/classcore_1_1Socket__coll__graph.map | 6 + html/classcore_1_1Socket__coll__graph.md5 | 1 + html/classcore_1_1Socket__coll__graph.png | Bin 0 -> 10935 bytes html/classcore_1_1Socket__inherit__graph.map | 16 + html/classcore_1_1Socket__inherit__graph.md5 | 1 + html/classcore_1_1Socket__inherit__graph.png | Bin 0 -> 26974 bytes html/classcore_1_1TCPServer-members.html | 128 + html/classcore_1_1TCPServer.html | 507 ++++ html/classcore_1_1TCPServer__coll__graph.map | 11 + html/classcore_1_1TCPServer__coll__graph.md5 | 1 + html/classcore_1_1TCPServer__coll__graph.png | Bin 0 -> 44155 bytes ...classcore_1_1TCPServer__inherit__graph.map | 9 + ...classcore_1_1TCPServer__inherit__graph.md5 | 1 + ...classcore_1_1TCPServer__inherit__graph.png | Bin 0 -> 16348 bytes html/classcore_1_1TCPSession-members.html | 126 + html/classcore_1_1TCPSession.html | 593 ++++ html/classcore_1_1TCPSession__coll__graph.map | 12 + html/classcore_1_1TCPSession__coll__graph.md5 | 1 + html/classcore_1_1TCPSession__coll__graph.png | Bin 0 -> 52824 bytes ...lasscore_1_1TCPSession__inherit__graph.map | 9 + ...lasscore_1_1TCPSession__inherit__graph.md5 | 1 + ...lasscore_1_1TCPSession__inherit__graph.png | Bin 0 -> 15334 bytes html/classcore_1_1TCPSocket-members.html | 112 + html/classcore_1_1TCPSocket.html | 253 ++ html/classcore_1_1TCPSocket__coll__graph.map | 8 + html/classcore_1_1TCPSocket__coll__graph.md5 | 1 + html/classcore_1_1TCPSocket__coll__graph.png | Bin 0 -> 18644 bytes ...classcore_1_1TCPSocket__inherit__graph.map | 12 + ...classcore_1_1TCPSocket__inherit__graph.md5 | 1 + ...classcore_1_1TCPSocket__inherit__graph.png | Bin 0 -> 19946 bytes html/classcore_1_1TLSServer-members.html | 132 + html/classcore_1_1TLSServer.html | 330 +++ html/classcore_1_1TLSServer__coll__graph.map | 12 + html/classcore_1_1TLSServer__coll__graph.md5 | 1 + html/classcore_1_1TLSServer__coll__graph.png | Bin 0 -> 46441 bytes ...classcore_1_1TLSServer__inherit__graph.map | 8 + ...classcore_1_1TLSServer__inherit__graph.md5 | 1 + ...classcore_1_1TLSServer__inherit__graph.png | Bin 0 -> 14126 bytes html/classcore_1_1TLSSession-members.html | 128 + html/classcore_1_1TLSSession.html | 414 +++ html/classcore_1_1TLSSession__coll__graph.map | 13 + html/classcore_1_1TLSSession__coll__graph.md5 | 1 + html/classcore_1_1TLSSession__coll__graph.png | Bin 0 -> 55218 bytes ...lasscore_1_1TLSSession__inherit__graph.map | 7 + ...lasscore_1_1TLSSession__inherit__graph.md5 | 1 + ...lasscore_1_1TLSSession__inherit__graph.png | Bin 0 -> 7070 bytes .../classcore_1_1TerminalSession-members.html | 139 + html/classcore_1_1TerminalSession.html | 344 +++ ...sscore_1_1TerminalSession__coll__graph.map | 13 + ...sscore_1_1TerminalSession__coll__graph.md5 | 1 + ...sscore_1_1TerminalSession__coll__graph.png | Bin 0 -> 55539 bytes ...ore_1_1TerminalSession__inherit__graph.map | 8 + ...ore_1_1TerminalSession__inherit__graph.md5 | 1 + ...ore_1_1TerminalSession__inherit__graph.png | Bin 0 -> 12634 bytes html/classcore_1_1Thread-members.html | 93 + html/classcore_1_1Thread.html | 163 ++ html/classcore_1_1Thread__coll__graph.map | 4 + html/classcore_1_1Thread__coll__graph.md5 | 1 + html/classcore_1_1Thread__coll__graph.png | Bin 0 -> 3093 bytes html/classcore_1_1Thread__inherit__graph.map | 4 + html/classcore_1_1Thread__inherit__graph.md5 | 1 + html/classcore_1_1Thread__inherit__graph.png | Bin 0 -> 3093 bytes html/classcore_1_1Timer-members.html | 92 + html/classcore_1_1Timer.html | 228 ++ html/classcore_1_1Timer__coll__graph.map | 7 + html/classcore_1_1Timer__coll__graph.md5 | 1 + html/classcore_1_1Timer__coll__graph.png | Bin 0 -> 12611 bytes html/classcore_1_1Timer__inherit__graph.map | 5 + html/classcore_1_1Timer__inherit__graph.md5 | 1 + html/classcore_1_1Timer__inherit__graph.png | Bin 0 -> 4891 bytes .../classcore_1_1UDPServerSocket-members.html | 119 + html/classcore_1_1UDPServerSocket.html | 270 ++ ...sscore_1_1UDPServerSocket__coll__graph.map | 8 + ...sscore_1_1UDPServerSocket__coll__graph.md5 | 1 + ...sscore_1_1UDPServerSocket__coll__graph.png | Bin 0 -> 20027 bytes ...ore_1_1UDPServerSocket__inherit__graph.map | 7 + ...ore_1_1UDPServerSocket__inherit__graph.md5 | 1 + ...ore_1_1UDPServerSocket__inherit__graph.png | Bin 0 -> 12365 bytes html/classcore_1_1UDPSocket-members.html | 109 + html/classcore_1_1UDPSocket.html | 195 ++ html/classcore_1_1UDPSocket__coll__graph.map | 7 + html/classcore_1_1UDPSocket__coll__graph.md5 | 1 + html/classcore_1_1UDPSocket__coll__graph.png | Bin 0 -> 13472 bytes ...classcore_1_1UDPSocket__inherit__graph.map | 6 + ...classcore_1_1UDPSocket__inherit__graph.md5 | 1 + ...classcore_1_1UDPSocket__inherit__graph.png | Bin 0 -> 7564 bytes html/classes.html | 125 + html/closed.png | Bin 0 -> 132 bytes html/doc.png | Bin 0 -> 746 bytes html/doxygen.css | 1771 ++++++++++++ html/doxygen.png | Bin 0 -> 3779 bytes html/dynsections.js | 120 + html/files.html | 101 + html/folderclosed.png | Bin 0 -> 616 bytes html/folderopen.png | Bin 0 -> 597 bytes html/functions.html | 321 +++ html/functions_func.html | 294 ++ html/functions_vars.html | 93 + html/graph_legend.html | 136 + html/graph_legend.md5 | 1 + html/graph_legend.png | Bin 0 -> 21469 bytes html/hierarchy.html | 107 + html/index.html | 76 + html/inherit_graph_0.map | 3 + html/inherit_graph_0.md5 | 1 + html/inherit_graph_0.png | Bin 0 -> 1672 bytes html/inherit_graph_1.map | 23 + html/inherit_graph_1.md5 | 1 + html/inherit_graph_1.png | Bin 0 -> 56388 bytes html/inherits.html | 110 + html/jquery.js | 35 + html/menu.js | 50 + html/menudata.js | 62 + 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 | 30 + html/search/all_0.js | 4 + html/search/all_1.html | 30 + html/search/all_1.js | 4 + html/search/all_2.html | 30 + html/search/all_2.js | 12 + html/search/all_3.html | 30 + html/search/all_3.js | 5 + html/search/all_4.html | 30 + html/search/all_4.js | 10 + html/search/all_5.html | 30 + html/search/all_5.js | 7 + html/search/all_6.html | 30 + html/search/all_6.js | 4 + html/search/all_7.html | 30 + html/search/all_7.js | 14 + html/search/all_8.html | 30 + html/search/all_8.js | 6 + html/search/all_9.html | 30 + html/search/all_9.js | 6 + html/search/all_a.html | 30 + html/search/all_a.js | 16 + html/search/all_b.html | 30 + html/search/all_b.js | 12 + html/search/all_c.html | 30 + html/search/all_c.js | 6 + html/search/all_d.html | 30 + html/search/all_d.js | 5 + html/search/all_e.html | 30 + html/search/all_e.js | 7 + html/search/classes_0.html | 30 + html/search/classes_0.js | 7 + html/search/classes_1.html | 30 + html/search/classes_1.js | 4 + html/search/classes_2.html | 30 + html/search/classes_2.js | 6 + html/search/classes_3.html | 30 + html/search/classes_3.js | 4 + html/search/classes_4.html | 30 + html/search/classes_4.js | 5 + html/search/classes_5.html | 30 + html/search/classes_5.js | 11 + html/search/classes_6.html | 30 + html/search/classes_6.js | 5 + html/search/close.png | Bin 0 -> 273 bytes html/search/functions_0.html | 30 + html/search/functions_0.js | 4 + html/search/functions_1.html | 30 + html/search/functions_1.js | 7 + html/search/functions_2.html | 30 + html/search/functions_2.js | 5 + html/search/functions_3.html | 30 + html/search/functions_3.js | 10 + html/search/functions_4.html | 30 + html/search/functions_4.js | 4 + html/search/functions_5.html | 30 + html/search/functions_5.js | 12 + html/search/functions_6.html | 30 + html/search/functions_6.js | 6 + html/search/functions_7.html | 30 + html/search/functions_7.js | 6 + html/search/functions_8.html | 30 + html/search/functions_8.js | 14 + html/search/functions_9.html | 30 + html/search/functions_9.js | 6 + html/search/functions_a.html | 30 + html/search/functions_a.js | 4 + html/search/functions_b.html | 30 + html/search/functions_b.js | 4 + html/search/functions_c.html | 30 + html/search/functions_c.js | 7 + html/search/mag_sel.png | Bin 0 -> 465 bytes html/search/nomatches.html | 12 + html/search/search.css | 271 ++ html/search/search.js | 814 ++++++ html/search/search_l.png | Bin 0 -> 567 bytes html/search/search_m.png | Bin 0 -> 158 bytes html/search/search_r.png | Bin 0 -> 553 bytes html/search/searchdata.js | 24 + html/search/variables_0.html | 30 + html/search/variables_0.js | 4 + html/search/variables_1.html | 30 + html/search/variables_1.js | 4 + html/search/variables_2.html | 30 + html/search/variables_2.js | 4 + html/search/variables_3.html | 30 + html/search/variables_3.js | 4 + html/search/variables_4.html | 30 + html/search/variables_4.js | 4 + html/search/variables_5.html | 30 + html/search/variables_5.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 | 23 + latex/annotated.tex | 24 + latex/classcore_1_1Command.tex | 119 + latex/classcore_1_1CommandList.tex | 115 + .../classcore_1_1CommandList__coll__graph.md5 | 1 + .../classcore_1_1CommandList__coll__graph.pdf | Bin 0 -> 7415 bytes ...asscore_1_1CommandList__inherit__graph.md5 | 1 + ...asscore_1_1CommandList__inherit__graph.pdf | Bin 0 -> 7415 bytes latex/classcore_1_1Command__coll__graph.md5 | 1 + latex/classcore_1_1Command__coll__graph.pdf | Bin 0 -> 6589 bytes .../classcore_1_1Command__inherit__graph.md5 | 1 + .../classcore_1_1Command__inherit__graph.pdf | Bin 0 -> 10788 bytes latex/classcore_1_1ConsoleServer.tex | 51 + ...lasscore_1_1ConsoleServer__coll__graph.md5 | 1 + ...lasscore_1_1ConsoleServer__coll__graph.pdf | Bin 0 -> 13146 bytes ...score_1_1ConsoleServer__inherit__graph.md5 | 1 + ...score_1_1ConsoleServer__inherit__graph.pdf | Bin 0 -> 10064 bytes latex/classcore_1_1ConsoleSession.tex | 65 + ...asscore_1_1ConsoleSession__coll__graph.md5 | 1 + ...asscore_1_1ConsoleSession__coll__graph.pdf | Bin 0 -> 13960 bytes ...core_1_1ConsoleSession__inherit__graph.md5 | 1 + ...core_1_1ConsoleSession__inherit__graph.pdf | Bin 0 -> 9046 bytes latex/classcore_1_1EPoll.tex | 217 ++ latex/classcore_1_1EPoll__coll__graph.md5 | 1 + latex/classcore_1_1EPoll__coll__graph.pdf | Bin 0 -> 7233 bytes latex/classcore_1_1EPoll__inherit__graph.md5 | 1 + latex/classcore_1_1EPoll__inherit__graph.pdf | Bin 0 -> 7233 bytes latex/classcore_1_1INotify.tex | 77 + latex/classcore_1_1INotify__coll__graph.md5 | 1 + latex/classcore_1_1INotify__coll__graph.pdf | Bin 0 -> 9525 bytes .../classcore_1_1INotify__inherit__graph.md5 | 1 + .../classcore_1_1INotify__inherit__graph.pdf | Bin 0 -> 7507 bytes latex/classcore_1_1IPAddress.tex | 56 + latex/classcore_1_1IPAddressList.tex | 23 + latex/classcore_1_1IPAddress__coll__graph.md5 | 1 + latex/classcore_1_1IPAddress__coll__graph.pdf | Bin 0 -> 6660 bytes ...classcore_1_1IPAddress__inherit__graph.md5 | 1 + ...classcore_1_1IPAddress__inherit__graph.pdf | Bin 0 -> 6660 bytes latex/classcore_1_1Object.tex | 25 + latex/classcore_1_1Object__inherit__graph.md5 | 1 + latex/classcore_1_1Object__inherit__graph.pdf | Bin 0 -> 17063 bytes latex/classcore_1_1SessionFilter.tex | 32 + ...lasscore_1_1SessionFilter__coll__graph.md5 | 1 + ...lasscore_1_1SessionFilter__coll__graph.pdf | Bin 0 -> 6629 bytes ...score_1_1SessionFilter__inherit__graph.md5 | 1 + ...score_1_1SessionFilter__inherit__graph.pdf | Bin 0 -> 6629 bytes latex/classcore_1_1Socket.tex | 229 ++ latex/classcore_1_1Socket__coll__graph.md5 | 1 + latex/classcore_1_1Socket__coll__graph.pdf | Bin 0 -> 8268 bytes latex/classcore_1_1Socket__inherit__graph.md5 | 1 + latex/classcore_1_1Socket__inherit__graph.pdf | Bin 0 -> 13728 bytes latex/classcore_1_1TCPServer.tex | 183 ++ latex/classcore_1_1TCPServer__coll__graph.md5 | 1 + latex/classcore_1_1TCPServer__coll__graph.pdf | Bin 0 -> 12384 bytes ...classcore_1_1TCPServer__inherit__graph.md5 | 1 + ...classcore_1_1TCPServer__inherit__graph.pdf | Bin 0 -> 10033 bytes latex/classcore_1_1TCPSession.tex | 191 ++ .../classcore_1_1TCPSession__coll__graph.md5 | 1 + .../classcore_1_1TCPSession__coll__graph.pdf | Bin 0 -> 13154 bytes ...lasscore_1_1TCPSession__inherit__graph.md5 | 1 + ...lasscore_1_1TCPSession__inherit__graph.pdf | Bin 0 -> 9592 bytes latex/classcore_1_1TCPSocket.tex | 71 + latex/classcore_1_1TCPSocket__coll__graph.md5 | 1 + latex/classcore_1_1TCPSocket__coll__graph.pdf | Bin 0 -> 10153 bytes ...classcore_1_1TCPSocket__inherit__graph.md5 | 1 + ...classcore_1_1TCPSocket__inherit__graph.pdf | Bin 0 -> 11040 bytes latex/classcore_1_1TLSServer.tex | 83 + latex/classcore_1_1TLSServer__coll__graph.md5 | 1 + latex/classcore_1_1TLSServer__coll__graph.pdf | Bin 0 -> 12787 bytes ...classcore_1_1TLSServer__inherit__graph.md5 | 1 + ...classcore_1_1TLSServer__inherit__graph.pdf | Bin 0 -> 9305 bytes latex/classcore_1_1TLSSession.tex | 116 + .../classcore_1_1TLSSession__coll__graph.md5 | 1 + .../classcore_1_1TLSSession__coll__graph.pdf | Bin 0 -> 13550 bytes ...lasscore_1_1TLSSession__inherit__graph.md5 | 1 + ...lasscore_1_1TLSSession__inherit__graph.pdf | Bin 0 -> 8244 bytes latex/classcore_1_1TerminalSession.tex | 84 + ...sscore_1_1TerminalSession__coll__graph.md5 | 1 + ...sscore_1_1TerminalSession__coll__graph.pdf | Bin 0 -> 13572 bytes ...ore_1_1TerminalSession__inherit__graph.md5 | 1 + ...ore_1_1TerminalSession__inherit__graph.pdf | Bin 0 -> 9053 bytes latex/classcore_1_1Thread.tex | 68 + latex/classcore_1_1Thread__coll__graph.md5 | 1 + latex/classcore_1_1Thread__coll__graph.pdf | Bin 0 -> 6406 bytes latex/classcore_1_1Thread__inherit__graph.md5 | 1 + latex/classcore_1_1Thread__inherit__graph.pdf | Bin 0 -> 6406 bytes latex/classcore_1_1Timer.tex | 94 + latex/classcore_1_1Timer__coll__graph.md5 | 1 + latex/classcore_1_1Timer__coll__graph.pdf | Bin 0 -> 8847 bytes latex/classcore_1_1Timer__inherit__graph.md5 | 1 + latex/classcore_1_1Timer__inherit__graph.pdf | Bin 0 -> 6996 bytes latex/classcore_1_1UDPServerSocket.tex | 80 + ...sscore_1_1UDPServerSocket__coll__graph.md5 | 1 + ...sscore_1_1UDPServerSocket__coll__graph.pdf | Bin 0 -> 9695 bytes ...ore_1_1UDPServerSocket__inherit__graph.md5 | 1 + ...ore_1_1UDPServerSocket__inherit__graph.pdf | Bin 0 -> 8969 bytes latex/classcore_1_1UDPSocket.tex | 33 + latex/classcore_1_1UDPSocket__coll__graph.md5 | 1 + latex/classcore_1_1UDPSocket__coll__graph.pdf | Bin 0 -> 8900 bytes ...classcore_1_1UDPSocket__inherit__graph.md5 | 1 + ...classcore_1_1UDPSocket__inherit__graph.pdf | Bin 0 -> 7633 bytes latex/doxygen.sty | 576 ++++ latex/hierarchy.tex | 45 + latex/longtable_doxygen.sty | 448 +++ latex/refman.tex | 210 ++ latex/tabu_doxygen.sty | 2557 +++++++++++++++++ 421 files changed, 23565 insertions(+), 2 deletions(-) create mode 100644 html/CommandList_8h_source.html create mode 100644 html/Command_8h_source.html create mode 100644 html/ConsoleServer_8h_source.html create mode 100644 html/ConsoleSession_8h_source.html create mode 100644 html/EPoll_8h_source.html create mode 100644 html/INotify_8h_source.html create mode 100644 html/IPAddressList_8h_source.html create mode 100644 html/IPAddress_8h_source.html create mode 100644 html/Object_8h_source.html create mode 100644 html/SessionFilter_8h_source.html create mode 100644 html/Socket_8h_source.html create mode 100644 html/TCPServer_8h_source.html create mode 100644 html/TCPSession_8h_source.html create mode 100644 html/TCPSocket_8h_source.html create mode 100644 html/TLSServer_8h_source.html create mode 100644 html/TLSSession_8h_source.html create mode 100644 html/TerminalSession_8h_source.html create mode 100644 html/Thread_8h_source.html create mode 100644 html/Timer_8h_source.html create mode 100644 html/UDPServerSocket_8h_source.html create mode 100644 html/UDPSocket_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_1Command-members.html create mode 100644 html/classcore_1_1Command.html create mode 100644 html/classcore_1_1CommandList-members.html create mode 100644 html/classcore_1_1CommandList.html create mode 100644 html/classcore_1_1CommandList__coll__graph.map create mode 100644 html/classcore_1_1CommandList__coll__graph.md5 create mode 100644 html/classcore_1_1CommandList__coll__graph.png create mode 100644 html/classcore_1_1CommandList__inherit__graph.map create mode 100644 html/classcore_1_1CommandList__inherit__graph.md5 create mode 100644 html/classcore_1_1CommandList__inherit__graph.png create mode 100644 html/classcore_1_1Command__coll__graph.map create mode 100644 html/classcore_1_1Command__coll__graph.md5 create mode 100644 html/classcore_1_1Command__coll__graph.png create mode 100644 html/classcore_1_1Command__inherit__graph.map create mode 100644 html/classcore_1_1Command__inherit__graph.md5 create mode 100644 html/classcore_1_1Command__inherit__graph.png create mode 100644 html/classcore_1_1ConsoleServer-members.html create mode 100644 html/classcore_1_1ConsoleServer.html create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.map create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.md5 create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.png create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.map create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.md5 create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.png create mode 100644 html/classcore_1_1ConsoleSession-members.html create mode 100644 html/classcore_1_1ConsoleSession.html create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.map create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.md5 create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.png create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.map create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.md5 create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.png create mode 100644 html/classcore_1_1EPoll-members.html create mode 100644 html/classcore_1_1EPoll.html create mode 100644 html/classcore_1_1EPoll__coll__graph.map create mode 100644 html/classcore_1_1EPoll__coll__graph.md5 create mode 100644 html/classcore_1_1EPoll__coll__graph.png create mode 100644 html/classcore_1_1EPoll__inherit__graph.map create mode 100644 html/classcore_1_1EPoll__inherit__graph.md5 create mode 100644 html/classcore_1_1EPoll__inherit__graph.png create mode 100644 html/classcore_1_1INotify-members.html create mode 100644 html/classcore_1_1INotify.html create mode 100644 html/classcore_1_1INotify__coll__graph.map create mode 100644 html/classcore_1_1INotify__coll__graph.md5 create mode 100644 html/classcore_1_1INotify__coll__graph.png create mode 100644 html/classcore_1_1INotify__inherit__graph.map create mode 100644 html/classcore_1_1INotify__inherit__graph.md5 create mode 100644 html/classcore_1_1INotify__inherit__graph.png create mode 100644 html/classcore_1_1IPAddress-members.html create mode 100644 html/classcore_1_1IPAddress.html create mode 100644 html/classcore_1_1IPAddressList-members.html create mode 100644 html/classcore_1_1IPAddressList.html create mode 100644 html/classcore_1_1IPAddress__coll__graph.map create mode 100644 html/classcore_1_1IPAddress__coll__graph.md5 create mode 100644 html/classcore_1_1IPAddress__coll__graph.png create mode 100644 html/classcore_1_1IPAddress__inherit__graph.map create mode 100644 html/classcore_1_1IPAddress__inherit__graph.md5 create mode 100644 html/classcore_1_1IPAddress__inherit__graph.png create mode 100644 html/classcore_1_1Object-members.html create mode 100644 html/classcore_1_1Object.html create mode 100644 html/classcore_1_1Object__inherit__graph.map create mode 100644 html/classcore_1_1Object__inherit__graph.md5 create mode 100644 html/classcore_1_1Object__inherit__graph.png create mode 100644 html/classcore_1_1SessionFilter-members.html create mode 100644 html/classcore_1_1SessionFilter.html create mode 100644 html/classcore_1_1SessionFilter__coll__graph.map create mode 100644 html/classcore_1_1SessionFilter__coll__graph.md5 create mode 100644 html/classcore_1_1SessionFilter__coll__graph.png create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.map create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.md5 create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.png create mode 100644 html/classcore_1_1Socket-members.html create mode 100644 html/classcore_1_1Socket.html create mode 100644 html/classcore_1_1Socket__coll__graph.map create mode 100644 html/classcore_1_1Socket__coll__graph.md5 create mode 100644 html/classcore_1_1Socket__coll__graph.png create mode 100644 html/classcore_1_1Socket__inherit__graph.map create mode 100644 html/classcore_1_1Socket__inherit__graph.md5 create mode 100644 html/classcore_1_1Socket__inherit__graph.png create mode 100644 html/classcore_1_1TCPServer-members.html create mode 100644 html/classcore_1_1TCPServer.html create mode 100644 html/classcore_1_1TCPServer__coll__graph.map create mode 100644 html/classcore_1_1TCPServer__coll__graph.md5 create mode 100644 html/classcore_1_1TCPServer__coll__graph.png create mode 100644 html/classcore_1_1TCPServer__inherit__graph.map create mode 100644 html/classcore_1_1TCPServer__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPServer__inherit__graph.png create mode 100644 html/classcore_1_1TCPSession-members.html create mode 100644 html/classcore_1_1TCPSession.html create mode 100644 html/classcore_1_1TCPSession__coll__graph.map create mode 100644 html/classcore_1_1TCPSession__coll__graph.md5 create mode 100644 html/classcore_1_1TCPSession__coll__graph.png create mode 100644 html/classcore_1_1TCPSession__inherit__graph.map create mode 100644 html/classcore_1_1TCPSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPSession__inherit__graph.png create mode 100644 html/classcore_1_1TCPSocket-members.html create mode 100644 html/classcore_1_1TCPSocket.html create mode 100644 html/classcore_1_1TCPSocket__coll__graph.map create mode 100644 html/classcore_1_1TCPSocket__coll__graph.md5 create mode 100644 html/classcore_1_1TCPSocket__coll__graph.png create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.map create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.png create mode 100644 html/classcore_1_1TLSServer-members.html create mode 100644 html/classcore_1_1TLSServer.html create mode 100644 html/classcore_1_1TLSServer__coll__graph.map create mode 100644 html/classcore_1_1TLSServer__coll__graph.md5 create mode 100644 html/classcore_1_1TLSServer__coll__graph.png create mode 100644 html/classcore_1_1TLSServer__inherit__graph.map create mode 100644 html/classcore_1_1TLSServer__inherit__graph.md5 create mode 100644 html/classcore_1_1TLSServer__inherit__graph.png create mode 100644 html/classcore_1_1TLSSession-members.html create mode 100644 html/classcore_1_1TLSSession.html create mode 100644 html/classcore_1_1TLSSession__coll__graph.map create mode 100644 html/classcore_1_1TLSSession__coll__graph.md5 create mode 100644 html/classcore_1_1TLSSession__coll__graph.png create mode 100644 html/classcore_1_1TLSSession__inherit__graph.map create mode 100644 html/classcore_1_1TLSSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TLSSession__inherit__graph.png create mode 100644 html/classcore_1_1TerminalSession-members.html create mode 100644 html/classcore_1_1TerminalSession.html create mode 100644 html/classcore_1_1TerminalSession__coll__graph.map create mode 100644 html/classcore_1_1TerminalSession__coll__graph.md5 create mode 100644 html/classcore_1_1TerminalSession__coll__graph.png create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.map create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.png create mode 100644 html/classcore_1_1Thread-members.html create mode 100644 html/classcore_1_1Thread.html create mode 100644 html/classcore_1_1Thread__coll__graph.map create mode 100644 html/classcore_1_1Thread__coll__graph.md5 create mode 100644 html/classcore_1_1Thread__coll__graph.png create mode 100644 html/classcore_1_1Thread__inherit__graph.map create mode 100644 html/classcore_1_1Thread__inherit__graph.md5 create mode 100644 html/classcore_1_1Thread__inherit__graph.png create mode 100644 html/classcore_1_1Timer-members.html create mode 100644 html/classcore_1_1Timer.html create mode 100644 html/classcore_1_1Timer__coll__graph.map create mode 100644 html/classcore_1_1Timer__coll__graph.md5 create mode 100644 html/classcore_1_1Timer__coll__graph.png create mode 100644 html/classcore_1_1Timer__inherit__graph.map create mode 100644 html/classcore_1_1Timer__inherit__graph.md5 create mode 100644 html/classcore_1_1Timer__inherit__graph.png create mode 100644 html/classcore_1_1UDPServerSocket-members.html create mode 100644 html/classcore_1_1UDPServerSocket.html create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.map create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.md5 create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.png create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.map create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.png create mode 100644 html/classcore_1_1UDPSocket-members.html create mode 100644 html/classcore_1_1UDPSocket.html create mode 100644 html/classcore_1_1UDPSocket__coll__graph.map create mode 100644 html/classcore_1_1UDPSocket__coll__graph.md5 create mode 100644 html/classcore_1_1UDPSocket__coll__graph.png create mode 100644 html/classcore_1_1UDPSocket__inherit__graph.map create mode 100644 html/classcore_1_1UDPSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1UDPSocket__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/search/variables_5.html create mode 100644 html/search/variables_5.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_1Command.tex create mode 100644 latex/classcore_1_1CommandList.tex create mode 100644 latex/classcore_1_1CommandList__coll__graph.md5 create mode 100644 latex/classcore_1_1CommandList__coll__graph.pdf create mode 100644 latex/classcore_1_1CommandList__inherit__graph.md5 create mode 100644 latex/classcore_1_1CommandList__inherit__graph.pdf create mode 100644 latex/classcore_1_1Command__coll__graph.md5 create mode 100644 latex/classcore_1_1Command__coll__graph.pdf create mode 100644 latex/classcore_1_1Command__inherit__graph.md5 create mode 100644 latex/classcore_1_1Command__inherit__graph.pdf create mode 100644 latex/classcore_1_1ConsoleServer.tex create mode 100644 latex/classcore_1_1ConsoleServer__coll__graph.md5 create mode 100644 latex/classcore_1_1ConsoleServer__coll__graph.pdf create mode 100644 latex/classcore_1_1ConsoleServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1ConsoleServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1ConsoleSession.tex create mode 100644 latex/classcore_1_1ConsoleSession__coll__graph.md5 create mode 100644 latex/classcore_1_1ConsoleSession__coll__graph.pdf create mode 100644 latex/classcore_1_1ConsoleSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1ConsoleSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1EPoll.tex create mode 100644 latex/classcore_1_1EPoll__coll__graph.md5 create mode 100644 latex/classcore_1_1EPoll__coll__graph.pdf create mode 100644 latex/classcore_1_1EPoll__inherit__graph.md5 create mode 100644 latex/classcore_1_1EPoll__inherit__graph.pdf create mode 100644 latex/classcore_1_1INotify.tex create mode 100644 latex/classcore_1_1INotify__coll__graph.md5 create mode 100644 latex/classcore_1_1INotify__coll__graph.pdf create mode 100644 latex/classcore_1_1INotify__inherit__graph.md5 create mode 100644 latex/classcore_1_1INotify__inherit__graph.pdf create mode 100644 latex/classcore_1_1IPAddress.tex create mode 100644 latex/classcore_1_1IPAddressList.tex create mode 100644 latex/classcore_1_1IPAddress__coll__graph.md5 create mode 100644 latex/classcore_1_1IPAddress__coll__graph.pdf create mode 100644 latex/classcore_1_1IPAddress__inherit__graph.md5 create mode 100644 latex/classcore_1_1IPAddress__inherit__graph.pdf create mode 100644 latex/classcore_1_1Object.tex create mode 100644 latex/classcore_1_1Object__inherit__graph.md5 create mode 100644 latex/classcore_1_1Object__inherit__graph.pdf create mode 100644 latex/classcore_1_1SessionFilter.tex create mode 100644 latex/classcore_1_1SessionFilter__coll__graph.md5 create mode 100644 latex/classcore_1_1SessionFilter__coll__graph.pdf create mode 100644 latex/classcore_1_1SessionFilter__inherit__graph.md5 create mode 100644 latex/classcore_1_1SessionFilter__inherit__graph.pdf create mode 100644 latex/classcore_1_1Socket.tex create mode 100644 latex/classcore_1_1Socket__coll__graph.md5 create mode 100644 latex/classcore_1_1Socket__coll__graph.pdf create mode 100644 latex/classcore_1_1Socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1Socket__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPServer.tex create mode 100644 latex/classcore_1_1TCPServer__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPServer__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPSession.tex create mode 100644 latex/classcore_1_1TCPSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPSocket.tex create mode 100644 latex/classcore_1_1TCPSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPSocket__inherit__graph.pdf create mode 100644 latex/classcore_1_1TLSServer.tex create mode 100644 latex/classcore_1_1TLSServer__coll__graph.md5 create mode 100644 latex/classcore_1_1TLSServer__coll__graph.pdf create mode 100644 latex/classcore_1_1TLSServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1TLSServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1TLSSession.tex create mode 100644 latex/classcore_1_1TLSSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TLSSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TLSSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TLSSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1TerminalSession.tex create mode 100644 latex/classcore_1_1TerminalSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TerminalSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TerminalSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TerminalSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1Thread.tex create mode 100644 latex/classcore_1_1Thread__coll__graph.md5 create mode 100644 latex/classcore_1_1Thread__coll__graph.pdf create mode 100644 latex/classcore_1_1Thread__inherit__graph.md5 create mode 100644 latex/classcore_1_1Thread__inherit__graph.pdf create mode 100644 latex/classcore_1_1Timer.tex create mode 100644 latex/classcore_1_1Timer__coll__graph.md5 create mode 100644 latex/classcore_1_1Timer__coll__graph.pdf create mode 100644 latex/classcore_1_1Timer__inherit__graph.md5 create mode 100644 latex/classcore_1_1Timer__inherit__graph.pdf create mode 100644 latex/classcore_1_1UDPServerSocket.tex create mode 100644 latex/classcore_1_1UDPServerSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1UDPServerSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1UDPServerSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1UDPServerSocket__inherit__graph.pdf create mode 100644 latex/classcore_1_1UDPSocket.tex create mode 100644 latex/classcore_1_1UDPSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1UDPSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1UDPSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1UDPSocket__inherit__graph.pdf create mode 100644 latex/doxygen.sty create mode 100644 latex/hierarchy.tex create mode 100644 latex/longtable_doxygen.sty create mode 100644 latex/refman.tex create mode 100644 latex/tabu_doxygen.sty diff --git a/TCPSession.cpp b/TCPSession.cpp index 6239251..3381bbb 100644 --- a/TCPSession.cpp +++ b/TCPSession.cpp @@ -73,12 +73,15 @@ namespace core { void TCPSession::onLineReceived(std::string line) { coreutils::Log(coreutils::LOG_DEBUG_3) << "[" << line << "]"; - protocol(line); send(); if(term) shutdown("termination requested"); } + + void TCPSession::onBlockReceived(std::string block) { + + } void TCPSession::sendToAll() { for(auto session : server.sessions) diff --git a/TCPSession.h b/TCPSession.h index 00c63ca..156fa4a 100644 --- a/TCPSession.h +++ b/TCPSession.h @@ -7,7 +7,7 @@ namespace core { class Command; - enum Mode {LINE, BLOCK}; + enum Mode {LINE, BLOCK, PACKET}; class TCPServer; diff --git a/html/CommandList_8h_source.html b/html/CommandList_8h_source.html new file mode 100644 index 0000000..98510bb --- /dev/null +++ b/html/CommandList_8h_source.html @@ -0,0 +1,127 @@ + + + + + + + +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 
+
31 
+
32  void remove(Command &command);
+
33 
+
40 
+
41  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
+
42 
+
48 
+
49  bool grabInput(TCPSession *session, Command &command);
+
50 
+
54 
+
55  void clearGrab(TCPSession *session);
+
56 
+
60 
+
61  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
+
62 
+
63  protected:
+
64 
+
68 
+
69  std::vector<Command *> commands;
+
70 
+
71  };
+
72 
+
73 }
+
74 
+
75 #endif
+
+
bool grabInput(TCPSession *session, Command &command)
Definition: CommandList.cpp:28
+
Definition: TCPSession.h:26
+
std::vector< Command * > commands
Definition: CommandList.h:69
+
int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:37
+
void add(Command &command, std::string name="")
Definition: CommandList.cpp:6
+
void remove(Command &command)
Definition: CommandList.cpp:11
+
Definition: Command.h:22
+
Definition: CommandList.h:18
+
bool processRequest(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:15
+ + + + diff --git a/html/Command_8h_source.html b/html/Command_8h_source.html new file mode 100644 index 0000000..f6fd1be --- /dev/null +++ b/html/Command_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +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 #include "PString.h"
+
8 
+
9 namespace core {
+
10 
+
11  class CommandList;
+
12 
+
13  class Session;
+
14 
+
21 
+
22  class Command : public Object {
+
23 
+
24  public:
+
25 
+
39 
+
40  virtual bool check(std::string request);
+
41 
+
52 
+
53  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
+
54 
+
60 
+
61  virtual void output(Session *session);
+
62 
+
71 
+
72  void setName(std::string name);
+
73 
+
74  std::string getName();
+
75 
+
76  private:
+
77  std::string name;
+
78 
+
79  };
+
80 
+
81 }
+
82 
+
83 #endif
+
+
Definition: TCPSession.h:26
+
virtual bool check(std::string request)
Definition: Command.cpp:13
+
virtual void output(Session *session)
Definition: Command.cpp:11
+
Definition: Command.h:22
+
virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:7
+
Definition: Object.h:8
+
void setName(std::string name)
Definition: Command.cpp:21
+ + + + diff --git a/html/ConsoleServer_8h_source.html b/html/ConsoleServer_8h_source.html new file mode 100644 index 0000000..b8908d7 --- /dev/null +++ b/html/ConsoleServer_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +My Project: ConsoleServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleServer.h
+
+
+
1 #ifndef __ConsoleServer_h__
+
2 #define __ConsoleServer_h__
+
3 
+
4 #include "includes"
+
5 #include "TLSServer.h"
+
6 #include "Command.h"
+
7 #include "EPoll.h"
+
8 #include "LogListener.h"
+
9 
+
10 namespace core {
+
11 
+
12  class TCPSocket;
+
13  class TCPSession;
+
14 
+
18 
+
19  class ConsoleServer : public TCPServer, public coreutils::LogListener {
+
20 
+
21  public:
+
22 
+
23  //
+
24  //
+
25  //
+
26 
+
27  ConsoleServer(EPoll &ePoll, IPAddress address);
+
28 
+
29  //
+
30  //
+
31  //
+
32 
+
33  void logSend(std::string out) override;
+
34 
+
35  TCPSession * getSocketAccept(EPoll &ePoll) override;
+
36 
+
37  };
+
38 
+
39 }
+
40 
+
41 #endif
+
+
Definition: TCPSession.h:26
+
Definition: IPAddress.h:9
+
Definition: EPoll.h:31
+
Definition: ConsoleServer.h:19
+
Definition: TCPServer.h:24
+
TCPSession * getSocketAccept(EPoll &ePoll) override
Definition: ConsoleServer.cpp:17
+ + + + diff --git a/html/ConsoleSession_8h_source.html b/html/ConsoleSession_8h_source.html new file mode 100644 index 0000000..89115e5 --- /dev/null +++ b/html/ConsoleSession_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +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: ConsoleSession.h:18
+
void protocol(std::string data) override
Definition: ConsoleSession.cpp:12
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
+ + + + diff --git a/html/EPoll_8h_source.html b/html/EPoll_8h_source.html new file mode 100644 index 0000000..ae2eee1 --- /dev/null +++ b/html/EPoll_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +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  void resetSocket(Socket *socket);
+
116 
+
117  private:
+
118 
+
119  int epfd;
+
120  int numberOfThreads;
+
121  std::vector<Thread> threads;
+
122  volatile bool terminateThreads;
+
123  void enableSocket(Socket *socket);
+
124  void disableSocket(Socket *socket);
+
125 
+
126  };
+
127 
+
128 }
+
129 
+
130 #endif
+
131 
+
+
bool isStopping()
Returns a true if the stop command has been requested.
Definition: EPoll.cpp:67
+
bool start(int numberOfThreads, int maxSockets)
Start the BMAEPoll processing.
Definition: EPoll.cpp:21
+
Definition: TCPSession.h:26
+
Definition: Socket.h:33
+
bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:77
+
Definition: EPoll.h:31
+
bool stop()
Stop and shut down the BMAEPoll processing.
Definition: EPoll.cpp:47
+
int maxSockets
The maximum number of socket allowed.
Definition: EPoll.h:98
+
Definition: Command.h:22
+
void eventReceived(struct epoll_event event)
Dispatch event to appropriate socket.
+
int getDescriptor()
Return the descriptor for the ePoll socket.
Definition: EPoll.cpp:83
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Output the threads array to the console.
Definition: EPoll.cpp:87
+
~EPoll()
Definition: EPoll.cpp:17
+
EPoll()
Definition: EPoll.cpp:8
+
bool registerSocket(Socket *socket)
Register a BMASocket for monitoring by BMAEPoll.
Definition: EPoll.cpp:71
+ + + + diff --git a/html/INotify_8h_source.html b/html/INotify_8h_source.html new file mode 100644 index 0000000..8f7a20c --- /dev/null +++ b/html/INotify_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +My Project: INotify.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
INotify.h
+
+
+
1 #ifndef __INotify_h__
+
2 # define __INotify_h__
+
3 
+
4 #include "includes"
+
5 #include "Socket.h"
+
6 
+
7 namespace core {
+
8 
+
9  class INotify : Socket {
+
10 
+
11  public:
+
12  INotify(EPoll &ePoll);
+
13  ~INotify();
+
14 
+
15  int addWatch(std::string watch);
+
16  void removeWatch(int wd);
+
17 
+
18  void onDataReceived(char *buffer, int len) override;
+
19 
+
20  virtual void inAccess(std::string name) {}
+
21  virtual void inAttrib(std::string name) {}
+
22  virtual void inCloseWrite(std::string name) {}
+
23  virtual void inCloseNoWrite(std::string name) {}
+
24  virtual void inCreate(std::string name) {}
+
25  virtual void inDelete(std::string name) {}
+
26  virtual void inDeleteSelf(std::string name) {}
+
27  virtual void inModify(std::string name) {}
+
28  virtual void inMoveSelf(std::string name) {}
+
29  virtual void inMovedFrom(std::string name) {}
+
30  virtual void inMovedTo(std::string name) {}
+
31  virtual void inOpen(std::string name) {}
+
32 
+
33  };
+
34 
+
35 }
+
36 
+
37 #endif
+
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+
Definition: INotify.h:9
+ + + + diff --git a/html/IPAddressList_8h_source.html b/html/IPAddressList_8h_source.html new file mode 100644 index 0000000..87697f0 --- /dev/null +++ b/html/IPAddressList_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +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  void 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: IPAddress.h:9
+
Definition: IPAddressList.h:9
+ + + + diff --git a/html/IPAddress_8h_source.html b/html/IPAddress_8h_source.html new file mode 100644 index 0000000..81f1f45 --- /dev/null +++ b/html/IPAddress_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +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
+
+
std::string getClientAddress()
Get the client network address as xxx.xxx.xxx.xxx.
Definition: IPAddress.cpp:35
+
Definition: IPAddress.h:9
+
int getClientPort()
Get the client network port number.
Definition: IPAddress.cpp:47
+
Definition: Object.h:8
+
std::string getClientAddressAndPort()
Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
Definition: IPAddress.cpp:40
+ + + + diff --git a/html/Object_8h_source.html b/html/Object_8h_source.html new file mode 100644 index 0000000..b001c78 --- /dev/null +++ b/html/Object_8h_source.html @@ -0,0 +1,96 @@ + + + + + + + +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: Object.h:8
+ + + + diff --git a/html/SessionFilter_8h_source.html b/html/SessionFilter_8h_source.html new file mode 100644 index 0000000..14d631f --- /dev/null +++ b/html/SessionFilter_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +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: SessionFilter.h:10
+
Definition: TCPSession.h:26
+
Definition: Object.h:8
+ + + + diff --git a/html/Socket_8h_source.html b/html/Socket_8h_source.html new file mode 100644 index 0000000..01a5e1b --- /dev/null +++ b/html/Socket_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +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 
+
32 
+
33  class Socket : public core::Object {
+
34 
+
35  public:
+
36 
+
43 
+
44  Socket(EPoll &ePoll, std::string text = "");
+
45 
+
49 
+
50  ~Socket();
+
51 
+
57 
+
58  void shutdown(std::string text = "unknown");
+
59 
+
64 
+
65  void setDescriptor(int descriptor);
+
66 
+
67  int getDescriptor();
+
68 
+
78 
+
79  bool eventReceived(struct epoll_event event);
+
80 
+
84 
+
85  int write(std::string data);
+
86  void write(char *buffer, int length);
+
87 
+
88  void output(std::stringstream &out);
+
89 
+
96 
+
97  virtual void onRegister();
+
98  virtual void onRegistered();
+
99 
+
100  virtual void onUnregister();
+
101 
+
108 
+
109  virtual void onUnregistered();
+
110 
+
111  bool needsToWrite();
+
112 
+
113  bool reset = false;
+
114 
+
115  protected:
+
116 
+
117  EPoll &ePoll; // The EPoll control object.
+
118 
+
119  bool shutDown = false;
+
120 
+
121  void setBufferSize(int length);
+
122 
+
123  int getBufferSize();
+
124 
+
130 
+
131 // virtual void onConnected(); ///< Called when socket is open and ready to communicate.
+
132 
+
136 
+
137 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
+
138 
+
146 
+
147  virtual void onDataReceived(std::string data);
+
148 
+
149  virtual void onDataReceived(char *buffer, int len);
+
150 
+
155 
+
156  virtual void receiveData(char *buffer, int bufferLength);
+
157 
+
158  private:
+
159 
+
160  std::string text;
+
161  int descriptor = -1;
+
162  std::mutex lock;
+
163  std::mutex outlock;
+
164  bool readHangup = false;
+
165 
+
166 // struct epoll_event event; // Event selection construction structure.
+
167 
+
168  //-------------------------------------------------------------------------------------
+
169  // the writeSocket is called when epoll has received a write request for a socket.
+
170  // Writing data to this socket is queued in the streambuf and permission is requested
+
171  // to write to the socket. This routine handles the writing of the streambuf data
+
172  // buffer to the socket.
+
173  //-------------------------------------------------------------------------------------
+
174 
+
175  void writeSocket();
+
176 
+
177  // int_type underflow();
+
178 // int_type uflow();
+
179 // int_type pbackfail(int_type ch);
+
180 // streamsize showmanyc();
+
181 
+
182  char *buffer; // This is a pointer to the managed buffer space.
+
183  int length; // This is the length of the buffer.
+
184 
+
185 // const char * const begin_;
+
186 // const char * const end_;
+
187 // const char * const current_;
+
188 
+
189  std::queue<std::string> fifo;
+
190 
+
191  };
+
192 
+
193 }
+
194 
+
195 #endif
+
196 
+
+
Definition: Socket.h:33
+
int write(std::string data)
Definition: Socket.cpp:155
+
Definition: EPoll.h:31
+
virtual void onRegistered()
Called after the socket has been registered with epoll processing.
Definition: Socket.cpp:55
+
virtual void onDataReceived(std::string data)
Called when data is received from the socket.
Definition: Socket.cpp:102
+
Socket(EPoll &ePoll, std::string text="")
Definition: Socket.cpp:8
+
void shutdown(std::string text="unknown")
Definition: Socket.cpp:174
+
virtual void onRegister()
Called before the socket has registered with the epoll processing.
Definition: Socket.cpp:53
+
bool eventReceived(struct epoll_event event)
Parse epoll event and call specified callbacks.
Definition: Socket.cpp:61
+
virtual void receiveData(char *buffer, int bufferLength)
Definition: Socket.cpp:110
+
virtual void onUnregistered()
Called when the socket has finished unregistering for the epoll processing.
Definition: Socket.cpp:59
+
Definition: Object.h:8
+
int getDescriptor()
Get the descriptor for the socket.
Definition: Socket.cpp:40
+
~Socket()
Definition: Socket.cpp:14
+
void setDescriptor(int descriptor)
Set the descriptor for the socket.
Definition: Socket.cpp:24
+ + + + diff --git a/html/TCPServer_8h_source.html b/html/TCPServer_8h_source.html new file mode 100644 index 0000000..b32927f --- /dev/null +++ b/html/TCPServer_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +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, std::string text = "");
+
39 
+
43 
+
44  ~TCPServer();
+
45 
+
51 
+ +
53 
+
59 
+ +
61 
+
62  void removeFromSessionList(TCPSession *session);
+
63 
+
64  virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
+
65 
+
73 
+
74  virtual TCPSession * getSocketAccept(EPoll &epoll);
+
75 
+
76  void output(TCPSession *session);
+
77 
+
81 
+
82  std::vector<TCPSession *> sessions;
+
83 
+
88 
+ +
90 
+
91  protected:
+
92 
+
102 
+
103  void onDataReceived(std::string data) override;
+
104 
+
111 
+
112  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
+
113 
+
114  private:
+
115 
+
116  TCPSession * accept();
+
117  std::mutex lock;
+
118 
+
119  };
+
120 
+
121 }
+
122 
+
123 #endif
+
+
IPAddressList * blackList
Definition: TCPServer.h:52
+
Definition: TCPSession.h:26
+
Definition: IPAddress.h:9
+
std::vector< TCPSession * > sessions
Definition: TCPServer.h:82
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Definition: TCPServer.cpp:73
+
void onDataReceived(std::string data) override
Definition: TCPServer.cpp:25
+
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")
Definition: TCPServer.cpp:9
+
Definition: EPoll.h:31
+
Definition: Command.h:22
+
Definition: TCPSocket.h:20
+
IPAddressList * whiteList
Definition: TCPServer.h:60
+
Definition: CommandList.h:18
+
Definition: IPAddressList.h:9
+
~TCPServer()
Definition: TCPServer.cpp:20
+
Definition: TCPServer.h:24
+
CommandList commands
Definition: TCPServer.h:89
+
virtual TCPSession * getSocketAccept(EPoll &epoll)
Definition: TCPServer.cpp:63
+
void output(TCPSession *session)
Output the consoles array to the console.
Definition: TCPServer.cpp:67
+ + + + diff --git a/html/TCPSession_8h_source.html b/html/TCPSession_8h_source.html new file mode 100644 index 0000000..f3d81ec --- /dev/null +++ b/html/TCPSession_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +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 Command;
+
10  enum Mode {LINE, BLOCK, PACKET};
+
11 
+
12  class TCPServer;
+
13 
+
25 
+
26  class TCPSession : public TCPSocket {
+
27 
+
28  public:
+
29 
+
33 
+
34  TCPSession(EPoll &ePoll, TCPServer &server, std::string text = "");
+
35 
+
39 
+
40  ~TCPSession();
+
41 
+
42  Command *grab = NULL;
+
43 
+
44  virtual void output(std::stringstream &data);
+
45 
+
49 
+
50  std::stringstream out;
+
51 
+
56 
+
57  void send();
+
58 
+
63 
+
64  void sendToAll();
+
65 
+
71 
+
72  void sendToAll(SessionFilter filter);
+
73 
+
77 
+
78  void terminate();
+
79 
+
83 
+
84  TCPServer &server;
+
85 
+
90 
+
91 // enum Mode {LINE, BLOCK};
+
92 
+
93  protected:
+
94 
+
98 
+
99  virtual void onRegistered() override;
+
100 
+
106 
+
107  virtual void onDataReceived(char *data, int len) override;
+
108 
+
115 
+
116  virtual void onLineReceived(std::string line);
+
117 
+
124 
+
125  virtual void onBlockReceived(std::string block);
+
126 
+
132 
+
133  virtual void onConnected();
+
134 
+
144 
+
145  virtual void protocol(std::string data);
+
146 
+
153 
+
154  void setMode(core::Mode mode, int size = 0);
+
155 
+
156  private:
+
157  char *lineBuffer = NULL;
+
158  int lineBufferSize = 0;
+
159  int lineLength = 0;
+
160  int blockLength = 0;
+
161  std::mutex mtx;
+
162  bool term = false;
+
163  core::Mode mode = LINE;
+
164  int blockSize;
+
165 
+
166  };
+
167 
+
168 }
+
169 
+
170 #endif
+
+
void send()
Definition: TCPSession.cpp:101
+
Definition: SessionFilter.h:10
+
virtual void onBlockReceived(std::string block)
Definition: TCPSession.cpp:82
+
Definition: TCPSession.h:26
+
virtual void protocol(std::string data)
Definition: TCPSession.cpp:18
+
virtual void onDataReceived(char *data, int len) override
Definition: TCPSession.cpp:34
+
Definition: EPoll.h:31
+
void sendToAll()
Definition: TCPSession.cpp:86
+
virtual void onLineReceived(std::string line)
Definition: TCPSession.cpp:74
+
void setMode(core::Mode mode, int size=0)
Definition: TCPSession.cpp:69
+
std::stringstream out
Definition: TCPSession.h:50
+
void terminate()
Definition: TCPSession.cpp:107
+
virtual void onRegistered() override
Definition: TCPSession.cpp:24
+
Definition: Command.h:22
+
Definition: TCPSocket.h:20
+
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:14
+
virtual void onConnected()
Definition: TCPSession.cpp:32
+
Definition: TCPServer.h:24
+ + + + diff --git a/html/TCPSocket_8h_source.html b/html/TCPSocket_8h_source.html new file mode 100644 index 0000000..cb17c19 --- /dev/null +++ b/html/TCPSocket_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +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(EPoll &ePoll, std::string text);
+
26  ~TCPSocket();
+
27 
+
28  void connect(IPAddress &address);
+
29 
+
30  IPAddress ipAddress;
+
31 
+
38 
+
39  virtual void output(std::stringstream &out);
+
40 
+
41  };
+
42 
+
43 }
+
44 
+
45 #endif
+
+
Definition: IPAddress.h:9
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+
Definition: TCPSocket.h:20
+
virtual void output(std::stringstream &out)
Definition: TCPSocket.cpp:21
+ + + + diff --git a/html/TLSServer_8h_source.html b/html/TLSServer_8h_source.html new file mode 100644 index 0000000..ec7a6fe --- /dev/null +++ b/html/TLSServer_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +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 *)"../testkeys/certs/pbxca.crt";
+
47  char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt";
+
48  char *sip_key = (char *)"../testkeys/certs/pbxserver.key";
+
49 
+
50  };
+
51 
+
52 }
+
53 
+
54 #endif
+
+
Definition: TCPSession.h:26
+
Definition: IPAddress.h:9
+
Definition: EPoll.h:31
+
Definition: TLSServer.h:19
+
TLSServer(EPoll &ePoll, IPAddress address)
Definition: TLSServer.cpp:22
+
~TLSServer()
Definition: TLSServer.cpp:58
+
Definition: TCPServer.h:24
+ + + + diff --git a/html/TLSSession_8h_source.html b/html/TLSSession_8h_source.html new file mode 100644 index 0000000..1f9dd7e --- /dev/null +++ b/html/TLSSession_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +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  void onRegister();
+
43  void onRegistered();
+
44 
+
45  private:
+
46  bool initialized = false;
+
47  SSL *ssl;
+
48 
+
49  };
+
50 
+
51 }
+
52 
+
53 #endif
+
+
virtual void protocol(std::string data) override
Definition: TLSSession.cpp:83
+
virtual void output(std::stringstream &out)
Definition: TLSSession.cpp:118
+
Definition: TCPSession.h:26
+
void onRegistered()
Definition: TLSSession.cpp:58
+
Definition: EPoll.h:31
+
std::stringstream out
Definition: TCPSession.h:50
+
Definition: TLSSession.h:23
+
Definition: TCPServer.h:24
+
void receiveData(char *buffer, int bufferLength) override
Definition: TLSSession.cpp:85
+
void onRegister()
Called before the socket has registered with the epoll processing.
Definition: TLSSession.cpp:36
+ + + + diff --git a/html/TerminalSession_8h_source.html b/html/TerminalSession_8h_source.html new file mode 100644 index 0000000..f3a0c68 --- /dev/null +++ b/html/TerminalSession_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +My Project: TerminalSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TerminalSession.h
+
+
+
1 #ifndef __Terminal_h__
+
2 #define __Terminal_h__
+
3 
+
4 #include "includes"
+
5 #include "TLSSession.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 
+
41 
+
42  void clear();
+
43 
+
47 
+
48  void clearEOL();
+
49 
+
53 
+
54  void setCursorLocation(int x, int y);
+
55  void setColor(int color);
+
56  void setBackColor(int color);
+
57  void saveCursor();
+
58  void restoreCursor();
+
59  void NextLine(int lines);
+
60  void PreviousLine(int lines);
+
61  void scrollArea(int start, int end);
+
62 
+
63  };
+
64 
+
65 }
+
66 
+
67 #endif
+
+
void clearEOL()
Definition: TerminalSession.cpp:21
+
Definition: TCPSession.h:26
+
void setCursorLocation(int x, int y)
Definition: TerminalSession.cpp:25
+
void clear()
Definition: TerminalSession.cpp:17
+
Definition: EPoll.h:31
+
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..002e4c8 --- /dev/null +++ b/html/Thread_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +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: Object.h:8
+
void start()
Definition: Thread.cpp:10
+
Definition: Thread.h:21
+ + + + diff --git a/html/Timer_8h_source.html b/html/Timer_8h_source.html new file mode 100644 index 0000000..3145e90 --- /dev/null +++ b/html/Timer_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +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: Socket.h:33
+
Definition: EPoll.h:31
+
double getElapsed()
Definition: Timer.cpp:47
+
Definition: Timer.h:18
+
void clearTimer()
Definition: Timer.cpp:34
+
virtual void onTimeout()=0
+
void setTimer(double delay)
Definition: Timer.cpp:14
+ + + + diff --git a/html/UDPServerSocket_8h_source.html b/html/UDPServerSocket_8h_source.html new file mode 100644 index 0000000..bb5b4d5 --- /dev/null +++ b/html/UDPServerSocket_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +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: UDPSocket.h:8
+
Definition: EPoll.h:31
+
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
+
Definition: Command.h:22
+
Definition: UDPServerSocket.h:17
+ + + + diff --git a/html/UDPSocket_8h_source.html b/html/UDPSocket_8h_source.html new file mode 100644 index 0000000..a1f2f33 --- /dev/null +++ b/html/UDPSocket_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +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: UDPSocket.h:8
+
Definition: Socket.h:33
+
Definition: EPoll.h:31
+ + + + diff --git a/html/annotated.html b/html/annotated.html new file mode 100644 index 0000000..0d26ea2 --- /dev/null +++ b/html/annotated.html @@ -0,0 +1,102 @@ + + + + + + + +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
 CINotify
 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_1Command.html b/html/classcore_1_1Command.html new file mode 100644 index 0000000..75cb6d6 --- /dev/null +++ b/html/classcore_1_1Command.html @@ -0,0 +1,288 @@ + + + + + + + +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::CommandList, core::EPoll, and core::TCPServer.

+ +
+
+ +

◆ 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_1CommandList-members.html b/html/classcore_1_1CommandList-members.html new file mode 100644 index 0000000..829d0f3 --- /dev/null +++ b/html/classcore_1_1CommandList-members.html @@ -0,0 +1,95 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
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
clearGrab(TCPSession *session) (defined in core::CommandList)core::CommandList
commandscore::CommandListprotected
getName() (defined in core::Command)core::Command
grabInput(TCPSession *session, Command &command)core::CommandList
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)core::CommandList
remove(Command &command)core::CommandList
setName(std::string name)core::Command
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1CommandList.html b/html/classcore_1_1CommandList.html new file mode 100644 index 0000000..d1419e8 --- /dev/null +++ b/html/classcore_1_1CommandList.html @@ -0,0 +1,345 @@ + + + + + + + +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)
 
bool grabInput (TCPSession *session, Command &command)
 
+void clearGrab (TCPSession *session)
 
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.

+ +
+
+ +

◆ grabInput()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool core::CommandList::grabInput (TCPSessionsession,
Commandcommand 
)
+
+

Use grabInput() within a Command object to force the requesting handler to receive all further input from the socket. Use releaseGrab() method to release the session back to normal command processing.

+ +
+
+ +

◆ 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.

+ +
+
+ +

◆ processRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool core::CommandList::processRequest (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+

Use this method to apply a parsed PString to the command set and execute the matching parameter. The selected command will return a true on a call to check(). If there is a handler that has a grab on the process handler then control is given to the process handler holding the grab on the input.

+ +
+
+ +

◆ remove()

+ +
+
+ + + + + + + + +
void core::CommandList::remove (Commandcommand)
+
+

Remove a command object from the command list.

+ +
+
+

Member Data Documentation

+ +

◆ commands

+ +
+
+ + + + + +
+ + + + +
std::vector<Command *> core::CommandList::commands
+
+protected
+
+

The vector of all registered commands.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1CommandList__coll__graph.map b/html/classcore_1_1CommandList__coll__graph.map new file mode 100644 index 0000000..200177c --- /dev/null +++ b/html/classcore_1_1CommandList__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1CommandList__coll__graph.md5 b/html/classcore_1_1CommandList__coll__graph.md5 new file mode 100644 index 0000000..685d251 --- /dev/null +++ b/html/classcore_1_1CommandList__coll__graph.md5 @@ -0,0 +1 @@ +20226c76e7fa481f1244ce2908d305c0 \ No newline at end of file diff --git a/html/classcore_1_1CommandList__coll__graph.png b/html/classcore_1_1CommandList__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8d7719ef1b28783c53289067f560c8181304d1 GIT binary patch literal 6202 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 + + + + diff --git a/html/classcore_1_1CommandList__inherit__graph.md5 b/html/classcore_1_1CommandList__inherit__graph.md5 new file mode 100644 index 0000000..685d251 --- /dev/null +++ b/html/classcore_1_1CommandList__inherit__graph.md5 @@ -0,0 +1 @@ +20226c76e7fa481f1244ce2908d305c0 \ No newline at end of file diff --git a/html/classcore_1_1CommandList__inherit__graph.png b/html/classcore_1_1CommandList__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8d7719ef1b28783c53289067f560c8181304d1 GIT binary patch literal 6202 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 + + + diff --git a/html/classcore_1_1Command__coll__graph.md5 b/html/classcore_1_1Command__coll__graph.md5 new file mode 100644 index 0000000..d6e49bb --- /dev/null +++ b/html/classcore_1_1Command__coll__graph.md5 @@ -0,0 +1 @@ +8503ee23f14367c839d780b18a886ac0 \ No newline at end of file diff --git a/html/classcore_1_1Command__coll__graph.png b/html/classcore_1_1Command__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..57336c44e7bacb3723ac59b6ef3b06164b9c1efa GIT binary patch literal 3446 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Command__inherit__graph.map b/html/classcore_1_1Command__inherit__graph.map new file mode 100644 index 0000000..3b67da8 --- /dev/null +++ b/html/classcore_1_1Command__inherit__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/html/classcore_1_1Command__inherit__graph.md5 b/html/classcore_1_1Command__inherit__graph.md5 new file mode 100644 index 0000000..0996b62 --- /dev/null +++ b/html/classcore_1_1Command__inherit__graph.md5 @@ -0,0 +1 @@ +7ec44b2f91bdeca7f03e5598df8c38f4 \ No newline at end of file diff --git a/html/classcore_1_1Command__inherit__graph.png b/html/classcore_1_1Command__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e67963a614a244ec6b3fa8246de05f0141cb5e3e GIT binary patch literal 16220 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 G_`d*)5$Wpy literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleServer-members.html b/html/classcore_1_1ConsoleServer-members.html new file mode 100644 index 0000000..0fa0828 --- /dev/null +++ b/html/classcore_1_1ConsoleServer-members.html @@ -0,0 +1,130 @@ + + + + + + + +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
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
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
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
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
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
reset (defined in core::Socket)core::Socket
sessionErrorHandler(std::string errorString, std::stringstream &out) (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(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (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()core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1ConsoleServer.html b/html/classcore_1_1ConsoleServer.html new file mode 100644 index 0000000..31f37db --- /dev/null +++ b/html/classcore_1_1ConsoleServer.html @@ -0,0 +1,291 @@ + + + + + + + +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, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- 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
+bool reset = false
 
- 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)
 
+int getBufferSize ()
 
+virtual void onDataReceived (char *buffer, int len)
 
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_1ConsoleServer__coll__graph.map b/html/classcore_1_1ConsoleServer__coll__graph.map new file mode 100644 index 0000000..b9f730f --- /dev/null +++ b/html/classcore_1_1ConsoleServer__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__coll__graph.md5 b/html/classcore_1_1ConsoleServer__coll__graph.md5 new file mode 100644 index 0000000..ffa96da --- /dev/null +++ b/html/classcore_1_1ConsoleServer__coll__graph.md5 @@ -0,0 +1 @@ +3035b937b5b504e05ae1d063ba02a4ac \ No newline at end of file diff --git a/html/classcore_1_1ConsoleServer__coll__graph.png b/html/classcore_1_1ConsoleServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ad06b5046428f1d8340e19817179c63949bd2c00 GIT binary patch literal 50318 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 Vsqu)h{S5qxi%1KX2z~wee*jsX$z%Wk literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.map b/html/classcore_1_1ConsoleServer__inherit__graph.map new file mode 100644 index 0000000..e79b33f --- /dev/null +++ b/html/classcore_1_1ConsoleServer__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.md5 b/html/classcore_1_1ConsoleServer__inherit__graph.md5 new file mode 100644 index 0000000..910dba8 --- /dev/null +++ b/html/classcore_1_1ConsoleServer__inherit__graph.md5 @@ -0,0 +1 @@ +7fc103513ac72f7cdde7ab68eba6c9db \ No newline at end of file diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.png b/html/classcore_1_1ConsoleServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4085d3c1610f811c3f36a2d7aa6ec178a62a9217 GIT binary patch literal 16741 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleSession-members.html b/html/classcore_1_1ConsoleSession-members.html new file mode 100644 index 0000000..9f5612c --- /dev/null +++ b/html/classcore_1_1ConsoleSession-members.html @@ -0,0 +1,142 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::ConsoleSession Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clear()core::TerminalSession
clearEOL()core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onBlockReceived(std::string block)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(char *data, int len) overridecore::TCPSessionprotectedvirtual
core::TCPSocket::onDataReceived(std::string data)core::Socketprotectedvirtual
onLineReceived(std::string line)core::TCPSessionprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() overridecore::TCPSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::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
reset (defined in core::Socket)core::Socket
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)core::TerminalSession
setDescriptor(int descriptor)core::Socket
setMode(core::Mode mode, int size=0)core::TCPSessionprotected
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server, std::string text="") (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
terminate()core::TCPSession
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()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_1ConsoleSession.html b/html/classcore_1_1ConsoleSession.html new file mode 100644 index 0000000..eb9b8f6 --- /dev/null +++ b/html/classcore_1_1ConsoleSession.html @@ -0,0 +1,326 @@ + + + + + + + +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, std::string text="")
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
void terminate ()
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void protocol (std::string data) override
 
- Protected Member Functions inherited from core::TCPSession
virtual void onRegistered () override
 
virtual void onDataReceived (char *data, int len) override
 
virtual void onLineReceived (std::string line)
 
virtual void onBlockReceived (std::string block)
 
virtual void onConnected ()
 
void setMode (core::Mode mode, int size=0)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+bool reset = false
 
- 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.

+

When data is received within the session two modes are available to pass the data through the protocol method: LINE or BLOCK.

+ +

Reimplemented from core::TCPSession.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1ConsoleSession__coll__graph.map b/html/classcore_1_1ConsoleSession__coll__graph.map new file mode 100644 index 0000000..aac3e83 --- /dev/null +++ b/html/classcore_1_1ConsoleSession__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleSession__coll__graph.md5 b/html/classcore_1_1ConsoleSession__coll__graph.md5 new file mode 100644 index 0000000..d081cdd --- /dev/null +++ b/html/classcore_1_1ConsoleSession__coll__graph.md5 @@ -0,0 +1 @@ +4a7e0cf373c73ff1f6cb91009905b7de \ No newline at end of file diff --git a/html/classcore_1_1ConsoleSession__coll__graph.png b/html/classcore_1_1ConsoleSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8daa33f7ab1c941e6ab0a7a660b6e35f70536d GIT binary patch literal 57998 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 + + + + + + + diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.md5 b/html/classcore_1_1ConsoleSession__inherit__graph.md5 new file mode 100644 index 0000000..1dfe9ce --- /dev/null +++ b/html/classcore_1_1ConsoleSession__inherit__graph.md5 @@ -0,0 +1 @@ +896c1d430070de8f002aa6ef3c12ad8c \ No newline at end of file diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.png b/html/classcore_1_1ConsoleSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..36ff183397425bbfadb0a56214db6c2c7db58cf2 GIT binary patch literal 12628 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 + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
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
resetSocket(Socket *socket) (defined in core::EPoll)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_1EPoll.html b/html/classcore_1_1EPoll.html new file mode 100644 index 0000000..2db4d65 --- /dev/null +++ b/html/classcore_1_1EPoll.html @@ -0,0 +1,453 @@ + + + + + + + +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...
 
+void resetSocket (Socket *socket)
 
- 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 EPoll 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.
+ +
+
+ +

◆ 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.

+ +
+
+

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_1EPoll__coll__graph.map b/html/classcore_1_1EPoll__coll__graph.map new file mode 100644 index 0000000..affec7a --- /dev/null +++ b/html/classcore_1_1EPoll__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1EPoll__coll__graph.md5 b/html/classcore_1_1EPoll__coll__graph.md5 new file mode 100644 index 0000000..aa8204c --- /dev/null +++ b/html/classcore_1_1EPoll__coll__graph.md5 @@ -0,0 +1 @@ +83c2161f1721cc0c84500e948d57da02 \ No newline at end of file diff --git a/html/classcore_1_1EPoll__coll__graph.png b/html/classcore_1_1EPoll__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..061b13e906cf1129049700e6b848d8229e022127 GIT binary patch literal 5211 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 + + + + diff --git a/html/classcore_1_1EPoll__inherit__graph.md5 b/html/classcore_1_1EPoll__inherit__graph.md5 new file mode 100644 index 0000000..aa8204c --- /dev/null +++ b/html/classcore_1_1EPoll__inherit__graph.md5 @@ -0,0 +1 @@ +83c2161f1721cc0c84500e948d57da02 \ No newline at end of file diff --git a/html/classcore_1_1EPoll__inherit__graph.png b/html/classcore_1_1EPoll__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..061b13e906cf1129049700e6b848d8229e022127 GIT binary patch literal 5211 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::INotify Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + +
addWatch(std::string watch) (defined in core::INotify)core::INotify
inAccess(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inAttrib(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseNoWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCreate(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDelete(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDeleteSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inModify(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedFrom(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedTo(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMoveSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inOpen(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
INotify(EPoll &ePoll) (defined in core::INotify)core::INotify
onDataReceived(char *buffer, int len) override (defined in core::INotify)core::INotifyvirtual
core::Socket::onDataReceived(std::string data)core::Socketprivatevirtual
removeWatch(int wd) (defined in core::INotify)core::INotify
~INotify() (defined in core::INotify)core::INotify
+ + + + diff --git a/html/classcore_1_1INotify.html b/html/classcore_1_1INotify.html new file mode 100644 index 0000000..49e8669 --- /dev/null +++ b/html/classcore_1_1INotify.html @@ -0,0 +1,161 @@ + + + + + + + +My Project: core::INotify Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::INotify Class Reference
+
+
+
+Inheritance diagram for core::INotify:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for core::INotify:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

INotify (EPoll &ePoll)
 
+int addWatch (std::string watch)
 
+void removeWatch (int wd)
 
+void onDataReceived (char *buffer, int len) override
 
+virtual void inAccess (std::string name)
 
+virtual void inAttrib (std::string name)
 
+virtual void inCloseWrite (std::string name)
 
+virtual void inCloseNoWrite (std::string name)
 
+virtual void inCreate (std::string name)
 
+virtual void inDelete (std::string name)
 
+virtual void inDeleteSelf (std::string name)
 
+virtual void inModify (std::string name)
 
+virtual void inMoveSelf (std::string name)
 
+virtual void inMovedFrom (std::string name)
 
+virtual void inMovedTo (std::string name)
 
+virtual void inOpen (std::string name)
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1INotify__coll__graph.map b/html/classcore_1_1INotify__coll__graph.map new file mode 100644 index 0000000..9feebf5 --- /dev/null +++ b/html/classcore_1_1INotify__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1INotify__coll__graph.md5 b/html/classcore_1_1INotify__coll__graph.md5 new file mode 100644 index 0000000..79ac55a --- /dev/null +++ b/html/classcore_1_1INotify__coll__graph.md5 @@ -0,0 +1 @@ +ccaa7ceaddb0f8aaafbf87edf5feba32 \ No newline at end of file diff --git a/html/classcore_1_1INotify__coll__graph.png b/html/classcore_1_1INotify__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f894a0647906944d1d270b486f8f97d615e0187 GIT binary patch literal 12942 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 SK|e5ok^QJ7Su6e}@IL^VcLPQM literal 0 HcmV?d00001 diff --git a/html/classcore_1_1INotify__inherit__graph.map b/html/classcore_1_1INotify__inherit__graph.map new file mode 100644 index 0000000..aa96774 --- /dev/null +++ b/html/classcore_1_1INotify__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1INotify__inherit__graph.md5 b/html/classcore_1_1INotify__inherit__graph.md5 new file mode 100644 index 0000000..b389cbb --- /dev/null +++ b/html/classcore_1_1INotify__inherit__graph.md5 @@ -0,0 +1 @@ +94cf621ee3c18bd667ce6909db5dea53 \ No newline at end of file diff --git a/html/classcore_1_1INotify__inherit__graph.png b/html/classcore_1_1INotify__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..61d35b9bbb1b188c7c0b3d40bed9037bd219f56d GIT binary patch literal 5272 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 R|EwAT%8D8ab#mqr{|Alh^F;sv literal 0 HcmV?d00001 diff --git a/html/classcore_1_1IPAddress-members.html b/html/classcore_1_1IPAddress-members.html new file mode 100644 index 0000000..d7627c8 --- /dev/null +++ b/html/classcore_1_1IPAddress-members.html @@ -0,0 +1,95 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
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_1IPAddress.html b/html/classcore_1_1IPAddress.html new file mode 100644 index 0000000..2462a42 --- /dev/null +++ b/html/classcore_1_1IPAddress.html @@ -0,0 +1,147 @@ + + + + + + + +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_1IPAddressList-members.html b/html/classcore_1_1IPAddressList-members.html new file mode 100644 index 0000000..8d59b01 --- /dev/null +++ b/html/classcore_1_1IPAddressList-members.html @@ -0,0 +1,88 @@ + + + + + + + +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_1IPAddressList.html b/html/classcore_1_1IPAddressList.html new file mode 100644 index 0000000..1b49e33 --- /dev/null +++ b/html/classcore_1_1IPAddressList.html @@ -0,0 +1,103 @@ + + + + + + + +My Project: core::IPAddressList Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::IPAddressList Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

+std::map< std::string, IPAddressgetList ()
 
+void 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_1IPAddress__coll__graph.map b/html/classcore_1_1IPAddress__coll__graph.map new file mode 100644 index 0000000..12963eb --- /dev/null +++ b/html/classcore_1_1IPAddress__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1IPAddress__coll__graph.md5 b/html/classcore_1_1IPAddress__coll__graph.md5 new file mode 100644 index 0000000..63ac5ab --- /dev/null +++ b/html/classcore_1_1IPAddress__coll__graph.md5 @@ -0,0 +1 @@ +156ef09bd41be803b2f51d7f424cd841 \ No newline at end of file diff --git a/html/classcore_1_1IPAddress__coll__graph.png b/html/classcore_1_1IPAddress__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e76df2dfca40227b5587e0db3d358a088e0ce34d GIT binary patch literal 3342 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 Jt5UTM{|Ag4kf#6u literal 0 HcmV?d00001 diff --git a/html/classcore_1_1IPAddress__inherit__graph.map b/html/classcore_1_1IPAddress__inherit__graph.map new file mode 100644 index 0000000..12963eb --- /dev/null +++ b/html/classcore_1_1IPAddress__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1IPAddress__inherit__graph.md5 b/html/classcore_1_1IPAddress__inherit__graph.md5 new file mode 100644 index 0000000..63ac5ab --- /dev/null +++ b/html/classcore_1_1IPAddress__inherit__graph.md5 @@ -0,0 +1 @@ +156ef09bd41be803b2f51d7f424cd841 \ No newline at end of file diff --git a/html/classcore_1_1IPAddress__inherit__graph.png b/html/classcore_1_1IPAddress__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e76df2dfca40227b5587e0db3d358a088e0ce34d GIT binary patch literal 3342 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 Jt5UTM{|Ag4kf#6u literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Object-members.html b/html/classcore_1_1Object-members.html new file mode 100644 index 0000000..3c02168 --- /dev/null +++ b/html/classcore_1_1Object-members.html @@ -0,0 +1,85 @@ + + + + + + + +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_1Object.html b/html/classcore_1_1Object.html new file mode 100644 index 0000000..94854e2 --- /dev/null +++ b/html/classcore_1_1Object.html @@ -0,0 +1,123 @@ + + + + + + + +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_1Object__inherit__graph.map b/html/classcore_1_1Object__inherit__graph.map new file mode 100644 index 0000000..203d6ba --- /dev/null +++ b/html/classcore_1_1Object__inherit__graph.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Object__inherit__graph.md5 b/html/classcore_1_1Object__inherit__graph.md5 new file mode 100644 index 0000000..88d4587 --- /dev/null +++ b/html/classcore_1_1Object__inherit__graph.md5 @@ -0,0 +1 @@ +5a2b724a1e8a7d2243ff22dd57444659 \ No newline at end of file diff --git a/html/classcore_1_1Object__inherit__graph.png b/html/classcore_1_1Object__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..552aaee25312a47ae71413aea31733e041abcb8b GIT binary patch literal 51308 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 na^ZhCxT?&+%ENz7shm8gX)-)bs6|Nh_ew39 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1SessionFilter-members.html b/html/classcore_1_1SessionFilter-members.html new file mode 100644 index 0000000..b1defab --- /dev/null +++ b/html/classcore_1_1SessionFilter-members.html @@ -0,0 +1,86 @@ + + + + + + + +My Project: Member List + + + + + + + + + +

+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
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_1SessionFilter.html b/html/classcore_1_1SessionFilter.html new file mode 100644 index 0000000..499cc97 --- /dev/null +++ b/html/classcore_1_1SessionFilter.html @@ -0,0 +1,121 @@ + + + + + + + +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_1SessionFilter__coll__graph.map b/html/classcore_1_1SessionFilter__coll__graph.map new file mode 100644 index 0000000..dcfae7a --- /dev/null +++ b/html/classcore_1_1SessionFilter__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1SessionFilter__coll__graph.md5 b/html/classcore_1_1SessionFilter__coll__graph.md5 new file mode 100644 index 0000000..e75907b --- /dev/null +++ b/html/classcore_1_1SessionFilter__coll__graph.md5 @@ -0,0 +1 @@ +49ec60c1d28ae09032cf4b8ee15c98a8 \ No newline at end of file diff --git a/html/classcore_1_1SessionFilter__coll__graph.png b/html/classcore_1_1SessionFilter__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d8ab90c7bf1698bc44a9257e015efc9e31c226 GIT binary patch literal 3819 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1SessionFilter__inherit__graph.map b/html/classcore_1_1SessionFilter__inherit__graph.map new file mode 100644 index 0000000..dcfae7a --- /dev/null +++ b/html/classcore_1_1SessionFilter__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1SessionFilter__inherit__graph.md5 b/html/classcore_1_1SessionFilter__inherit__graph.md5 new file mode 100644 index 0000000..e75907b --- /dev/null +++ b/html/classcore_1_1SessionFilter__inherit__graph.md5 @@ -0,0 +1 @@ +49ec60c1d28ae09032cf4b8ee15c98a8 \ No newline at end of file diff --git a/html/classcore_1_1SessionFilter__inherit__graph.png b/html/classcore_1_1SessionFilter__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d8ab90c7bf1698bc44a9257e015efc9e31c226 GIT binary patch literal 3819 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Socket-members.html b/html/classcore_1_1Socket-members.html new file mode 100644 index 0000000..154c86f --- /dev/null +++ b/html/classcore_1_1Socket-members.html @@ -0,0 +1,107 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Socket Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
reset (defined in core::Socket)core::Socket
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")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()core::Socket
+ + + + diff --git a/html/classcore_1_1Socket.html b/html/classcore_1_1Socket.html new file mode 100644 index 0000000..a07f9ac --- /dev/null +++ b/html/classcore_1_1Socket.html @@ -0,0 +1,487 @@ + + + + + + + +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, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + +

+Public Attributes

+bool reset = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + +

+Protected Member Functions

+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
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 (network or device) 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. Only sockets that send events to epoll can be used with this object.

+

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.

+

Constructor & Destructor Documentation

+ +

◆ Socket()

+ +
+
+ + + + + + + + + + + + + + + + + + +
core::Socket::Socket (EPollePoll,
std::string text = "" 
)
+
+

Constructor

+
Parameters
+ + + +
ePollThe EPoll socket descriptor.
textA title for this socket.
+
+
+ +
+
+ +

◆ ~Socket()

+ +
+
+ + + + + + + +
core::Socket::~Socket ()
+
+

Destructor

+ +
+
+

Member Function Documentation

+ +

◆ eventReceived()

+ +
+
+ + + + + + + + +
bool 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.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::Socket::onDataReceived (std::string data)
+
+protectedvirtual
+
+ +

Called when data is received from the socket.

+

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. 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.
+
+
+ +

Reimplemented in core::TCPServer, and core::UDPServerSocket.

+ +
+
+ +

◆ onRegister()

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

Called before the socket has registered with the epoll processing.

+

The onRegister method is called before the socket is registered with ePoll so objects extending the Socket definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ 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.

+ +
+
+ +

◆ setDescriptor()

+ +
+
+ + + + + + + + +
void core::Socket::setDescriptor (int descriptor)
+
+ +

Set the descriptor for the socket.

+

setDescriptor establishes the file descriptor for the socket and registers the socket on the EPoll controller. setDescriptor will invoke the onRegister() event.

+ +
+
+ +

◆ shutdown()

+ +
+
+ + + + + + + + +
void core::Socket::shutdown (std::string text = "unknown")
+
+

Use the shutdown() method to terminate the socket connection and remove resources. This method is provided to ensure that all destructors are called for all inherited objects without a virtual destructor.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + + + + +
int 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_1Socket__coll__graph.map b/html/classcore_1_1Socket__coll__graph.map new file mode 100644 index 0000000..2cbf29a --- /dev/null +++ b/html/classcore_1_1Socket__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1Socket__coll__graph.md5 b/html/classcore_1_1Socket__coll__graph.md5 new file mode 100644 index 0000000..14829d4 --- /dev/null +++ b/html/classcore_1_1Socket__coll__graph.md5 @@ -0,0 +1 @@ +c0f47b406c7ff76945bd289ef7e198f8 \ No newline at end of file diff --git a/html/classcore_1_1Socket__coll__graph.png b/html/classcore_1_1Socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab598de6436c762b32d87468426ae153a8e29bc GIT binary patch literal 10935 zcmb_?bx>U0wr5BJ3GUWGgS&g0txPJ!QFxe_YmAINTWd;hsK@hd~fF6 zTT}P_F;!DtUFXz3=j^@KZ>_y-uW&ULS#%Tt%8M5-(B?tUu`&7M?Y2OCC zm5{iMKtYkhs-XaBOJS*R1%%0AcjQaRsl9g0)m6i`+XxOKkdTl7#09;zHbJ zR|V^;)HY{ez7iP}qkWcFkjUHMNPJpqQ`+|@y!-KF*G5Bc_Jr@lm5pu_%5*!V^H1ao85V50V}uxQZj$2F^k<2};v zkJr?HuDaV>sqj&g_#K&+s-}-6$#PjCJ_E0##1IL#g~I9P65V#Y!% ziA7yB?jlcbcA6jq(5|ho0x2}>>%KohyaQJ8;7`I-?kOCO7bq&}kpTKXsT0>Tw^_o4 z#+_21bOjv-&@9F8Oy>?&spu?3M+A>8hHF|5huGFg&TEej<DTSWn^8DK7T@p z#M*im+)Qz9>6ORg!y+bTPyn@PDTSKgdii)_N2;W|2z~(B#x#%AwdvxR_>O+E%(gv% zh_}0rQU@`}jJg~!2zG!C(;{L9+F2LDmjojdhBL;;UK`=wW4&Bmgh>vn-LcsDoj$6y z%rI*osdZzH@4;=hLZUKhN*v~X2AETK$z4)rwXWvI2CA+T(=)#uV{l!(E(spz3sDsj z4;c?c-p+8;))X`mT}&aGF@@QdhPp|x&q zH#+aPX?fx5JkKxW`m8Sm0ldz-nFWOoa+^qiY0c@{KmLy%DHf@>8hh8``AW{WiF1ha zbo`<*xbl4dwGHAPZwFN=L>g|=1Sn%(zeL7pzp9Mf)N2*IEZzJp>M+CdmNJ4o#c>YZ zlW8rR;Bj|}B8H9kkmkCTD&Tyr0@^m>)KaZ;#B^dy%khL({JlSG{eoEB^y438zG7h8 za4Tl6cmV>XPCHYC0io)Mden(`l60c6jgKKOm=O2I$>X(q*O2rYW7Je7=8qf5ED3+A zs_~+83a}|Nk+lC*P19)Tr~%N^%X**22PPIBu+fb3`g+rmk;Zoi=7oy2AiT1m%Qm`T z4`!0#vR`i^5zdia-`0AH$R4W+Hz?)XRHilj?1CGrGj0wcx7*q-I*0nOovxNSM*)`q zSi_Pmbo8zfoLKDd?ZQNTgCe)RvT=0Q`&~0xEF4E#*7}5ESE$nOeBNSqsZCjI=)-usE!r6J^9pMfasKt^mk`sk{JZ5=LXq$I?V-{0UwRCECGlpKU-FRaP=x;_ouZp>M#x1@p5_x3L8Oy68Am zJuOmy$PW;FSQmX<);E*FzjM?ilk#TRlmVoz3a)6R@Hcb z+`m`g!JB$~KzUCUL?!g=d461DQc63;Zu2Bf6%H6yF9dZy-MMfB9O8bO*PiZ`_-pMyeB-*`TsLc9 zMAChQLYqjOI5ZkV8VYw|h*?4tHn(Tw%^$^6@YJay@Fr4Co;(_KuwI&*kK?@aY5WD9 zuh<*nnppPA0#$9_t?oK3)_?0sVR_@S@-bX7j~`}fZESwB%Fmp#L7Cj0OT}pKQnU!i z)A{#zXygY2@3c0#T(7m2ID}XFOV%~LR_d9c&c`eN<=qH8f^y1$xFN->n zU{*>xkMKf`84izw_o8EUuZMaPh}C#>bKXSN5S_~;Ql-S|@lH6|*?qM=v_`keMYRAS zT1N8YN0#=E5jKVQ>a-C!6L2sT(aAHE2s{t@HTDJ$1?>m6Oui` z?@yjFVKCw*%cfo)_!5oI!dk_F)l*u|<0WC=xK0Lae;e6J_5>jIfDdbr9ajXS0X#q= zZd(SQ>krI`a`_~9RN0EDXSc8cU8Uk_2O&M?{AqWQ7YGO3=UwpJfycv* z1v7l@PX}{oFEBBwWD3X}OG7tzilKdkZ<0YuB{M%vyFW@uz5?$RvGIHClT>#K7LHOD z_Fk$xn$wGcZhW}yaDKjX3DREjabEHaW6%`I^EydkHhE${J`S<>ago2wPct)+-@R=8 zUdBD!mn-gtjnDH<*hdAMpfU3t`dl`5ovKA1K@i)W+hbX740}=UFrVhMRP6fnKtl#H zWhhY@QftIfuLniRd~Ub~N(Tk~wm#n}`(3fu{R)$LdqPxIpcg}aHqREed#R6ts=WPd zfsakJ+f%HpI#p%#c72`6a;M>!+CSeHC5V52sj5olFfY=d#*vlAZAa?T^;ju+6u*Gk z7gVnJ%XCt}5NL{SHIXA4)gS#Tjmw5hPp^eDsqzIL3t7RGK(A)+4eT0=#4r)gCyjtW z;`YeE#yTbHP#a?eS);&vEhDm5Z&szXv|jsM_jCE)xQ%Be<~iy}Pi@rR0b@{!l4O<| zqZe8)?S9m`6LZ@l)2S8#;eWBTv^Lp9+9hGdS%ZwXx_$HjQ%oZrauQBC`vu(`3a((|^BtFlPP-1F| zR|gAIR}yl*Bm8&fol%IAf&#BgJ9db1_3j#Psw|wWkn$`xQ#HWmz?x)-cLQj@OqJh< zH&Xk1{}2FKB`V*45e;czyAd+{1;GmkF1Mc0#J8CKs>d8#z4V4a{ZyjH6}b#vI7=P? z0Rb=?pgstfZkog?q3|^xE7<_F5u#8a^W?a4$L(=&#|b(WI$ULugp7ye_iZ}v2_*N; z&nFHJ%3mBpGUKUqPH&<2q)rK2065ki#$HxlfzwR;{6aDX+1IN+X=R!xR>MiER`g5Z zYM<&WOO>3>@{l`LJ#g810O%9InH)h6drpTB+(Scp%!Wj?2Nps^(vbuD3|?ECe;%8Zi^;sy7cI%pa=BLStjw3dS^8;G)BS1hJHf~=pbCo?9*LtI zk&_>CtCugA#@}$2!j3E7I&ORS!{cBEZm@{>KO%E*B(rVMw|Hn#W(T~SAL1;fM}Ma; z38AEHAm-d6^?RswTPl%rCY6qa>gULY!xeTY1RZy8>DseD+CcKtg@|lMAtN3sJAF(e zgC@}Q@hj+hrS|V;no;$ak@zK$4KD72Q-`PlM9HO3GHR+~DM(X!hqP4T(tRp=}~w_^&>TBk*rd$F>wC z^oNBXR*ZRh2xz3OQCUJ3a3O8L)h^-+TiY8xz5U#U<>OuW#fd-NW`CvGO6wZ@g?u&X zpJJ682nWI-Xx3Cv&<&TnHC}i)VVbZH1t6OF(&sx|=K;|>!z#%8_?UR1KMrQU_l%C5b0!b`mFFYWbH(y`QaY*B+r^-WEZEgW$gABZ6x^R>a zMLB(qh_xumcxXdXq9`^GN_JOmSZgbDEH=MdvOc+I7p!&mVQqeRY7<_XLTbfh#EMJ!TzMJo_=aas>L&7eJ37>t$!z`|aJr0=XGIvfd6RPWjwQx~Ft+$} zAfVZ2Ht(q5d0SWgWgrVQu5Tbvc+!^JwgIVqf4MssvczxEnm1;%x=~w2dDGgqxm3tE z;V7TKJHra>_-1p@+cVJZ-PYx+B z&uH>{ruBrZDNv{1)LHuj1c>kT=3L1&L&mIB{cd;CVx4Sc%{4<}4!_uxJ!^5a`8_hG zh!ZI27o7a8P8Gc+0%wFSh`D z-)%s)8Qx%1W4N@FBKgVRi>(YY<^tZY;6dinHsu>m>7VId-teI@Vs%1OI!u3UBe{O{szgfARh5aP6xM6IzRVfW#AXUS1sk#dD4h_<_L;8V1Oos=Mhope{F ze!xDGdeXh4%KynEZMgvlJ)0sQvXrS<3LZYT&xvCBbIP%7`ZHOlhNL(6MuxH=y^_H+ z@vTnbo-<_!uxC^q!I*r;tzs&C(h({THV>*~zt5_Rn$xASS;kp0hz!hEH!DYXqf^l; z(SD_2Nk+?&;XY$B_BOMfOuO?`qSk2#kr1;_{wwp;`%jst1;f*+hsVD9z`fsGu>qC@ zo+vY<;+^5sRb=bV+^bq3!tRa4S)S+kLL0m_`Zz%?X05Y{9JsE%ccqZ*oj0vK4*ns+;Kx;|?(b^?_ByGp|RkPz6EA8ph{@WeD z#K=x??e#0nU}ph3p{Vt|Vwz{*zJ9csdFtoUjP|IU%{qp`HnE3Q z<L{&AF5h_pH1jLAl3J22^doZFQ}{EqK5%nmV7!nbsaJ8A+*hkL2_dQ9Oy#y*4H z>~X#w>jEF!XkW9ZOW?6s#*B>PYo`c4hn(ckpWBCvFqiaW|Ey5`H|yJbvgh~NP=}tk zw98P33?uC?Reg!f>G-3Kr`EqO$`qj`{@YgwS*52k9Ctz>>qmVgnhu4gKY-syPn<)a zf7#j8}E7Q?Nke<{uX0WsY}E1X^_>`)#p2^0=wxTA_rQtWv#Up4`Vm_sC>xewevvmsEgB-q6`3c0kXwV z`rvx*7OgyLEj91qC*g_XmA0eBY_7yqo1MA|m9qtlF;b_99ytXC#ugQmqG?5=IP`Z{ zVUv^4qdBtN^3YgSK5RU0$hs&0ow~+{h7BJwADs#8VU@w=n4qBZPbZx(5{Hz$@1$S8 zWK4Qh2*5iz*VReT*SaifB6Np3w|K9qWXieM@QjCU^jUE4V@V92X(n5qtp1ZjrHv85 zvw{DLB}*h>8&e0{WWvdP=Gddzq|qN7j1&uJ?fJnPS3tge5Df1GgRTyZakxL)9|t!v z0OEL5iHgcXBAmW&`aKg94$ato!s4$Y#oN)Gu4D%zDazLaG4inGu#G;=-{*tj(-E-a zHqp4`WK=_PQvom5P{mY6wR~A=xVw}Vi9G}l)6vjG;xqZR3mUc&P`)lvvEu*92$hCy zsNcsdB%6(AvMHkPIdB7rt2z<-R1*kpft;ply!Y31HBL);8hsY*yOzy&NO)`KyO(o{ zNy4goZz(~y+Y?iJ3TwuzmYnVn&1e9_$iE;ETmm(KMYZ5_aSSr0UULRv)E;x}-u~=L zneUl@#c3Lc5O`+$doaiU`5qwz%}%n;`m2tQL*<9Sj0}Y6{zWPpTI0BHfcacd4qPo# zRN-N)?M(61EVQL1xZY79vZe;(=BC+oR}F`QW6075nve#{rd57PVq1Bh3xW+^WDY07 zM*?1QZT5R?Uo9ONeHIoLexo{pl1i!tj3A7?05hsO9_qm*GnS5MbnR`LYnbqnCE^+k z9|1(m+yRp*Xm^;E10sKJZRt)F2U*T%`CDSX^r9S*@K4}V$S;pdhjfK zx;z^lr)WMI0J!m$J8S#8X973kMw<42TVp2$*NRP3~ztQx6AO&Q3<);JOp| z`@6ssN&ZE=5?Oq>mo1vmR5!OM>e5t)$0H6yMtkR4uZfvU`OC3l8@8%OhZr#vhkn5} z%cj@LDBxpo7Gw+!1#fR@ox6-8O5VfQj#MD-jM*^RoyO!? zrI9ic_-D%nCFX;22HR@EAWLtR+rj$G;Q}0(TuuqlQeR~ozTIBT$z}X~R|AM6b|=)B z3xEyU8bIV=T4c##vTStnBVxtd3nB2RN^;i9eLqQQq!w;GWigh9X=!EPPXg?Fsa_!! z;o`cd6f0Zlt5~TAgD$)ovVX*({&AGV--u_DAK4kiW*{^8FADYs>q(aWf^wNT9cL%d z2q$JRxv+?G#?4WdW+Pri)oyU~Mj1he0&R z9BAL?7SXrjOLQuZv=IVT5Yyg>Pb|do$;W}|7C5;jTp;xd%&nfp$P~0Z<)Q8jks|Vu z%;&pb7n!xKk3O;zgXy&2lkJ@+1;@nMwb5g}RKH*^srgY23)v(pK7PhnZTsqY#_9~=Y4tcfGW6j9o^if+AZN-sR6ZAD zTL!+eopKS3A2_dS&-iA6DzpKy=e<{=5w0fDukJ?!*$I9g>#DW5-ad2s@Kb#$e&-GFCA{4o1Fb58A&+(C}IlC*!(dFY|V}r7$M^IMx?7wH~Ptz zb5e3HE(vs-# zp6N?9A*=Ce`~M!ftx+h3+?amJ_*ovZ5o+)^z;fGeE_wT{Q4#Mg<>+%J!P@vCy|3>v zK9fquNE3vFZuNMd<*r(ukbttv$5`(@6;*KEXCv*Y^B23H^h4jEjWWm=wgyjEJdHK2 zB&0~R8oX5wh>YC>1W$*3(wL5TKxGm42%N-kNX-;;J63rQ*p0~g9DA?p!5dv46>&#R za{~mgan)88?;7!U6bi{i69k$#kgbu8)}uQRugMvRXCz13_rhHeDOvfySMlrrLlxg* z+VD|Pr-aO-{lvzpwdf|2?e(vOvDR+qs~>mvKYwQCC{KT7OY`x6b&>o-?;HIyO7$N! z8ZQqPS&q&FbpmDYtRq**mXXq*rdjOKM_R(q-`QoFL!EIeZQVO zkBqGzZpf4}7iOxC?70DOacw6AF&5j(2XMiq2KT5af;jj202qJZ1eH2LId-fu8((w6 z0^uyWJF^1(+cbXfkmY6g|lL`d+!-MiIKF>@0wb#Ih%PuatjHZL9dwnlTo#Qo@1DD&!lG)s{tDcN*q=Lh@Y%*+lCoyMCf@65)VWo0FZ#Q>$Qm2rWp%G5l z(l4&e#cX+XI-=>N`C6H>*ZASG;Kai4F6;C2%-1Mx74tN&ccTFNUI_-&AKt*3NT8KR zbsK%CrT%7-F_AZATZKW&BWSxYM%dA2A5e-R&9kAdPbmp!ms;ZO@TIr>fj3iH<7~qR(12C}Z+!@gTz) zr~qsh(a-z#!UI1?K_W1u|9Y6xz#|_pp;7JSdr4vd=PK5@4v;@wtWN_Q*;)MI`bu5eP(qM?)a{^@+S1LCVy=% z?rXlVF4_rDBJzR^E99tFESy+YZit4;6nZpObT{OAl9uJG?-SifYouh!d zWD+xwh4;!7g5c-h>d|m7`h8+^Uk?cfD*jhlD^nSL$ih3+qCpWpWKg_`r(_08l9nx7 zF6v}4o(+bxVZT`-c#nYT-(CQ4CP&@f?-(VF3YGPo-}dDV)&hMS&LU_x6g{n-$NkU* zlso_oPc=a>bs{k!E}jWyBjY10@IA4^pl% z4cBcZ5MQ0h@s-q&qY$p^Hp|Rv6Kz&FW9lJaxh{cSEI`R|i0>Vi4g zf*CJcba2=>oEgPGiYI*hd^7jcUmY27io9n{v@ppo8DNS&E%Q3pC;3mc7MjMQOZ(9; zsl_w%5ATFLO^|*jJ&?MGHstxCdo4Tg7Cwd{9x8dnIOw3jcL$epLOSYepA=emXxh&N zoiF+-b)KVQ1cjK^V^7>}oL6-fndxD;?2Y4dCXUk+sPwv0@yS~ol#ND*Q!|}T2IJ8`_RaZfJjC_J8JLAN^kqr zM4dp%!}(?9FQSz@ipU(Jv9Ip8TSZ6KL+&F25HmDPp5$%NQE++hCZ`8ly>eR3lY{Zw zyNEE>%d+*gOh3&6_SiHrlN^-H>i;S0E%ZDLvA?25+?_OIh35knXIrbY_x%AGDEJD7 zw`!l&lHp}uQi90Rt3@Xqt9(J&i*1?Zaq>2$CuxYJ{BW_vR3qF0 zyYGyCD{m|s7Vzdq{W3Uc3j`{#E;6I=Y*p9?)!x!9pNy5NoIAb;0+**~OH)v0%P~+< zsRRXE1rN(K>h-qRou#d$;xYaPQMXV&L@88F_ws#r{JO z`OTll%ZD4U_k<08-0dA)fikgHrVjoCE3XxC-er3Sbdg6{K7AH(D+-Lv!+_yEjHN?d zYOkw^N1t!V06vEA8FsuHrTvH2D#;3>1&;%I$F(5yGF!brtY+4Q&m7RX_cVHdg|wn7JrJN2St zjmb=q8wa$qmgCoJkW|^6Y_aM)nV-MDU1BTURIwm@fKNyA~X_(0$?e z>cUIOdf-P*`JEiKXR*C6S^TfL7PeE@{b!Et728h3t~6K^sm1&nqNzNE_c%$XImNli zO8;D}Nxs)HVLR|dF`-)JE`$GK#8qEeuN%7ddE~n=*RAy`s&D#iF!Y08H(!PhN5eM9 zD)`pI9Cd_GRhk-D;qgBGOoTT#8+L&wHj;URxx(tam0 zJF5k!-22Gy;QXRDStbj=#>xGYez|g#O94}YP9RrZNKt7|>_-RS%^mGfp*PB#@iES6 zs?WVKiOR@1z_guCndOHQ)0;xd-_ek9Hk-)b1qFSR$iT^b0vU8&9Dmc1y#ApNl-n;Zk}VW}`ZbVYM^Lc&y*n>vp{-hCV)knl62FUBU~#o7w_LCm$mvG35Z-^YeE2dF6*|N@ zN4d~-lg3-hDsJie6o9z@(zZ-{>7@Jz3v`-4)jy7Ay+hB<$pWByXRX8BG@@1_ygsvp zi=pc_!~esA$EEWYNZ282o?hjc!5my<5{u78*JY$?T=~T8T|*-RxQDQ~8pEN{e}3_R zaut_EnR|R`!XKSO&V!1P;4Ll|cbP_W#B6sn{o}(BY2I8luOAsH_+bVS?X=@EEoqJ_ zOz2Ha?)8q*10XS=NEX6tH}-c8VXr9vM6x$KXTwTV)uZIH2Y~dmqsAA2xR$Ic`DC=E z`sh3M({ZWy&*#YZa52S(H%=DnTzusk~6h^cNgOq<%v&^Ux|D;RC?cpeY16POl zWx0X@HBM^21Tm5VL(_LD%NC;nbxL?YXF^82$lqR0cwOm#cL(Laf!AMxq&6ZRL@!tl Wb~V)w!SGJh7xL07QdJVB0sjkJW3F5P literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Socket__inherit__graph.map b/html/classcore_1_1Socket__inherit__graph.map new file mode 100644 index 0000000..d6a7565 --- /dev/null +++ b/html/classcore_1_1Socket__inherit__graph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Socket__inherit__graph.md5 b/html/classcore_1_1Socket__inherit__graph.md5 new file mode 100644 index 0000000..5c3ac3c --- /dev/null +++ b/html/classcore_1_1Socket__inherit__graph.md5 @@ -0,0 +1 @@ +f73296e2ab61d2bedb4fadf8f8d76fd0 \ No newline at end of file diff --git a/html/classcore_1_1Socket__inherit__graph.png b/html/classcore_1_1Socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba81bfb9b7d198b0c722f8b26be87ce10d81009 GIT binary patch literal 26974 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 Tf*AZ@5}N8`4QPdedC30)r!B)C literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPServer-members.html b/html/classcore_1_1TCPServer-members.html new file mode 100644 index 0000000..d1e8ede --- /dev/null +++ b/html/classcore_1_1TCPServer-members.html @@ -0,0 +1,128 @@ + + + + + + + +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
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
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
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
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
reset (defined in core::Socket)core::Socket
sessionErrorHandler(std::string errorString, std::stringstream &out) (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(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (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()core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPServer.html b/html/classcore_1_1TCPServer.html new file mode 100644 index 0000000..7a7b058 --- /dev/null +++ b/html/classcore_1_1TCPServer.html @@ -0,0 +1,507 @@ + + + + + + + +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, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
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)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- 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
+bool reset = false
 
- 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)
 
+int getBufferSize ()
 
+virtual void onDataReceived (char *buffer, int len)
 
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,
std::string text = "" 
)
+
+

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.
+
+
+ +

Reimplemented from 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_1TCPServer__coll__graph.map b/html/classcore_1_1TCPServer__coll__graph.map new file mode 100644 index 0000000..3e43c6e --- /dev/null +++ b/html/classcore_1_1TCPServer__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1TCPServer__coll__graph.md5 b/html/classcore_1_1TCPServer__coll__graph.md5 new file mode 100644 index 0000000..e7e71e7 --- /dev/null +++ b/html/classcore_1_1TCPServer__coll__graph.md5 @@ -0,0 +1 @@ +e812285cad995aee8aca01cf476355f5 \ No newline at end of file diff --git a/html/classcore_1_1TCPServer__coll__graph.png b/html/classcore_1_1TCPServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb609a174cec4af35e211f9a0e58370714a0dde GIT binary patch literal 44155 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

o%oA1o9M zENp>`s0J@a1Z-enpqH1I)~{R0rQrC*2-_KB&?>Ti;pHm(bdDoENcT}b7l|ptVUZ*U z%#+f%`zU|?BBpN_XJ?1!F!qzYzj805B2V-br63G^5<&tqT_Qmz7UT9Q~e=+Z$EXdDxOy{IRjGW6yA3 zDX#mwT5q#xpsw|HtXkmB*fFML2G&O>>f3e`j_08DBXL64RL5_=N8aHTvWA8T%K)e) za5mF03#do=uhV?QEoz|tjO<;knze<5b`Y5$u@v>=N9((%IQhK3j_0KU1MhtO@^ZS_ zdV3nsoM4l+;xIAI`2pmZ#NAAzoNmCaQPZSN?k^fKE#$h55!}>7EdJ~_#*=E&MiNtA z4%7O;jjx{XQ(nOaKzIvQ%m@}%H4KUzJ7gK0-87|*KO%87vE^){>gwPm9yrPFuZ;RA z0}cIcZco=eSJup7O-vXlCb2Ed937($=NY6c{(xI0CLfcvZ(-3xu^#`ep$wW~h3b1Y zP4x7)qeW7)4aGpevtN}(4h>`?9*Au|yZmS$)bqNujMHjs$yz+ZfEEZVPob*vET}5< z;}=UmIjwKtcekwO)oNmCu(aRpq0jyu@jP8G5vp?(d`kqP{nuk^Lr=C=VSPo6C$b=|L> zLjR_F1>v=)A*m|(B|in~7s_RpMErL28X7Ly6V?+Qfh>M^yOQk|r!N>PiOgiWyMCZ$ zO1LP*n8o`ka5EEf$eZ1qXz$Ea(WkJHLI-!A=#L_CY5Wv8RLPq;C<&rz#X%BeHQoP5(f2Kyq)}trX>8lJ)7Wa9#!edBXw1g8Z8Wys*v32g-toH__ue9}u z>AQY&xK1((`g-0CY#0m#!G$u2J4M;imwiE_CUh^9bQmC3$#>$3%qlpe7w0L zcD?@0xBv*9mPfl4iXcRcyRjZD+1Y~RB$UOZ2b1`}o^BqD=Sz3JhKT!%vDcBH0U-bu(9%sX{WLM}BtS{4H^EM*+zoq%)cO1i~ZA^$@fE{K{!bX(<<&Mr#M;V_n+S^FT3lm`n`!% z+76dna-F+KMoz%ew$^dL4++E^@IW#dIyhiU%8q-Khk}9N;!>$s;su~mkO0hrr3l#nQ+7HFnXUWfgl>DG%-e(x1JbQ@c)il^fQLZ~Ehs1` zA)8taYCb9Yd8G3Vox~ECq@hhKgDM(HEDP^eX>t+|CzzB=2X|A#J;gf%&o;z;5I#XHCO95XGhY|M1_@f&cb1 zpNH3Ii<$Wv8M~yo8kk{EPnp-(8w+rVitbit3MQY|4@;_CpAo(Z;s;jW$2#>sq+?%* z4h(ib30JP`_{3oudU3sYm}8PNl>zi=hB(PkwX#8j+oO3b{#VS?L+Ur`>|9aa;w43w>VJUYusey`UrP56{<*;qi{&0W3a1Q{8{t^p!DIU? z6-veJ`wp7M>fqnd5G3y_U@A=rbil&_meVrv<^F950%-_Aw>4~34S33B~!r9OmsA%mJB7W=_ftgR;k@P?ry?fb**hiF8DfqXjpHOa;!KOx2GKjEc zxN^y06z*3*@}N%oWMp5tT$=;qdu6}TcJCJt>7kfBSvF2kC`YT~7n9J_QjO*ar(9C`6Bz!A)U$FOof~?h@e^WGQ=^bc)pK(MM_j)NAAg#{65WHo z)Mk}@=lRY}HlrDt8XX>8L{h9cl%xO>D3XzqlXqynWI{TfKiRXG7M{l|2m&*x` zm#O*^*j86NRnk>5wI-7hlngFM;HWoDj*a0-MDH07$9556s1U0qaJ!yI0`Bz&KVS|d z-zH4DHA8}BAVJGbh*xJ zsMwjEeZXRsJqV^4$L0Q1Gl6zADrve=RChHN&XI83__Jv0ty^jvg0 z$L@4#l4q3NcM@d7vz40R@$n(R=JsHfU3mk-86^ay^m(+g_$qMD$ZTS$Z_@IU;#yh+ zTJ^o{m~AO+eyamrR2vDf0X!4Auq5OghTbPY>-X&se_Z!vBEIn9hK#5 z))d^9OF4X`yzb9_k0zt`Ioz0m@$#M$rO4d1X4e?E89v(k0&6EO8n_)}FUMlZlrvqC4D;rycmf6nMF|ljT&v<(Jz_Oqk{>zj`dN`nRa)P zspcBk4Idt~<>lb@(Ng*uFgV7#9QPYZe8EK@Wq5IY(ZY@KkkTBOw>)ro#y3^^caK$2 zwYFO;B>t{1{a{>>HnO=1Q-N#kzx^=iEX^%ZYnI@w7Nf-sb73yp>yRxQw(p;eSK{mZ zP}OTfjebDm6M+snY;l4HqTsqYL3d~Pq6qGqe^0^qakyyoY#{K+snNTp134tV&a^Y8 z+ni}G{GBE_cnXx+O@RkuK4Gl%=h@=gfa|-un~gEK?ulH65~h-EX8H6vJ|?3aUHe4R zVU3R?`3BbP*F%ve;!%5nRY~~K5h_tHFY+{ws*a~^pd?%KW7bWl6)h@8fPHJ|Tt*;F zqhS()xcyI7VEm6<>8@XD3`0f^Q=H{dg{Wo6SZKbTA?FIt9r>U!=8YrclRoJ^UMl`yah zk!*K*%zY!yd5J9BuPS+>H#RV8$?fgRhp6D!nQdKOgAOP?1;+- zbmR0C0yhi}ln17}mfmQ-jcn^76($$NTzyg&9;P7cDwUnz-0o;L5><-?vx#Ee z^FIz}rz9M4LM9V4(2oOs8O<$tnzdz!;yiPVFTwES*fU(Hlid+$HvR>X%QH)!c}*Gb zc&t&{T$M0-I!`)VAYD}u7EGA!<~?Hz(EK%=u2+O6w;4LG`ZCqoiFZKq^%Uok^k_Cp zgR}n+ObdolWEa#P3KgCfTuUUi(L!E6qN*=dCDlC!+lFu`@O&ew`L??{)*v33-77# z7y?*yfO`|!yju#AvB8{}>V(qH<{8Db2OtGyBEB7SrBzOFkFhYAn2b*g|FVEDlpb4S zVflt4JQ!Z%{q}?RRdOoOc;u34>ExCwn!<$S{1MZhzxfNM8aF+|SoI+a_lFz82*lG8 zdTRJoT$Pc~F;RI(;xC;6GTMi>(1(!8o)#lPZ*Q)R>=eK6O~IsmyZi|B$3cN#Bw~B1 z^~6gLfD<@ZX8x6;XeHaE$@e4q@hJcOaVMe!pftBHJm_Or-X348!WTwWUUs}>RDhat z$g?)puu?*wFcNr@*2TJ;;|A~34^1J{IBX&vQ=WY($GN9I5bp{!EkcbYa0b6w(e2Oj zjc^**YjEsfP74j-L|a7)2yyOpB=nwQS}gg}G;MW_LeH7NG1z5_fW1|DxLeNKAv2M7_SkPow-h{qxV^eZ{`$R zm*0rl<)3jvU~+dGR5|{3$)_0)Cy!|ynTPq~GUu4W4HQ|xU?vO<@3O|7zEmccZ?35R zF^yz$=1gDQ_|@=yO|6pj7WItr@~0#5%}$ebmT{1ETA*e_j=ZkVoh+h33U?W|)2_Bd zlT4tj(tAWp``)xHp&rpy#cAiuf$4Nah3u4iYx}o=#3x_Zl#(%$z`y4BCVb0(9n!8( zgFdQV*SwY^KN4l}JN=w%FGe~$(gp~gB4(VkyCPL5=1R0RfzWB=zG~ib+4I82FbZeF z$o2f&Rr0Q;su)gV>pB^RH_1uO=J)#zQ!NPXMg390P?$&$rjj$Hy}i{C*3}+QsEb>r z9Z6+d|u!v@2E%B#>(}1#`C#8q=tcpHUP*y+#em!2RaMtD?xOfAGgbD zKkh9vPLh-eU=7dXQVX*69lAo<~Ye?LHZ}{ZD7%}m z0S~T+7bzZk<;PC;wd6q0VoTZQ3B}{N8?{7Idi&!~JvkM@$N~SQv+whDsrG$o=1CIr5>GDy z%(w5CO|APoL`@A;UEahfLe_>~aAA3M=uskalmu3ia!XIpwiXVkjy6Z}*-==a!G)Vc z@Wh0I!8BK{ovlwtn?}OMiGy)0*=Db_N^x7|QFIlN3sK>X@^>yTXL7k$fNB^ZkvSgf>8}Hu5N(Dfs0bPL_w?c}|9!Bo z=(gkgprW42S-^ZM+E1{k1N_1DTjAmcoPK)WuOt=fMf~Zl`ZCT+)6Vfng=JUyA)+7KHk5f zBk2Ap1DD+aQFKw1FIfSBYA@(OaIK2YK-wA+F(&Ba!-T_e&;+D#JUrOKB178;6X4?+ z*k)6h52G7xNlaE4p~w}L1|uO>_FNTMVpQhUxB1x)U9*yKKQyAqLvYBgx$$<}HhOlX zZX6hyamBcpI6KI}9p9?d<)Z*heDbez+bqJntlk# zoB~%6B%~2sd$WnG)WcANX!u1&cz7@qL!!#3CW{*9+4m4YUfB_4ZQPpQPHm(3bpBM z==3=RY3C4(=R)uC_9qnFIeCfRJ*Ia@chB~Gw!`(5xrN&g{^0tbzho^#2CK&Vv-1pO z-3A5?^i&KJTx%XtF;5Y%gVsjTGmA2WZ{FXLPFg`TD+^7V!dtFa^YhdnuUB>zRKL4r z?wvAO45~Jtd*jQKfbwOU_i~yI>uXvmo|ahS{YDSke$f^*GFE?rF=cIH+N?sIRFLW4 zh~w6+2@TVz*`Zvh;0cpS>D=QPHEy)!i-_Te>5C`pL&94NyWn)zGcX_mF*ua}LXZ$K zhkfhAOwA+rhitSV06mZd^!!w6mj{Lk=wuy%bfCGAA{Bq!?RfAoJQ!!p;6(0m#S?~R z(jr$8{VfG<@!HA7u*1({-VtCajhwSWVYitX2yk?e8Ai0GL9sy&VSNGl59? zCd|O`W<_)nR0_sXlBjjkms&!rV>pPxP>j}FYpUxKjP{1r zhDY2tzMMZhZWoEJ@x&^fypRRPt{5l-Pp`*5ffIA%&x@Jma8&k=i-Q3X>We%y_&Q=xC#AG!rB1*xnfWSjwEcftUI3>u@Z5GX| zd2;~jRI_A(M_&Hy_L*+X1s1o}@(ljxRs=xrig~62+EY==@f;4e3ObQAUg(@ix<5*l48P&H0{3<)d%`TRhKfqEp zZJKc0P4ZZU+D86TSuO(x@=bTf@ZLf=67KWiN={DPAl+kQ{)gY@DNw%Fm`z{}?_&Uj zJhs|8*xOn{8BC^UpNlUoPei?01R>L zcVq!!!t4k{vm>sFm?SAO0IT7Gh^Gz7uCoOrD2Q!S>l@O~OD`#enxyK%Cb>sfQ*V^! z83kndZsLD1QD4RXGg|aybnl3r(c|ZMsj0Wz4<;Ko%`MADhm#|rz@!6+V1TmbLv{ga z1L>6!JsJmWxAc(RKDgj$l9!JNvhrAQDD^(i6hhpG3CX=G`=(N;Ki~uWLPGF2nJgol zn!d2x;>FN>H)3=?X1Dm!PM8-!V--(~lpNDgq{i}1C&x#rzg`hpZ8Sd}5B_C&dv8qx z&2+lS;o3_|YT4eQ23YVY%h|y%CyOyd*}i&1=GkWlJP1to|B!3-&o_VW>y-v#pQn8}>*b%2GRd!fu6Rb> z^i^^m<><%6gT(tdcM&9i0>X(&>2C%$?7hPSSt%?fmr&BsG6~V-3E}$8!b7yfIa!I1L z!Eqn;qCTZC5HMud=+u<97({e=ASf-^*D8s_3TnBW+5u?Pd7)uI0VbAOQhJm*Oxr!? z6W6UaLYHvdl!TV{^(PC5(gju95P^cAnU*5o z*s<&BZ$55sTCl+lEaP;N0F7-&E(FACIf{GgEq;uU3kxXL>(BIo!U#P*G;vvacgc_; z7|N8kN9K9Py)mz<=q3nxLp~HpKdY8@Rf@vmVrWc;s-kNCo|slk z?6F(fC2^Fae-Ob`664~`XT;DHnZ*|X>=pPXpmCaQ_%Fl4555$aWGu%#wr`D2WkVW? zYm=w|`iQgvygr05Q%I+bS2vcu#q$@7MAp>~s*w?@U($vC9emD__t&K%x^3j7^z;B# zF*vVSQtcl%7z=_KhSLZW4jiTIcO@A#rXNmXWh6i?K~M8IAo3-MlP#N^nw<>3}+Ci6c9!3N42B`lq#LP`lR^P1sFDOqFf^ z!ZJ#puzBaTR`grO*ftMB3503Por=udu2#K$Uosu4{q>%%Y?f?LVhNJ=*J;ao)Pnmt z6fs#$bR~wIc?*h1IfnodmS;sa2yE=9SV__9>YV6$h2yCn+}zw<`=cqk@vM#rpqd9% zbdQ*RW6u3dB;7=oq#GHhWlUA4jAj{c!JnAusPTHb(5R}h}kz2|DQjT6^G6w z^bv|}Uk)MWs3{Sf(q7+0lmO*A5S&5`imos*b=C<|X<1x!C65`yc-VM`{q122rK!@A zSY}8vF*JBPgDD^a>qY2{R!N{+ZUJQ{h2^$>1#b(q%Qn88me zLB?7`)h_NujU}+h3lS`4Tyb31=uS+^h5DO(V%gK9B94oE7sz$GpF|14<+1(m>6uft zTk^!RU9Wb}TaMILroJ2gk&ZsB*_~_)Mi=qgX0gDg->-)GiD~?|*d^7O9`R+fHo$M! zV8bSC<6Ypm6)Xrw8Okz=EHJ!SYv;f`D2H!iYguH{6-`-Ax)8_60l(cl*V|96Pj6uD zD5d(;32Y`m+CZ-@V(G>XIj1G6P)JB4ox$y^ffe=*#DDJW?lzZMsMHm!yMeXxI5_`dx1?ZQ3-3}4Y4^q^4 zz_DYKx{_pn@UMEAU2dR~l4N@j{*rQSDy%^0MuILyrPU1xaslYjuWD=0|3Zg^19@AS zCUNr7TKTSR&+lN&%Do_1KrF6}?9IlkBXJiI|FLgBE|>4frtKUODtu+Dw0%T?kTLl0TowwD5Kmu+zdJ>B33onL5(K?8+LZYQjct=+(L@hs1Kw*oIl%Z%TQD5 z@t+e!EWGIMYp52{0gZJ@_AY16eQ?n20AhT5DPel-+7K+_NVUlXy{)_cBFdE&XXHcH=)#)obzcRBB$*mzOv=tDxdT;FVCIWrs=%4Az;N{Ws z1=2ME#B73z&zfhj_`6X~3VJy%q*0j@vx_af|3#e@rQrV^R>0qJ12;V2l*rI!gu`F2 zAab?{%N3xW@?7Sp^_J6f{}Ud4sAP7>#0s=gTMu?2?S^C&F;n>A2L&Qeq@5DtK30h(dmZvV|@TyO%> z8gP&V6%~aKe@{Tg*-BzldVO|T~ahhAfmQog>~w#`I~QVEJM8+H;g)W z-0Jyx+eoO-)Gj*YFI13B^JbBQZ@n$1SHod6;)lP_k)VHw8i?e~C!;BunE|d2xDP}~ zEYbf5+vrzzJrulj{HVxb;akl)5ESiayB%%Kp`V~~j-Qv3pm|rY3lgmFx!LHF7Dv=8 z9#~Q9`yc5p+wj6qcuUHz6(&hF-)Q3i+ldKURTP_&M;{h$V+MTT+}W{`-Ix?5iMRBR zYU$@EbQ!%*2;1^bpvgfCemYX*FlpP8Qq?(TNm*?muvAXth(QAR^unktETG_E(SU0T zi}_oi-pMVPZ$de$KD*Z!n3zW}7I*|)@PRW2^@b?$YQSoYQdlsYGyl`xVPuy_x*?O# z69XukdJRpL0cO|WGaOY0d>IrIo&8<{B`;^jh$~uxk*%#6Bb^ceWdro~Lm(*{`HM-+ zzJP-xx8Cs$&;kMIh?Acqc!^2rQX7{kElVATc&wb2psiiW;f6PYFXEl}E&v*{)h!Wa$!??FKT6}4Ztx2>Ksf0y=Y zRI95w@`e1qQi+MF;x8PrdBUwsVFh7Zo?`pp0=ex|w8>n*QC~}@xvY`VjFO__&vePc z8H458K3)ovzq{+RkPN=N1FmqwaFFOq&KchM@mB@B9>Wgy;@>8{2>-f%%O}IYRUi6k zj7*RPU0H7^Qn6t4_M8Cp-5heDxswB_v<{EP6%dgI02>FHu?{I`C?)GNyGtDl@)}~& zN=`=E+XwK5zN5ep3VytCAV`h|5U7vK)KCD-5dr?^$I@Sfv%$7Y{5}g!ZEYa6j=jJV zKLpDD#q%p60%h|!rz_6L0C>dvhXm-{QbHCBjkdO?jm^~Uc7@A#eDlDoUl}_5h6ck$ ztK;TZBnsT4fcr_?LT(V9Z_mgOrbKH2Az;XxvxG+=L>L-~PAD$#4j1xVr@1q1&?91p{2VuiZ&q-F5Y z_F!)*M4R|DN3DhqgloXt6{i2W5)%B75^jTxd84>)86Qt&uznRtW)&62bgwepfEz?helqK%SeX zAvK&=X7EkeWM~G7FpxK#T##7^-ea}5p#%M08!tqJg`oREjmIhd43y>T{2Y4RSmBgK z{qPt~a6>~NfC^?w7xn}|{Qv>URRr<(^W-FHSETd<_>yvI%{dOn<{lmJg22IKhC=>4 z-IS`LzbV5iustSkf)(_6);?&y2s5E8CdG}>fq*P8L)_--eL3G$@Rv11V5sr{z*Y!; zegxo7hMr*fB4p$m5R|Xp2DtIRRM88fZ+(S_^NT~79kTfLE>DSp6PUSmWC0HX{95Sk z*@d^L~+u1W)+$2X#$br5_>(sAtQziN+X1xjssLN z0a8?ayhYw&TDOA&f)xm>^$~PVK~gwYa{Q{h5x`9_QUnMkq7r6iU`wlGu^F;riJcnS z+TA@pFaRdlnI9`*p#~?WX*v9vX~yJ|gsW2Co3KZF6GVXpgEf@o!TlVJwR2}NQbGxXV^@(Z2S{eY`8m!E*|Br#9-DqweE+Lct>*a-4 zqLAp19LhOoMN(*}2<;A*iCmxzh8%*?hmYJ`Ms>^BOV3 z3H)DNT3SQ~9u9sMlF<_I<=hEeVbfN*9FUc^fv>7$l{T^mJjxZ04soPZRAs#-(!&u{ zp29KQDX7A5_)(~0rQ?MiWWm-pU~1bpMJJ5v^z=UgP!5pH2hrBX-gJmm23CoYgF^(E ziBO>5I6c2y$p};^~UYAN_j)nEi488@XRCw&B zh+4+6I|G)!!$5pRa(~+p5it0GYPYuBv+7Js29P6#8s?LP9}PrRP%Uws)5p{AU*i{w zhlv7rA+0LWgk?=LLIuXQ`h`>GVan6d^?dbvyIAYnBwUkNIRon?ollKNbOTC*6oiBl zyly#u;>HDXY0i=k(U7Z9>%Vr?`8SoInK(ZmZ*NK0XJv)E-QXORLqE6Eq~v;exaTPu zQ~WZ37G+%E%g-OJNIf4K!?DgZ0w?BEiqi6RfU(Zag;4VUl!E-DDUg4Jatv+^XlnpR zX@TN~WayqYksAq5TTR{ULE$T+>&Nm%90o`f^;o~eibx$SN1&a`?cl@4vCoEVMFUah z^`SJESck#zhJ=WagbvogzL;M~WITu2Olkx==yn*8#&!P@QW#&tjF~A=6uTG*@%Az_ zHw4wbICpdHljCiVuW`!IL5qwgV6Tql%28^Xeta(gQ+-c|1b`VmuBMv)ZnmhY2Pi@` z(~_&zVjfO5f#eGfh5~CX6r2M=UkehWJ|*`3gz;@`l}-yngZb+3OdQW-v^<%9x5cEX zi{~WwuiD@iw#GjckroVj@5RlCZzkE{#&n}|N!53JG@SuiVEpDNy|OAIHd3(M_1-JZ zkIKhyi6nz^1ul0B|Zt08_SNL_`R=>SdaJ;N<{ex2ayNbjh za-7L~(#dvtXu_&~kA_Tu_QvsFnR)E>#00`3NNQc8Taj?s7d;&^#?(}n|t}eWK(a#NTCa+e>ez$Z%X*^w$@i60m|ed&j>7)9a*lA(z9sh z7`#ZQ@YiKWa)O0#1EkAqP@U%rzKIqp@v)ZYL6G$OV}V)xm!j11%A+fOoWnLYqjq7T zqDb0H-3Qxf-gu%$$gGymPr+sF@}RahS-;*Z)(lCR0tATyJ%^RhOekXu>GX#NE4|V) zhVhJwbJbaZfpe>`1B>t<82yVoIo4z@Y+=&ndk)z6kofBaUb&rz{F?at{>WhG1XIp_ zhInd#>^Fp!73{O$BFnL-85WGPS}b>Hc8l!M4noR~M(lcfxC2Z}DHb{t=)|?qA~n`wg&ck&q2N z9HAD-(?XXR(F*vxLVx{VYLcMiX~rH)E|E%A{elcM8XR!_>i6e19 zHgsUHgCPt&Uzk|LySUpU#};Sbu!%KL{hBHqE^L;Rs;`^ zE+;Ar&Ey2YipStBAzZJ2nz6^vc*8^kgW)snfe>?3DN;-7@F$M+FC?Q>z;TM_b4tLg zM>x^}FOUsH0Qp5kUx|Yw!zqne-!pL|@a@)m8{nyc?BsiAFRbN!X+h|W<-cV(@7%D^ z|N7l4zr9ERKYMc{6SnrtdiNDWUYyT&- zb+1ocuC$6*SEFxFW~JHDp+rmo3hJ(rFa%(T2+0G1zy=y*>w(Gj67Vt2brcoS5NbeMd=FM%i{l(l zApYxTY%k;kGJ&lK=P0_% zktNU|(`4KE_^{d5fVEVg$d`+WU6K6FzsyXtb)aX&H1Dj{f_KQX8JAj=Q~IR-o|OP6 zM$csljKyT7tVhNfkKa)~_g;J9!S@W_6kpoXZm#A<{^3gP+Z&@A{htj&@=53h{qXF= z#DqYm#EB1Dq2^JW5Ty9Vh5>l1zeYKcFRse4Q1x#TH@!LyN@6(MEphfBV z$P*?vu&DxAF`{i9`g+T^@iTK;fJ_gpJ#qh*BG9GDwzr>>{@LL&m8*@#KCV#YeE#t} ztnFo%xDlndqmGTYZESmE9tVXhGfg3Haz7ABMC7}ruw|&MSv1h@wO!R^d!!?J_qc+3 zw&5T&K0@37o*sbeXw=Q>r(%W8+d4K)I|WKY#fJ5T71_aNrWA{)*lWjDSQcM5^J|IF z7s&eFFjVB>u`;*B8wt&puxX=IQpj?PP>z^JVW1zX+J$B4Z2bpP>U4+(c3Noj{n|!m zaK)SL_2-fK?Db(Qw%a_IvTWdVIdy4Rz?2FCIyC|a^gWH1IuDS-OG2qr2X=b4WhrmiJT@t^y}U*#NXVa) zvP*xB#{qFLwTL$`vxdOT0=NG83YDme&@OCJneCGVyDH%JXHWD1jWAak@MHn?9Vm`T=;WpSim*W_n-A~fkAG(b+w1%rH(^?0?g0d=P2@i5lvMxOTF-;P6 z0o~5yd0)Qqpp>I1bU?K5;$zwOo5kE7;L`&thd1~^b4piNSAY2~K9f7dUjc7OD7DyO zVVd^N4b!VWSyvOGSSsLTPc1t98GHMmuZ&m$;{ZSdpa4nXNGbxu)?#A~ezggA5%njy-vRr9 zYjrPf*THpWU@T5<)XP@}?YlvSu)nrkRn{#fd7mS}Ae;w!zf=+l=s)~0_#8>_1w^J* zGxviV;*t97^MzsnZED0M=>VX6?h1dv-o&ow1Ot!reE9=ho%B+h3B)4K#fR<>;(b6& z0NMD2slD|aK56G#(5gF}!6$p2N>>3Sw;z%KAB^!Z8$2;;T@R@fodvSdzfA`WR-2(7 z|B^sGOExfms4wJzzVoK3*9w=#z3noAJFt-0$q#O0R$l1t@-Te!fs7S8dlS^iA1{FY z&)oXMO2W_wrO+2yfuxA84VPjs9YelM*H2JSqOpX7z=;dgO*B zz$x<(-ljGaa9m4wCX}GQ_hjUrZQ0WKi=O*O_rTh-w%mGF{AW2u|NelzG&5&dk~D!{ zQUXbKMlRbp3mc4PPL;u*D!5=hZPr$8<$x#YybGvbw$@P-P7@LDgx`D?>v4B~6X)g*Kjzb$e8ZR{E+*huZ%`qPa4fthP6@>i%~< z`hAk;6PT-$&&0`*!$mCD_59U^v;w8UcB(cW<@0q+o`Q()82X^0EtKyA12k<_0|zb8 z87rnEPII`u4!-Yait$lsQu9Z3mg3GPU&_?ekfS91@K9y9YGAY%I;=93;aMTt9yPsT z%cfYnfD^*xyx;?aT)z-rxJ_tJAGeTJAsbgteU0AM!q@lnxFvR9?0a1|zuPQzMt(YTo`>tz#V?8udi>QI2lM9B+zc|;2v#3j6vyxB zysI<$!ePQ_gRWP?3}EfFL_|3_R_gQ&nj`8>ZT&#%aBTYGReXG6YJWJ2df}+M@sM_u zt#Lt~u)N(qBlpe5#O|?k%A7&fVRd@fJ%3mioSU`@U46EncL1%4ax>W6--KmsT;Px&3rF-%1pNd|3 ze4wf$1FJoiKKbpfKZSB!qVj?Vsb4}FYM|+=OsJ6Xwo>36X0j_xlN&@Cs!D90+tnl{ zn5V>&i2t5+Q=!o9%sG-HSm>$N_E`XZYAYYwE}u;Fz}gA=xJC;hCdq7Ux(|L=bb`U( zW}npi@3w_Qy3cH^+FQV~(&&nT<$nsu) zQU7V*&lQ1<$;^xo|K)5p|# zf=`>pN(e<-r<8~qFl!~ucvvNz$_CpXs{XxtuaB)cLp?GtkwxQq`fu~*k8i=OX#Ad@ z698W|CF0TS`e#PyXmBm%7bQ%W-E?G@8V*di?dW|Y0k3)!T2`80$ef29I#RyB zy_}kQEjnwGXO>R|y2KPyM3Sfc&A;QuOxQn{&5tF_@#{%tuBt>Pf zDcPv4K0ouHjAHc8_WMWY`rfmnf9<=e#En#_Mg@S<0w83M>39G)cr>kB+K~xRcfp~c zaQEnl^Ys1w{XZ`Wb6t3BjPXT|%AEzdFG!{owu}Srx%d^p zvkeFl2o`#j27nT`Q!9SvS875)n$mC@fcQ*AMh3Oomj2-l}jZq{PkUtI}k|Fj-eqE$zZSjy}T+;q}2HuigG;B1bb zY;nESIfB`Av{*M-s>S(4y~n2tOAzzP9$6zI{;8`%Rmk=6a=XY!K{yeKy0)gqq(5}Q z>vozNxQax2zLZSw=n7adch%oN>gvjZ6I5VPQ2Qk1`C;8#A%47{%oIkfkfkP)N<^bI zKZFMvNzDu274Pmz=pG&%!D$T!L&fLGsJ5}zk7)6dJCjb!$+cLm%?G1TwI4T44y8q2` zT;07Tlgad&q-U5f39$d#OqM9o4StNNccV*b8mxJkwW56xkQpAf(pi0B6a=Nj39`%# zm-15%lRf-u2yVGZFJoXJG8p-UEzot0Ms1S*7SPYqVD&v+B&0HD{&?E*&g*Ib66jLs zIbF8f-rg>CaTli`BmeTUvut-td#$&V2}g1-ur=5TC7LDg^C&jpw_TN)2e%>t3UeB+ zb$u*Rs8*^vESZQTzH{?;H7+g}Xvt4mDMW*=(3%&m`taNvF<`uWxoEn)NgvPPBK~;J zYGFBoFBr6Ruy0UrL#xAZqz`h|?bV!rM~s&5lG`i!1_xYR5<}a#!iv@XVC7nVN_X9* z0V)}a(reM&%z3$=a;Dk-2vQ_3R;(L6;^<5#dbVOZZIL*nKWpi1Vq)=|(*YMqX7>i8 zJgL>ffOv3U&J0`p9%(Bs8A*w1X6HE0eKVZ-lVv)!Kk^gOU z5X+^hZucR6NO-iWpZ%2812l;g(e}ftPVOLmUd|M>>Qj5e(L*LWzf*HPZxckLlrG$TOtSSNO4gmG~kjNaT60>7PC|JHoSzzR%baUZtvvH zvGF;e6gXm@T~X-y@U+%)LzG>{LNLOF4YGuufKf^~^|5uMbb z(>qW80Va&~o7pr2o2?Yz@gQ)xenaM`D}#8Uw50>r5mKXK^g>w5h-br7?hOm?v#)&=^UlIyN0{@@9Vwu za$e?~v(Juit@Z7-zeSQOZDYP;8I}`eh#whX;Do9$;ri;2=v72fg;xITK-4!+O6`25 zTUfJ25SOIiO{;8`wKl2fd*QIKO5~$~&6x^pA|h4i=9==+!+zE^aJ2W{#iP2fr#~_@ zA@FIANdlbA0+%{=IJcEJtR*Gf{iy+8A{3S7H!_9dTTN#*`RA;J_w+OhXmr`k7~^>t z^b8Dv+!p>1Ju%hj$zDCj)G& z-x$79CxjcSN9pjgn%U)DHA(bm{1a?9lEsYra;u1DmL2}w-Ew>4)l{)CM}$l36V(w7 z)hG0+XXpDN+9P((xi6bZ=GTZ7W zNiHP@c0g(}<6a!+qs(+6&lAo88djJ2#;g9<0c+#Y7B!NyjJNUo54s;i+fhK>yfn%?{@ z`dU+e@gzlIF5iap?`4zyr+vtfJ_IqrflSP!<#G( zbDj!s{`A!!C37g6mU9g0GyQgqLX~a*tGon z^5z4NO9m&9wBk)Z%lekZ>&nbQj{& zVKJh@arOfcZU~O0n=S;Vh1*^W(%h_Yg1C|R@tfHsJSgAL^FR_qqRle^(nDY;R)mig z5+&@TQ#>vh_*gOoj?&slSSXKIu-jwpv^s2GN*W} zxlzQ5?72=8eQeLetCx|Hn}PPB6A}B|NWE+F1V`R0E*OG2kV@mg&h=|rzM*<%EghBw zo7B#1LWO&*sXaE^B*!bXqvN@{vcUF7Ko~<#ov`(`GH{OJdo%Q04zwfjrM5!8kw&Rv z)PQsuuPNuaPeaF;N}z5=(VW$nkMwlvl7zUFA`@nyXfNAa-2Q4i$Rv0x^X8p8irD*0 z;-4;dq+$KKjVB*9+i+8L7z>TU-pk`>1~I<^DqGgzCZ+V&|qwi7{1VWDOXl~ zrP5D<$wACnnQgM=sx6#O0@E7=I+Mh6&RXE@5qHgc{i5^zrCr&svrCvbuqyqM}m$HzElk$YIj$d zQIfcyV3ur&R9@UuVH4Tc2Qm1nu=7^~r8s3SZg8XRW`oZm)QLXJHu!?4T{Y{(DPzdC z!o0aeI#XERJ>*eet;ebs=pR$o=8F0T1q5lHY+d|-$T&K&X#5nWc5V&EM({2s4u=?f zlKSw4mG~KrGGhpcw;PTJF14c*HUCX1{7qS2;hm#DuvFZ7N|9xGpE}Ij<>sRB0=^b* zy75opd3xPdFwzW`~@8)Ue%~zWI3-%Dvv!3VE z)_fNta=ig>PhD?jy-Qf=B<#8lXi()xIRDL}JCu>dhTA<9!c2 zdLT;_&;|ciGpfbk=}B#ED0J3XIr4gP#gzSchgYy>S16@}YRe3@Vt5U^K%&45vD>ey zZuARTKXgPbgu&|PnWH>dxtJ40x@lPCh?w5qC-9H%0zd*;w~0QE;ZA*>W=TgRj|jdt zxnyN4TtX`lT&1U@z7k#LY!@9Ggm>bAmgj&vT3aJA8NI*u=Jd6sigreW^A^<5<9T>J zq0eoDxm6&)e)Zgj!{4dJ=zm_@oR}OA0h!D=61&DWOR3D6=Ejb#Lz&lHiJbPbmtUs% z97lr${Mt-s`-JT1q1a&Ma1m%1#+&X;nE^z#o!*CZbROgzee3g`pg!AgQhcM}+ulGx z_Y+uDS53A8SDxR=2_05Wo2@k{#)}{&UrEvaTCh{V5%t8IqPxY1Hyn2KdzwGe>6y1% z{TtrfLcP^;vZpdgflCK(Ez~pl7%1isrK+g{+Yc{7#naX(9gPn!y|jERFcrNimoH=Y z25s?Ps}%(lhw)naygL#Eiz^9FP>^Y=j9TgHSY~U%2iwdHHo?(HFSZ@i2$lGbM>myk zq!LZPIJEk!9!S<*;kJu8SQdqy0m$&(!B|#Pae|lQZvG zr$Y+MdZx==j63};f3M}z713kzbkkeZsu`$QT4c3QDYePSWg6YgvocUh<4v>d=W?!i80=JM5~P;ZjCfmWY}oqXyLKZMF5WjUqS>#gH+?d^4iSd4HJR**2=Gs}6uIvbzAU3o5ZhLr_Q5Owj3|vk-h$Cp>tH3(St))J-Cy#0M+nY^jHFi zp{o+QpxK?tBD{gb7CGBZ84-`9zI14J0hltR!jaZu^6xa1ePkA6i!)6vC4M6ARBRWW_yS!MME7u4UGO7snP0U|$s zQ;8ycqguYFnnBL0(&?AgFh^8J!?%*TH8cW7;Qs^w=cCq0bOB0m<$XKy3tpL#M1R<&pA6wpt6PtE3MA1B8R+T{PR%3gSXP616lBXv|De>6T$fE)vL3LA^vx^-v*% zGOx2LI(|xH%|*fc)90WRdkFP)?8Cet$&b%Dp4$nyptmuJ2{T&05gAwzWYw(b^iEOg zwI1AT8}|u$i>-p*)ntgbOJP{Bd?GN8-JQXdiq*2sb8L%maMPHfPN+w|O$t01nluG< zLJ;it1J{&*7#3M}Ko2~~EH6FTk%{Z9u7Uo4zX}5<5c?$R7iCpBZE3-aHhKA3>qJ9ts^wxI>+(FbBVmkRx^!=kjS z&>Bg5Uj5_IhS z;oGa0+15M3+gnB;cP0Y{Tt9b$S{rwh=T!PGv3P8joq0nYd!Q#hu`{b!@^o>NO;QVE zBM~RdvxJARqDDHaB4hBM$(yiT7jNVe0**M_#zc&N0u9UVAMGf5@Ia-;1;AT=GP+h?L z(BG;1?D+OR7C3MCl*wFeqV@Ed13!m@KH@D`xSm|*8^wtAnT6QFmUXEZY^(J8Ua~RG zHx_QTAmI~MlYcI*DVJdBP}eW?{H08m znc4dq|Ad}_H2ar4hj}HD98IC^Sc=QbOCuY3+b1C-(0#UQwgK{!^UA@C7k&nqmYqX# zE2bjv25mprWM+t7mlyulweh?!t?z3(b%zh+3rxDOX#KGM+cj$U2NUk5`HDp$G)5wO zqC2`?&u(?U*+vbM$CxRo_vwf86pOAeH6)n6-H}_pe-5Cu}$98xVT&ixynU6 z-uv@~Qc1!gD-bJs}O`){+K3H;ZXj?~8FB*QCo?FWos z{m~J;m&8}V3gUWc*^uZ@pIAO#t&Pw#=33pG@|t4asn2RA<-`Hw_%rO88B_@%Kw?cNU@@F3+$AE6h_TgEc8)_m+(YObb(3)>h zCpuq;19C{}(6L%xWy!992){^u;kXQ?<~mCwledD^IyjRXzEwUG!LoaGNjAsVP-aXb zsJHwIE%rb|llO8dG;r`o4KV~lE{?eL1fmvSf`fhTjPfS8fdeN{Q6ay(aK#-R?b9~= zXHiqW%Sh!n>nQ)oNCLrJ+-UtVV zzx6Ux46qvZu!OQmyE|rnEBYO@WS6+2rUT8U7;<=^BI%j!cU%xMOOk*Jy;-2(@-r}T zI(zakKz*-Fe?Od>fqp?6nx)hImL%W;J=r>pmwWW++37j=uM83NIUgdG* zsT{hQhUI}MXrTRAHpasUP8J48%P@=J9eA;n~9ynIi3=Vl>j{mh=i}X84#W zk0IWO_F}ycptcC3xVScn$OJWY`b+S~oxvIjKr_*e`$(dVyYJ5MuMb`Yi+vadS!X|x z9{)I6Pd>vK6w&mVr1re9q>ass^T~mR84ANs!eid_6g2yszDKX3{qN@SjMq>7Z!07~ zlkz@ZWnxkz2!@hXt> z@tn5pp~I4jMLhc}-XB4NLZY+ZEgl2agb)<0ZXk{x@!{gz1bED<3{>m51+3Q+_qDgP z@*gs+rbBgwgbz48;q0$job_(x2}OBQnSz+P%+2xjYIk)L+0a38Zjg#)Vg?+%LS4bd z*35<7m^tB93@@1yTOuuSSmD6jVx0W#@s%eZ5e6VDf0fiqrKPE&CA?9M$IblL*E?Ei zH*U8+^0(*e#QW&{JOc`}!|XH%R#aQkTt;HQk5dtQUgBCg7fl;Q(@X=@)lu!M!kR z^}oL(dT7B)x8~*<3Mf-A12!eV4#$^FW_#F05Ns<(L3I=iG)01bgQ?M*+*yF>4|a=| zh9)W7&u^RAPcM-c~OhJDhfD`xLW2wVPr%b&2`i$vI zgyMS5^h;2HT}r>MG_1r4&TrNB1-2K{&jQ&0f~VdE6LZ0|RJB)L#x#-f539E~TqSP< z;C%60*Cb%jdpabgUVS1qYMkg9DHBOd+=eft{Jq%$F$XTsHcADt=Hbm8<;A+p@okDE zi7*I9(PC4RlB6H#%MdIkVZUp}ckhC?W{#eNZC}-)A68lgEM@1@1N}pRN4xhgkqvAV zA1K_M$^}2BClBAbPAepo)ESD?cIrAd#ugSSg-*^JgR_L}!mj8i{ef6{No5O0GT-sNnjA;=ld}UGVtfQ^3Ze z+biJ4fvYrj?;?N+v)ykOhgZpeU6|>1oLRjPk&CBKm5VXEOlF4r6AaLA?ohb9_88I0i2Hr` zGmS=!t4p-CI7lRKLz|g`a64v%pKzJ!{xV6=CLo)LJ)mf_-eZE_U#c$r3e5V;?YL{E z;BogUgXZkWrGl1y9fL_qpkhZ_4CV5XE%P5M#sSpnF4{egp2TPi!%_Mam{P7^>|Z@m zUyL3HXjhPx@=>|sy3Qp{ZRvcMbJ|@#t1c!DLI#d6iFQO7(skl!T>s_FY)N{@Fn{|- zpcADg^KGb^sr;>qk;I?~zN8DU$(5#q8_mh(wsafK;&ag=8)vyK zp;Xs{_eZt_Bt_rSF3*pKspOr(?Y`V-Wh#b9Tw?FJ~m$Nt_EVgw=G`H)VzB3F6*+CtpukQXArVQG67F-TDr zdD2iG7mip*SCNM0%AeRbzin3g6w2z$`nzyx%Qx9Xr+8yDxQX8K)+WbUYSmpd6e@mT zG>EnRCKd8w#$D!S`oh!jZ&N6F8oQmbeq5l%e*7bb$dLaQ`Dbx+P6H^X;=jYXBaXc< zQBvskwKreIv7AO1(X2)i6g+M+9&1Ouwa~0aF+%ao)Vh3!z2Fm{$(DcK{h_*SJ+cP* zI+?~%eCKt{&(s3#1#HFn<%xqy^7O8|AmcG)vi|d=p5dGr*;K@hkH8t@0#h1oy^z>F zbSI>mIlAm^kGwM0w$I#WPi1)WG5_APbnDsr01t=x=wGib-jcWlYNc%mi(WM+&_>y9 zQI2pnb@n|OH8xd!gXwAFEL*YRYm_FMi`y-k3uM@6pIy(8EEg+kcAxbX)zWYzqE0a| z>zy7P*exh5bw4&=IaR}W73j_l>wy+*AIP|J-tqA^^4oMv;N;E_;NBm9XtKkAXeRM? z{oeU`S)~C>>-CgEf18)_c20dFi^HfJ^JmF?=Z3j2D? zEY$kqBkq?MC$cQkorzK3#XJS`Zl*K6E~z9njo0pt-6fGcM$Q^BW#B6+PQ62g+Z^v_M23C(_K6U#hi^ zNyUw=GY<}B*FRn|=bN_S*u|aWcnb_OO!}E;G}1(TYj<`ACyYgTW&gTTEqOFDFD-U3 z6DgH@GMhQsUmBYYHJ2DhkI=6mgr|n)d-t}H_*m}Zao4C`g_05LiLclU!1nMEU);8TXM~@p2<-(Qe~!>`m4Rk}``7#(lYwTlxe>DOc~+}mDWOuVu7u_KgcF-d z#W(I9Micj*W(a^#Xrij9S%gE!vA*_Qv#DQ1caRrL!a-;G_I>@S~;c6#K6cH0%Umr z)pteD#}^MsK3bS?tlU&T@Gbtc6%XDVFf6@D59SmY7U37bbpTgd)Q6zu|28<4Gr71O zj$K_{xMXC7UZk|?DG+a!J$z{-rU$n}0MrO3g?JUuS)tKjpy^c@K0I#ucVGD0|Gt3c c|9!zFbg$7V(l|OT;Su=B%cw|~N}7KDA5=VruK)l5 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPServer__inherit__graph.map b/html/classcore_1_1TCPServer__inherit__graph.map new file mode 100644 index 0000000..771f04a --- /dev/null +++ b/html/classcore_1_1TCPServer__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/html/classcore_1_1TCPServer__inherit__graph.md5 b/html/classcore_1_1TCPServer__inherit__graph.md5 new file mode 100644 index 0000000..31f3378 --- /dev/null +++ b/html/classcore_1_1TCPServer__inherit__graph.md5 @@ -0,0 +1 @@ +f2e58c4b3db94b30349d2b968980f7ed \ No newline at end of file diff --git a/html/classcore_1_1TCPServer__inherit__graph.png b/html/classcore_1_1TCPServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7d525fcb2e0c6afa43fbcaea914c1680fb7f284a GIT binary patch literal 16348 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 + + + + + + +My Project: Member List + + + + + + + + + +

+
+
+
core::TCPSession Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onBlockReceived(std::string block)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(char *data, int len) overridecore::TCPSessionprotectedvirtual
core::TCPSocket::onDataReceived(std::string data)core::Socketprotectedvirtual
onLineReceived(std::string line)core::TCPSessionprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() overridecore::TCPSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::TCPSession
output(std::stringstream &data)core::TCPSessionvirtual
protocol(std::string data)core::TCPSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
reset (defined in core::Socket)core::Socket
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
setMode(core::Mode mode, int size=0)core::TCPSessionprotected
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server, std::string text="") (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
terminate()core::TCPSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket()core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPSession.html b/html/classcore_1_1TCPSession.html new file mode 100644 index 0000000..de07f7e --- /dev/null +++ b/html/classcore_1_1TCPSession.html @@ -0,0 +1,593 @@ + + + + + + + +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, std::string text="")
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
void terminate ()
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

+Commandgrab = NULL
 
std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+bool reset = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onRegistered () override
 
virtual void onDataReceived (char *data, int len) override
 
virtual void onLineReceived (std::string line)
 
virtual void onBlockReceived (std::string block)
 
virtual void onConnected ()
 
virtual void protocol (std::string data)
 
void setMode (core::Mode mode, int size=0)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
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. TCPSession objects are not sockets but instead provide a communications control mechanism. Protocol conversations are provided through extensions from this object.
+

+

Member Function Documentation

+ +

◆ onBlockReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::onBlockReceived (std::string block)
+
+protectedvirtual
+
+

Override the onBlockReceived method to receive a string of characters that represents a single block of data of length determined by the block length value. If onDataReceived was overriden this method will not be called unless the onDataReceived calls this method explicitly using the class and member name.

+ +
+
+ +

◆ onConnected()

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

This method is called from within the protocol method when protocol is called on the initial connection where the data is an empty string. Use this method to deliver a message to the connection upon connection.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TCPSession::onDataReceived (char * data,
int len 
)
+
+overrideprotectedvirtual
+
+

Override this method to receive data directly from the socket as data is received. If you need data split by line termination characters then override the onLineReceived method instead.

+ +

Reimplemented from core::Socket.

+ +
+
+ +

◆ onLineReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::onLineReceived (std::string line)
+
+protectedvirtual
+
+

Override the onLineReceived method to receive a string of characters that represents a single line of data terminated by a LF or CRLF. If onDataReceived was overriden this method will not be called unless the onDataReceived calls this method explicitly using the class and member name.

+ +
+
+ +

◆ onRegistered()

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

Set this value to control the next read event coming from this socket.

+ +

Reimplemented from core::Socket.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ 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.

+

When data is received within the session two modes are available to pass the data through the protocol method: LINE or BLOCK.

+ +

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.

+ +
+
+ +

◆ setMode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TCPSession::setMode (core::Mode mode,
int size = 0 
)
+
+protected
+
+

Use the setMode method to set the receiving mode for the data on this socket. Data can be received in LINE mode, which will receive data from the socket one line at a time, or BLOCK mode where a certain specified data block is received before calling the onBlockReceived method.

+ +
+
+ +

◆ terminate()

+ +
+
+ + + + + + + +
void core::TCPSession::terminate ()
+
+

Use this method to terminate this TCPSession.

+ +
+
+

Member Data Documentation

+ +

◆ out

+ +
+
+ + + + +
std::stringstream core::TCPSession::out
+
+

Use out to send data to the session socket or other session sockets.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TCPSession__coll__graph.map b/html/classcore_1_1TCPSession__coll__graph.map new file mode 100644 index 0000000..4cb7898 --- /dev/null +++ b/html/classcore_1_1TCPSession__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1TCPSession__coll__graph.md5 b/html/classcore_1_1TCPSession__coll__graph.md5 new file mode 100644 index 0000000..62fd9c1 --- /dev/null +++ b/html/classcore_1_1TCPSession__coll__graph.md5 @@ -0,0 +1 @@ +d91b664c052f7f888da560c8932ec871 \ No newline at end of file diff --git a/html/classcore_1_1TCPSession__coll__graph.png b/html/classcore_1_1TCPSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef707c69151b14b5af20441704a71ae0b3a24b1 GIT binary patch literal 52824 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 V$;U(I`Om;V5dlg5VyO17{|7?XP_F<0 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPSession__inherit__graph.map b/html/classcore_1_1TCPSession__inherit__graph.map new file mode 100644 index 0000000..e964cf0 --- /dev/null +++ b/html/classcore_1_1TCPSession__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/html/classcore_1_1TCPSession__inherit__graph.md5 b/html/classcore_1_1TCPSession__inherit__graph.md5 new file mode 100644 index 0000000..a9a8cbf --- /dev/null +++ b/html/classcore_1_1TCPSession__inherit__graph.md5 @@ -0,0 +1 @@ +2c8671946d0c3e01415a24c54fcb59bb \ No newline at end of file diff --git a/html/classcore_1_1TCPSession__inherit__graph.png b/html/classcore_1_1TCPSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..77ca0b1bade855180e9de274b86b435f1518ee04 GIT binary patch literal 15334 zcmd6ObyQtXw&um%-Gh5@cXtc!9^Bm_KyU~e2=4Cg?(Xiv-5uuU*E9Y4_3NHBGi&~M zi$z`Tsp6cHeQJOE+h2t#%1a=?;=%#|00b#X(Juf1h&1pw6&ezFB}ZmC2KWJKBqJdT z`1tda)m|760DJ;Si3+K>r=6{P=%C;2LSCA=H6w|kBlm0H(9qh+jk1ons&v(|_J0|! zbW3@oVX+%mRA#x*M#PBWo&9nHJ4FYfgsh|}4Db_Jo`Vt^I15x%`2Zzh0**nrf zxPem(@{zx1%Tt^iW3b@AZ(nQx5)sZeZMnsp7CQZ#UlHwFGri4}#|*FcS_S(lUD@_= zI$|t-=zOM&xQK*RvNl(iQlr#mN5<3PGAp$16r`Hm*H4PNT@TAxRp!^?MFZA@6AZ1n zN*Hj-nmoG*jUG#PGInd4tO!;;bsod9s8#sATJwSsaI~DPXAu`M{ep1lO(*3%>V~7l zXssb^gST)NoQyq$(!rqn1W5_^GQ!M8N?&||^Tt<%<=Zq5BQq&V%Cy6|&x+J{uAJge z0j_s`t^tMg7(z*Uw1NmPts4y@qDCwm&mqVze}*XBYKny%|Bmcy>!2Y}hqd2-*T0gb zkv9Nk=#eTINyG?;Rg<@CE*!J7bmn=;QG`L4nUW*8M;Lh3q528&BSqbJnX~?eRZst! z!ziAlYEvXaA1bPAMbhRypuW-hfX0~%`gYS3tWz!3O1mulLE^sHa-K*1RVfv zXLmvJR`EQ7v?Et~Z{(0nv00Zk%F=(LMi8vt7jJP~S}O)ux?tp6qy_C#l|0)cU8n1= zTXa(ZHHkrA&J%&*mVwK#8~Rx13C6T%-C&Y&D!>~YAx2sK>iW)0LMiAyKO|h2j7B$i zY`|0)oNs==E#%OEj@QUDF&z2Xi( z0K;;j`000TbIGqFWs!g;FNdj|>)IRYSecuu%RRw?U@O30uA^&!lNzV3=pF-8zOpK( zi5LmV{xGYY2`9-mwAo;xdLiXOqN-|XZi$>iSf)Nk}YX#*P@%i?so0n>`$Wob8C$|5_M^QR_p<&vJ?T|+`cfu z(n*g<%)2x4ZnS*wH$K=gcZX#r65ScYRT$$=0Ewrt#hy7uO_J3OjDXP`isXZ;w4g;^ z@T7WPRL9`ei_gZM|qkPz+qJVtm8@v00m9MARDhRNkhVn~w>JP-?i zpuSJ`ci!L@Q6~;I<5!{*1-;Pem`v>`+S1OR>znGKvB=&{+Ct;KaYXF3M)CKYgrR&Z zEq#B_Q#D~uEpyd@E_(xy26~KIbdP8fopw;EgPm628`oD!?Y-eRRmy@hXxSc3 zULYeYbh}DEC(0~3DyoQYQllx2e}HkO(0DAgrYS?8^I$^+3xn9%+3j|W{o04bY@f&X ziw^4xK)LVtoAqG2ykn$W%OT5+MZ@yXlH{2yF(kE;ire1Sv}1-uOyzI7zsBG=s+q`X{6xYq^#SULlLCa{= zr=85RsCv$6BI+I)2S1R(heh!KZ}Td%&sv^0f$I&2~r3Jw}3 zIZlwkJG79c<+%^3tZc$kEv4kXsEMpbf(f$g8SJ+(sq^C!H7onete{Ofw-W&2E;@a?>l1YsYd%A)_rA)%iPA5I% z)#?f%TuA!b@SE$>Y&a3IO4se<{Q z*LL30(vU{RL|wzhJvSoAiO_m{q43i6mhqRP487Bh7kG{m#H2mCcK_rd|2uw#B@X(* z1D^PqgM;Jo>1miCS5!lTRZw0Yp7obXb8Z6k`x6c%S~Hm9viWKQJ%!vaGBAM~Lltg~1W{4c zKSnbX*k~+$!Ljva8Z;@O6j?Te_f-Y;|wvYrUUdZqSS3k77x-8p%nVR>*GPZn6Ljy2yCefZi~zJk5WjIP^$ zks#_W0~z1`(hZ7 zAS(hVk40*1lI14d6^HhPL$JL=2IW@pa40=^z4w>#b1*ADwjol!Fvty}jP%*vCyzgS z+?iY%;T)X6+Hp|6Sxzjr1HRKQD5HmBSwS>V1~<2|K&aQ=_*iEfD9HTJgZ{*&$oEY@ zYaA@ykXPti{gZD)E}bHJpR?N;87deSAp1$!_@PHv!Hr)1HJg5r6G&*bv#qoQ84s@I zFJalEg{7>R`3cd)S3G&h3i@0yb{wuiS(SY53e!cK>Y?}|Ve9l?eEZL_Ysxp$qBSQM z7mSLE3bA*eyF{YCRJF7I9Y(nh3$CAL;fv+mu$7^dvvcZZ5twS_{jZAk$bUKLMDy0m z7R3WOqzqauEjLWsb6z&R0hB9?J4mCE*Vkw{KD%$Or`t%Y(rx^bG&U**pc42}9I z#bQHwR=$omS`iNg44AeEmSMIxlVL9_B>QS1;Se^~q8CvQ!3~m5S3!-9ja!+S+glRY z)I{U$RDH>dB49sXdGJ@3yh2$jqgo~u3W_b~MdZ9DtM%Vfv6c98tTC;hlUd^$=S1f zbu=$^WztqMuQXpkxiDx!9OQnTFV~&avCoh(S%AsyF592=4AW%)PEm)N;ykYKS-Fkv z09mc`7-=zMb6X{c%E%T19aaxy2)l}knn-oG`_lac7c(Y3B6pj5$QwC~#fq2dL=jT< zSCgS+t&9e<3&Lj#6JnNo{I-H}L5-8_Lw$YKOLw{NMzSx0V}yK#(cyi&g{<`ZH9&KXx{yCj_U}QN6Z5QMzwd^`_EW_6n2yv6!(oknc9U(TQ>o zU2kvHocOtk6Xj(=H21KgI?drwYh84kCTnMf%-1=CRKdu?srG7gcux&Q`paK5Ru<7N zA~hM_eSUb6eSW#O+gU}@$C_9u=$R{MF+YC}U?`pj)!6I#)%JDF7!;VUJ$rZO zMr#ay0{j_8EPp!9Ur8a3pEC1>lZ}AhRcv4K_ddplmZqGh?^9L4g9~GvN2C zrD>Fb0Ty&vm<6ZP{=n`95`Gh%G43Dl$qfB+uPeO4_PJgQM4%Jk0T!!ds1zr3d57Tb zoligv4hlx$=tb=&Ga?j= z(cPc#QGtHAqhsx@pavMjwIA%F0iyPo-Kt?gf`ZoiqwuPk^GS?*fHkhW;&eSdMsRJY zO~u8>(^7;vGyTBJ4OZ%(WaZ#GEHve#A$i>1bqB(Ru&b%0D$iChg3|EivS)L1<1a5d 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 + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TCPSocket Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out)core::TCPSocketvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
reset (defined in core::Socket)core::Socket
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket()core::Socket
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPSocket.html b/html/classcore_1_1TCPSocket.html new file mode 100644 index 0000000..d2e5aea --- /dev/null +++ b/html/classcore_1_1TCPSocket.html @@ -0,0 +1,253 @@ + + + + + + + +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)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + +

+Public Attributes

+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+bool reset = false
 
- 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)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
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_1TCPSocket__coll__graph.map b/html/classcore_1_1TCPSocket__coll__graph.map new file mode 100644 index 0000000..f4d937f --- /dev/null +++ b/html/classcore_1_1TCPSocket__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TCPSocket__coll__graph.md5 b/html/classcore_1_1TCPSocket__coll__graph.md5 new file mode 100644 index 0000000..ca4f444 --- /dev/null +++ b/html/classcore_1_1TCPSocket__coll__graph.md5 @@ -0,0 +1 @@ +a69d627fda6b7a8758be09478d2d90bc \ No newline at end of file diff --git a/html/classcore_1_1TCPSocket__coll__graph.png b/html/classcore_1_1TCPSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3502a16c449ca52b3dff1c13e018317f3714febc GIT binary patch literal 18644 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 + + + + + + + + + + + diff --git a/html/classcore_1_1TCPSocket__inherit__graph.md5 b/html/classcore_1_1TCPSocket__inherit__graph.md5 new file mode 100644 index 0000000..9360946 --- /dev/null +++ b/html/classcore_1_1TCPSocket__inherit__graph.md5 @@ -0,0 +1 @@ +ed96a05052a107d72bc616de40d6d990 \ No newline at end of file diff --git a/html/classcore_1_1TCPSocket__inherit__graph.png b/html/classcore_1_1TCPSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a32bf5c5854f0120664e19bb6bea23279a1ff0fd GIT binary patch literal 19946 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 ffRYSR+yArQo~X8gTe~DWM4frq<-J literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSServer-members.html b/html/classcore_1_1TLSServer-members.html new file mode 100644 index 0000000..5042247 --- /dev/null +++ b/html/classcore_1_1TLSServer-members.html @@ -0,0 +1,132 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TLSServer Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
blackListcore::TCPServer
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ctx (defined in core::TLSServer)core::TLSServer
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
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
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
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
reset (defined in core::Socket)core::Socket
sessionErrorHandler(std::string errorString, std::stringstream &out) (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(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (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()core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSServer()core::TLSServer
+ + + + diff --git a/html/classcore_1_1TLSServer.html b/html/classcore_1_1TLSServer.html new file mode 100644 index 0000000..974028f --- /dev/null +++ b/html/classcore_1_1TLSServer.html @@ -0,0 +1,330 @@ + + + + + + + +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, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
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)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- 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
+bool reset = false
 
- 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)
 
+int getBufferSize ()
 
+virtual void onDataReceived (char *buffer, int len)
 
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_1TLSServer__coll__graph.map b/html/classcore_1_1TLSServer__coll__graph.map new file mode 100644 index 0000000..4bc9a47 --- /dev/null +++ b/html/classcore_1_1TLSServer__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1TLSServer__coll__graph.md5 b/html/classcore_1_1TLSServer__coll__graph.md5 new file mode 100644 index 0000000..5afa3b3 --- /dev/null +++ b/html/classcore_1_1TLSServer__coll__graph.md5 @@ -0,0 +1 @@ +e5f3115ed3e2432dc573197270b5fc6f \ No newline at end of file diff --git a/html/classcore_1_1TLSServer__coll__graph.png b/html/classcore_1_1TLSServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a772b23b50976348dc452ee8a32603babb2af55d GIT binary patch literal 46441 zcmb@u1yGhz7cNS7cQ?}A-L29g9fC-Ar*sRF3ew%u-GX!}Al=bLRXr_n$Lo z?%Z)4RD8d8@3mJv>sikxO6|1*ItmF26ciM?lA^2z6cmg)_^pJ50RAQV&YTf^K`>WQ zkcE1N{L1Ml{saX@1*Ie_rR9}*wCrh!yGx09riue&hH3c&0lSHYrl+!5?$9(!$98$6 z#P_fM%~$K?XkVz`t%MHhQtF4sB~)s}DBPBGEvuAx>I+!SbbhPVgw+J>o;S#O0e&Yf zyMkzaoK&G$(n!>n*h7{g(A411k)nAxa!BA$8W>u6kgw9i!OD1$uZlv9wd6r~^;Tmf zOP&5-j)}HN$H&LhMZLKfxxjxM!eUnE-n%|tL_$UmR%3iCf&z_&gVXB)2R@!VQaL#m z2PF&%4ehN60`%I+$@u^L_Z?Ym@cqza*c3*{*N-ka|M7O;{)yUxmKXPAik2eCkR@4Z zp&d$^XP=-4+hd77W5 zithzt@x~FSzY{arF1`*D-;}K?4n8+{R6~kBS_=jNx!8ZQ@xkVC(M*UvoPnBe9r@|2 zLqwbAV*bbnwSqeGL|~#)DrR+*4@xKlMTzVswj~&RVx;w?9jFO2E`x@$T)VY7fjsFp z$W)X35&63shVl5jCyW8{^kaOJ&eIxb9*v>#lH?9g#HQjAW``y5H9Tq&(VxW+JTl;( zbu*r`Ud5)3Waa1t^7qPy`F$miPWj{+B5+TIF|ilk$_KBeBOtGNQz+OvfUnL{Z06fc z$03w->d;N4z+;U(o3olDu!A@t4TI++RDEkG=TFIfK9^&aPW(AsvuiJSWL>iG&*$MM zdSJi2wGvq-m>&jqe-5I;u#eY$c@VN!jCwb$%x({TUQh+ZyHiliN39E9@9-oUlYP)V zK)AYDiFI;bf&S+Fx7ydqm@;}k){V?LA!4=rs~*WJsmRFyuoeZsV3?WTGd$85vrzo) zHauKMlavXELPwF8eUc8|DjUMdc|%4;CChUi~&+&@TyI8r42Yo8D0^}UF5+$Usi3LX_>ZW8JKO`;d! zm#$Z2cL<4`LA5D}C==VW!_LU4+jXTUk5p^E}^f zV?z_q5(~W~#@PFvyA${hZ}V>(V`OJ|jI=BsEUZNcj6^2=HuK2?lvDRQ6q?M<4hZQ) z3=l3sx{grcO+LZe7O88!U*5hglHJ(xpkx(%fLH#ryuN%3{p;m&`~zj(M`BOX!y@`w|HfvHtq|2b zk{SCA%f6OpeG=j({i~22^kWO3=={$Tjp%|fDyj6w#|+{GkuO%}GmF27CKoGAqnN36 zomUZ^+|@M`LOfN!(iCp>@B$|*kk!h=gPudk$IR-rtE0LVB$k;NhIc&?P+0v1BUuXl z0+H-H)|6GVzKwKwqXoZOlesntJehDvMtJf1%ru@p-_fL{G*$ms+Q~O{ zyupH;M;-8Us;VERw%iblQ6%02(nFl>D|g=4l!o>OffO!1|k z$j6CLUXS1+|BXh~Mki(_$)4D@z^w2!F4~=8t4IP!!eP!tt)0}aOUuj9P{F~$tPExu zw|qK{HsR&@w9W^F9nl=kZ(d&=N`Wn51@q#_z14aBXtWeF8yuE_U<)4&G8q%fa+bnd zjqyKGHHQIMpZ#^Iaw@qOogvv5rbHGyqu=o`rfI*^ZV*x$qGi)A!FT?%3aCZVfWIR# zAu_8M^nR<8lXDmu9WCvpgOrG$xl!BP%)-JX(9qC!gN!;>MMMhm?K0Wo1e23%g!i8f znl?-=3z01>8n`K+R|9#l@KX>B4D9#zQy!Z$hH=Qr(KR(Se~qgmQOokHMR?sDHHOF^|7Q%j4LIAnNz)~s1^dmBzbBlAzNzyexVzsO+ok2_ zC!VVs3yq7D%9uz?PmjkSPo<@%##dGrRip!nukNU&(SXb9oG4@ImpZF@F*fk);%_c-PyUaEqvPH zo47agPON|9G@ER6_mT=Hs%PEF^xeDIc=E$s`$b_VxB3r~YPZ{Rz%ON$OJozLkud_o zxGb(|gzivf^Om^tD=I>Dt5c=lw49aqzMByLezqQ9N)$A>xv?|0z$s9zUUm6=w@c4z z;Bjy3%@UiW;ZVA9+2Z6>(;oya-P|UUdguo^Eabff?*cEHM7VODtgzx;0y_F_LPqwq zkW@DNXjU~Sr&D9N-#h5Fea<5e{5QK_V-H62IEa){LvEz!x9r;SdH!(pIkz~O(CfA zehfT3h^{-2Vc4`Dw6wH`hxFelf0pD13%kcgi;iy&P7VFI3ouDkj5TWeaDHx~-*PD= zsAqbAb+YCn6y}hoNT*j{A~E}O!9W*;km4Un@QL{NDUq+Ubj)u~Orcsvi1Fl=q7Vtw z?guCi$Fn@c#!ZqG>E>%U^}}4^Nq0YBkRM1X?LSbOP$ZzTv1z~j>PIw~AWHalB8j*MYhC1Zu;H9D=lAzeduL|XZJ8MR5R z*-{IwEqb1CX#J)t&7<0rC2xZ*7r2E5^V>UkUB>eGc#=j3a+sjI&+j+CXXloe#|ya{ zI$!MxhDHqL`#<0dy3kcf??U1qMTR~a&(zj7vhE#2-$*&Umnb{%70Q%vbv)8zpGo9S zD2eZoqoVfZ90;TO=iBd4rl-F#C)dfL+K#3tw&~yRO_8synV!3U`SgizJUjb?amQ!V zjs6fKJ{wGNf97XH$l|vYwDJ^lH8eWcHU{2V&y8ag6$zVgd^x{UrXP=J_2hsdd%d2o z=RG}BSL3)^iLy&3(nu>GZx``?24y9#xRj|o8lOVY%L(sfH9g`<#e&|yrNEi(H_HBAjB@|?i z!(S{z!#LWE48UpIz5R3YG_LZpkAE+$Uu^I1{i?*4k6#K=&%eeK(U6BE1_ZI|Fg&L% zMWPq4MI-+{DCEgRw3>8LkUgT*S&k62rUzPqV3D?71;DEPK#Y7UeEQk;^i^$}`iKdISz00j;DwTw8 z!JX-1Q-d;fFowm(&Mru*%d4+<*;OVN2o6hL z@FpgXr6yK&^%YS=LkSvUR&wrpYJ|E~qmpw~=;w#k0sqcEkp1~y8@#@ZkXaoL>TKtg zXez5v95SwO{u`c{Bu_?K)EJV;$d8pc@LLJW$BP0mo~NBM57#43>%F**77*kC3;GsW z8f0K~BvMlUmznb|8smu~IP|1xmnfSX8kD-#^wdP@n*C*t`BAzR`G7;NIC_cmgcE=s9ti^Y;rG)0^ zAHwO|$a3(Dud4o1Pj40qDxB}*KZ7Wa(Hci&30cOcbSf)_6WM}U>h3hPzk2X z7lQoJnvbK6URY#hzSR78Z?+U#RLnqY!Mn1;W@B08jz!(u=Z{Tvx$e6>by`g?pPhK+ z!s3|{&@O7}YUP#XN<7_?5)&`zwM^$LPuSX5CY+t!GK&@0|EwqtCKm}ehrG`J9`ZU+ zxt#tTpBXeT%}#F^!`V$&h~>yqZgusW!rjIOK3NTo)|VWvYWgkt8a!%U0c>7gc6sVd zpfd|Ek=3RJsV1GD4eIMxwzY%b1;Z1Lwzf!AH_!vok|rj&0RdeB0?h7*1aZpP(u(d< z^kpO&LOfWYwvT?f!DZPM;GPaIDv~r)*818ma(nQTC%nz~q(n>9nXR8z`#3S!~KA$XUv`!oK$xj2QM=~715wy z{_shW=w+rC*8M$6I$t@%qBBUgj5nTpDgBdbsJ_=|gP?9YUu?-VH&@77?-~3L-vp3q^83`a9n*+Ltdzy{`p|zY<)_vbr#+C8ZKWY z?dR=o_RYUt(!c}!oUBOK(;tNhsR|%qYsq(6Kp267h9bsspg@L!7=j?Qd9h8*$vG)~ zy3+Y?rzk;Srx$-Zg5FI$4cz~M?b*GYkH5svo(L(ld==I%Q%wiF^z4Q*j$UP{#@Cax z)x#(*0yBR;9$2X$6ST8Ag9-Vy0e|HlPXjvuhU)jogt4$90G`* zl3?Z| z7Zxu2XHFN0IdA{obbZXo2*GC&osZX`0f?^EJ?`vkzspV`QHX$m4~u9oWFY1NvY=K^ z6B$cT5#Qp0y*WKS;=&=U41BY6n4Ft?EAqN@w%YN-yNME6{P2;nY?i`OCdmW}+ghJL zLXiVFjrkzi-XWwg3f=5$l0cjnfXl0+h0tTcLLCsEqW&bX;b!ykG&R|(9 z^EK-@0r&6y8;nRkfVX0Urv*U10p$-8h>PmO1!gk11w~dg%*=_$jNAY`n%qX8f8XO8y4au$0&!S87iMQ+%rCo z#Gv{VUaHwfsg-_|Cwh^_p}h#UmfcM!V(2uY=96xNU{IS7e}SX^xVfb?-g$Rtrov;gVjGEm57 z3Co|II|J7Z04o-&T7cfDhP*gP>C=mzKACIX zAckpb)%=7|tOZG0b(f8)d`7z^FXZQkY!*8^wE1{iK2W9BdqO}Cfi#=LvC7G0w-@xJ z;^GhMTW>>50^W~#kd?YP)pY-TNc@lgqgTI&hl8V0<55W{NQSZKTrdoZXkuda$8<$k zZ%B;<;DMW6@D|_W6ytjmy#puLl%+`gET63vG!!q1T!B2!9|mD-kKWY4_brIhire5+ z`!qDTx!zBkxgGz;`g<<~HleY%SJE?F_JTt6A15i>sTP%FR`-rlN=FAnr$X&Wr2jKt zzPI``L(iay2xm(*uH6-1PF@~Hh_L;d*bUOx;wdC_z{CJ%li2-a$>Qu@8v+k{;73squ)sL<3wcw>$477+uXIm(_qPu0*#jE~7m{ zo6XHDN@z8D(etbgs2<$SZ5M`;pV@Jo>eSiqBFwkxB%B7xzE9mbIC0K|qnJR6*;0${ z9QAw)5Vjm@K$8jGnItHY>N1n4Xum_~v29gEY5Lj75LHp0260F{hI{iH($Fv5c+xT6VLmU?@s3yfn)`x3~<&sGOgu;Q^VO zd4DbgOS)5zUK!z4h6|C64RgB44MStTRuljsQrg;Y0yy@SR?N$FRas-LF;~BE-CmvG z5D1|5nauG(pSxCEo^`)Q8>|(`PQ2Q{YS$3R>AJBB-EDw+yLoSNv(_$-S4+GvxIuy0 z6)aZE+bQ6&6eDBPD`w|}(s%oWiuGCBh3tF;70Jhh)W1VNXDDJnnOpa4f7fZ@8tOcX zV}0(P_-U>K-%764;`vj;?Ugn9fl)>%F*NcJr3~w#xG<651}dZ{&I}*Q5#kg-XOX{` zle#$OQWcf`B5_K?FN8oicvkan)DO-dnkpci4>o))eVxoOPDy(9r-Z3n52cxq{rLg>I}~tN#?bdwD~St4f5y%` zGvCR7p6AwduuMy5c!dG=B9{SOSEl57^?a;$bHfP|Ib1cO&^!WI< z8=~altu@nN-f=Co4?YOGhjMy>i-Q6!D%J2Lb%MT0 zWbY8!FU5(yS{-Rx1^C0_C6Nu;F^k005);#dCXycg-L5VYeyo>E64OM=qR~0mDo)l1 zg&9BHzxU%|NgsaJOa#pkD9*7T0jm4#hSXrQZ~nXf#BQ+E<@%by>wE)tdPc>$L;3qz z>?^a(KM2+NsHp^1x!6~AH0SL6fnNkK&}qz|EJ7RuAGXt=z9u5a^7?dh7=!eEAwlo9faAUYU#9n^T|-JY$4yk z2X0EeWOk8#qv%5z-A&(Ry0e-+l2Xpi`G)wGW?d#H7aH9Xd!x_8?E2n-@i_TK;l0CI z1?7hnp6ku`8vNXO>=x&zzUQ61=&@MR%mC`4dHrD~01#jxnQ3{lAc}a=S9S z{?5?tlWoXU#A~z0H&}j|vAOTIKM37?$#=Ac&Y6Y!1dCx2Y0YEE#+R$TNRIgPJIz@R zrd`Ydv!QLQpc?`Yx@uo>Ayd80eC|l7WTcovPMy_z80VZ-S6T+!f4zvRY(b)Pyx!u?ec8$%mXsGp1cbDWh|3f21_b-_38R zC9r9@gXLnUupX}-oejlGis|D-V;k?w%OvCSxw#HY!oeJjk3&q*_4hrlF$;hS$`T2* z6hiJ^cUn6=#l*xMFy2eva`p5?gn~mr_?8LiPX?Is)75!y^FIf!z#JH$iTT+o2_2N5 z&nGRj`oTvGP`uu19nZh47CL;f=bO*DAtXUX<)4N4KH=O+63|_F{S}TsW&~9l(l6I; zjilK@x|2%%1@p7DRJ*}MWOUNc(lRpe)YOg(@u2k&O^#H?Qz2j#3{Ie&sj-R!mHPD$ z5iM9{WkX&^hp@>>0Xqce|%w^mRk_LPGUN0@R^+#rJG+V|k#OZ{D6G&bN6Ay1D;ch^PH@ z>qqgKk7uybVEydMuE!>IvB|N{=V{pE+79pN$j#K==oaOxnHe%Cr&?G`i+t`P;8}6) z?CNt$ONm$vp7_4AQ)<5B0bq*s zL45?d?4#<^eKd4*hW^3R4|Il-UHb=GFbrB*G7>9>K%*YS|;Gc$!Y{z2k^QGb|HlHedz)7Gm ztEU|OeNY964(@yWF;ebi__3f%FrYIQ77zp++O0&Qr5C54+XN+$Hc_A2HTLeHBQWO-E0<*4PgKVMZh~0Y0SNB5 zF{X)(Ax80mJ8CORG9?+@W5+n1f&n>caGX%;GqEPDK9T)G7gEU zBfBY26A0Dt)vvj`*3E5p?U)TNdqTzxP-sb?cxv4C-wO(}cb_Z^yhmr2j+D;9(MASC zA0iPCN)kTqK0xDwcQyTPsO$S#u9Y`z`~0*BP?=utA{em5#>KF!J3BMMcfP=h!X~*V zfQI%&wIk)qGs<->>ZDKPyuD&V@9E*4i^Iwz0xZdg6qX5U?h9H!f5f1{d`D+*2tjyr zBDZ$Ai`JMwlm(0EVDUY+8zx`gyWd=?mR8-{a|geFE$~_7-n~#cfcqa5290R!F0-It+(Q0~&S7b0c3NXOfXmTq~HllKzH zr6bLAB*qFDX=zD8b0vNFtC2`hZODVHrMR*Z!PgfRgbqMxE}P%ubkq3`k(BG!e3a5I zqe<9?!5HLXn^4gGVBOQi@%Jp**ylF{ME=`OP!<;CfSyA%tTL~LQ$;E@E|FE5db}Gv z2W|GRigS(I!Emh$LMIB`i7s;qOYZ; znS(aEc6r_*;5E+*I~XcN4%|IB3qm?|urW@z63TDiWF;uVfqe*47@1l;j_I#YyW;R! zmdxxb`aHlVGB-!qnUHu|o@;Y^kK}r}REP_jw4KrYFzs?t=eGNVzh`Afe|O~ zbY=%W3=<^&uwbbkY&K6%1-su@JmDDjf0yUT$ynER1<=yi#rgnONS!!IuP+_xmv33m zvUl2by1Dfu5ae8>y*)g!!O&zAKvi>@_p|p86n0Ol#en3vxzsWk8T%Lt24yfq{yHm^ zfscSk7Tz5D5^8=!&M6rwANO*7&-%}w+=c6FS3qCk{cfz(JnDpzIvLV6({E}Vs50u~ zd^?0uQjS{V<=o}c&I9rmIxmhkw6pV%be>(tfV)C`VULPI-~c~6JIJ-PZkxT%nHJTz zhJRJ+LVC~HD*LnLId_mO)=brpI&ojPNk?F~cM&i`Sx@znStOO^2DJ$a!D-5~Z&8{Jra}f0-3TyLR zHJdHD)(|NIH6F0;smDen?6e<_1dspFJ02q2mQtRNd;%?y3CE zoT@5~3ycEkR(IP_Vjh^p)YL!Adq_-6J7Z~6&9%gtS@s1UFLNgmn3yuWo*rRI_<6zD z_Ws5(9ssMNm*sPhvM_cd5=olG$=)x8 zSYXo0^NvEv9S>!wV^LLCm%Pa_LghH!*!Z_rucOj&Ggu{liEK)uZ0}mr zDn{@0w-+x|Pli1*ZDhbR@$outO4WECN6q1Y7g#^|En7CY?IZ}SsLXts*U1Oy;+GlI z_+Vhvv)-4hA;u4w^%uU;hgV`j8?hcTveRY`G%%`MJ-WjX@;PmARc6- zkesc`z(5)r+Malia`B15Gb}+>;pG>CAY6v0#DiL7>Vj`-QOqHLwES8u1)>`m|hJy_fQw~0@rT?G7)J~z)yNJodz>rAh154;RI0+kxuIdm@{ zVJQ`r295Elnp`GcKKN$;hgXGU&j}JfeSP`xV3-#7MW9gN1|)B0*pw0t{mw@;8d{0o zxw*D(%>$*M`^$?IVD>HV!7ny+tw6{wD)(}97ltKF(4;n)`gWq)HW3XBNI3}F&v zMl_1{j_Gk3B{fzmYx`GOEaB6qIIYvk2W&8AuC5mNU0)hPEz`I;m0zMPLI{pW zHt|sQ?%_e#5~KG+gYDcm^4w8Ck4?6>;Kx%2290Nt){rY$L8!ei0wxv{U)NIt*a5&E zNzIa%?N`v#|5cIfdUhvjxB7${jmw<3@IL6wADA2wcfnE|n1zGofr$N)L;O zXvibfWq-MiDV0qmZgi9k(5Q`@L!rxUj=jBk@+qPLLx2`5D;oyW0L}OGC_@|?Aqe&% z5rZ!t|I7)_&l4rL(}D$Ke_oQ=iZ8d-^t($68A*G;{t8M_b)t7F-;>MBiN&cUQ(1x% z0D?NJ9c^wCC2eiuHc!k5FmVbcYyBqok(i#vTLS}x$r;Uv;$16{(zJef12+US>PW+b#W`qjic-qM zgpK(%fN(U}o11_JOuDwmYX%0}_P}RkE-oc)7jZB?Cllr+@e{{{MX;07(C|sgOanp{ z8TztJI`zQ35Gw||yQZ_0FDk!ZGZ*Pr7p=Lp{0!h_2F`5UejC&iVxY6{4N@?eG?cj^ ze<0!GT|1RP08^^7v-#MqtypFeNPht4mWe8#Kf|~k{=x#NWg)(|Y`HB2q}8zRabsmy z?ZB$m(*-s=a{ePjilhn&_f&wB1=f}E@zF{73OL-(LNEI0JESg(gPPBHv6XEG4DN z;_f`Q0nD1xYOJLWX2I)Vwd(3oM8a+i-@aL|YfB@E;8n}wMISFh`&jCOnbZ9Q{}I;$5Q}*a!cMTqBNyI`z`m?7vU0Z6-0%E@LKXPe2{KKtExzR zuI+k<@3Jy0&UaqH0D86jaS5O#K{spOucA>s99>5__(#ap6(5zO%#);R-xr`Bkd(>1 znm{;~KkePDU#cbhFLdKGDJ+h}VA2lBp5S{X1Q7#ig&YilXEe_2z8ZHeg?Zu<8M#-K z?rkqWJeQ9?kH7dnvi(}ET!PdruUDL79lhKj_u=%@_Jm=G@%Z|pU3CZ7q2ekuzXe0<=O6XrKNEWX zw9rXOjoP$83*rADOhvWE-oJ71=fu^eU(kyaE(D4DiekIu37XE_6be0{{}7?GckCvwb}u=VQ0jG$YgU*2A( z4B?yeUnUfNoRN%6Nheo*d3w8yRYt!5={o80_GdKbnRf0MqX>ZYHGl8tc+^Z7F&pYT zzlIln{+EzS%VvgBu)B%yC_O>2_7dmwJ(`?Y<@FhHS!`dM15I_K)FYZL0$LAOpHMT& zr_hq}!0x>d61^_UEgfX1npf7a-#Ox?CPF68n7GIYby}%*uIT%@1{}*B5YU`@BQUey zv{dvLfu@(5iHRHxb7j6p#b29X$msp3b)vUNuoX(Zot%G-wr zo-n@_#sB}5ml$+PrXC);7Oa77J#PswS_IiX2nqB>P0b$l+rhp(YaZ|lTTYHj z|8eYr)yns7rI`8P>Mv~D#A@&IM;^U7CY;OGIC)7L&ECd?-Qw({+^Q;=z-KkcjzSP+ z)ar^5KplSE-Aa*VtcQkL>UfCXrh~{wYMnPH<{MauK+|s_fyikn-L#@V$ElOXdiOyT{>nZqNLZIQ#^--I_qv2AhgGyF8|1Cm$eMz?SE{!dIL zewN--{%nj0HkGr~oX@I6%p0nsa2*a0iwRonX9KcM^>y#>2ErQWP5Q=7pd&FHc*fiLZF-ffnQl)2 zN6BEZ_ol^k{O``*qCONOU-wo}9}&%OG+mWf);~Q4r5b9HME779^BfpA^ey^xdD7o| zk%+Us%GK_}FnR$eeIx{v#mAC)?fVku^^qt>k&N#AW#D|#3c<3zy!q-l>22ODmL|qs z51)^?KB;Z4&KC)+&5ht4?}y}iNcw3R<9sah#jf+24f|Sz{F_ZlGW+ZUzHuP|<>)OqMA=|x zqVT(u>=U3R1tQRXOp_NVL(9wLP!Qnbg0sK3`mAbgTi!Eqstf$%GqsEd70~!SJz31h zU;K>1#pHBY3J~>egd-u@?$~1YUu-n$16_2jOCe%=$3nJ*Jd(O#@R127m8>!XrbAdx zPOYY3;Z$)A$Pd|XRqWmup0Wx(;h%%l! zk(du}_}8z(7-UFhU}J)AjBuYnmqFBE;1LVc9Ap+2e*nP2_n>*+UH6x$A9DfP3JzY( z60*Y{ApAoKnb-xAJ)QXu5h8#>04c#7Zia>BL`Xpquco8J>>a`U0`K?G+bEbIpv7C? z-VR;w^8}K!UAsZRp8+wDZ0_TQ3d>uo9V*T<_C@uA13)!IM&2R;mZC8qPnog)dkErb zVg{3MQ=|*%g^dovfeggFKXRGd;2QK~5nvaLd^XnIW0gXU_H9LKBjjYFL?3p>D*wqT zlBJQu_yLgnH>Fiz!b=+o2B=rqvnl}?d@VchEe``VWHd^H@(y%tpf8P#A;h=9c&VWw z3{+q=uDHWpmR3a&)k6lw_WF7Ae2p1aW@g3ub^|=nbJmbYVbScC*+&g4W7G1Kl9jvS zWW2Mm2mz9T-is zxP;rRkVr?DIX|jKPIiXirC{1An7sni>rm+h^5v39^?c#(Wq(?T8nDia0E}Kf_C?4{ zHC4mT{k@@Bie|B_4MrGk;NI46Uo$4tE7xh5DoJDlW*zoOM)7_W zB;hdm-rLs)v<>t)DE4RDD*O~;(N-eLQGhnC^*lw|JGAWuqOFaMq=k4{$ZK?1b=~%z zg^=6=qch!*g)3{qQ(`a{6BX%&ye}wYiR%cZq-NBrzj7@)4_iJxZVCoIAv>&OqGKpr zQyyA4N)Q6sXWx7+`9iz~GvM&|=1x^3Wz7Nn_aY)vd|1#3#e&!A&|!T?*S-D5k$T*` zdmDP8)Vz^4QF-g&H=KvZcfBt0$YaKBnnX^)fJf;28_$n1fIwu^*Bg0kFLB)8FQw&l zVg>XL0^0nCiEN&E$f{|7mdT1O;l?x%?thFV3L25~AW31A`@ZhP>1_TkQ}hngxcy^S zizDFtW$o;^@2}lWMU+dC!+tfp?y>>aa8X_P70_&fK>nDT8YLCdNX^C;bF2tBb#;5? z+2S-}q{T<*(ZIk)S12IMlB_m<1spXL6!354g`@El9f)8mu4iyqM_xD^DoqOJ;~RIb zcg&Sw;?}(yhz68UoK9;xVFu@4u{4CrJ7>r@%|~fVm%A8$CeE* zGvM@g$HnAqEFBjuZC1#s>W9?LLEVV}3F+5Rv8Qrx>O( zQZ>OLz{U3TML<#thb+xq3#$@RsSk=tUY?A`*^y$eCp-!i5pqbyTau_U44`p&@p3N~ zH1bkjUZRW6%G-NWzI&6o6jxWXV69f(F%H9raa|Br>iG#9q8Z|9XC-DqUDl zAR!0j5f)@252t~3~&L!;HziFxj7g^iO!*MJQdU4)OKZM?^p_1Eq%=pflFbH?6NuIkM9( zE&yC=_7}-KCeoP7SFnI+Hqc4ghkuSChkhI`{z%WvVDzEY|0?&53NcjowlkDNPn7xw zM^g2neBwc_L6f}o!ZZSqo0*F!=f;yEhX4v5xFM)ek$}r;ZpM?9^?NH4tp#NG=0BNL zfkqzz5CLY8Y9P<}Hmc057-jc;(V6f9mN5fKxA$iztv|`#+QV!bqT5T)+-M&^z0Ozv zId-(rfd%+<&>k+tUyz5JIUUXW0}z4O^l_R)6-Y~f$t$qZt}eX1h0IpkvumuUl#W&d zzZ?sOViD(jq(3nD{DQe;Sq3vBipEXPI*Q_p-BfoU)bAZ;DC?gW2Y@yp0|u@!?Lp4a zM`WbiV#~|Jnd<8DW2<>XB%Y1v>+2dCK76xvK^aFhg#n1Ap3#ip+lSK!NJ*-B8FdV$ zP5tC7OoR-ZZ$+Y3{v#sl(~Ha(8B}ciq%g-e=WJ9G>0*oc_KWNTfYbuKQpT|$6d)qEUpbDayD8hE`zb{#|)<4P-H|vF3W*%honZcsNMuwXvw8MH|vZt z$;zD@Pm%XTOfpIh`hKWGn5?WeYrEM7<^$0@+~?hIqCx>bo&eaj&|^l8&8@d_Lqn>O zQA*%FvtwVEaV4IQVx2dyH>V5V{o6o+K5t}m#6G7TO(2WJr(r&C7hS-X*SH^QH|A6E zUa@U#XiU}>ZzMA!BC3E|6xLRNxFx<~b-wZB3#aJy z8Kdtz2^e>B%d4uATMV`W0L~JbplZoCvOj~V-c-c}w1;oTs9!-?g{AqI)GBx%4GK~@ zJQV=6_2^U7YlC?hP$PLd>5-#5`>l13-U~Cr~QXfqJVEhSw=eFZwFtn=oc8KTKmj7BL;x z8JC4TCYc}>ko!GZ(#z=S!9D%GsgpJu9)Z{k5E68BH6qix8DKu@aYTdycJAftI8d%z zYo|a1C?v2h_lIAh2B!W_TYk&r8s1CGU-I8;x&n=TXbR%kSMk4Czkc197|b;fPZ%xe z*ViDVji}G7_;_DLCj)tEdwU}l_XX}E5J_lDuB+fdm5>ha@(d~d1X3ZrZv_&dWcQl{ zE|*Wc@}PwP)-~7D@qt;)QG03@58^W*Nd_$mnF3L41kkxJE%DO`>z|(}(}ns~>nAfx zD^G(O+};tUSF;8OR9@vr?U)qp3T|#m(&G`s`FkL90A*uP*E7-HL0Qj?D-SqdNF6Jc zB@2%`Bn%zO0flX{^$(7hPhd+n;wn{}`wB817qL zrKF&sC=B=u`ueG+)9gvWtqmpC0&Q}6KcL15;D%2nP?1XkvmulZ#Mxl>S1~>D2Z&i| zXvB5)sze0@1US)XXDD%^kkDwY#1!Pjhx_LB5F;=Xz7Hn6C*rjRW9J1E;%qD$BOs{1 zLrDA5hV!S=pxXIhwoh4X4mhrvRZ+zEI2F&R$RSEFdlU4TMLb;%?48UF0M{gHA;?Y+ z#UPK)9D$h9bv|BdOKqlT2NEGb2My-5M(=lpAX0OqFF}2|+X8qQ4GrQLloW9cs(Iit zfJkE2E4gSax!f9hW+84=#8z>6^IJd+VhQmAp*^@uQsb~3rY!Vyx%*55s<4<3;|k1| zf*c?OGkbnYZ1%k&2L%r?QL%G30$bXJ$u8>tksp_g9TB8B5Qi>`0AN7yIGAUgKek-y za!UXidTea{R7FP1Y{IK2TJIRXO1>%ocQEOc;_m?WNdTdOs*L@EOEocNXmWjhkPH`rw{&%+ly*@@s-VDfd-pfmVvu6( zX7$+|(xQIAYc%ri41pXFlbM+;q`kJYmojElUDOyjVa0#tk{xh6Xo z<@%fq6h_45U&INb{14v(=f~kyb6_ub9Q2&T5zHIwbR`!XJ?6hza$X;|Y14ZK<47|n zz@(M1?&)bn(coJEOzpgB2$|-#2XbWX<{CAh;pywc2ny>fZF^nB{UZ+_7U|*pDQg<) zE-)AAhwiSR3`E)onG;NEH#__$m<~Ws!*5T5CecNz*VgE=vy3gxoZXvRGP}oWoiXjl zsNsyu;1QmYL18r^&YZGo)P9Qx?#qFR%BSJ;;s1JZdUq$%eB46n*^2Wgj%1EKhQdT) zGugvxdcv(xD({@+pppvL`~r?JjC=FlyP!L=@XCDQ-f>BCW}EwxMN6DVlWj46h5xuX z?QhI)=+5Hy?2jWH<4CjTA^#)8GPB$kw?cnAO1pgAY^G=glHQX;q*F^qCurUl$K<}3 z2KT?ovM2fuetvEC`2!CadbM1O!h*LnAkDYBy{9U4v!wElsWcX=<;)ZFbNs$G)25=g z#EKSZGyw-Lr;qo+ig1w)uK3AM$H<&1F9$uXe8GNd`1F6LDAa#{sO$puC_vq&m0|g% z_#G;%;XENg4!vK+1Qz0DkeF!0Sk(a>-_t|3ri)gL3kjhIS_cO(9#Z*|`;=>Uq8)O?$RFFYx4!Yf@wrlx?H6!p+l9UIXvHVN^W#;OX zz&;Yp=`Pe-kAplT_g6M4S9-h)A*jfI1XouUF8y98+cQDC>#HP+s7sY!)RBugS)n$C zqpS}Be;d$?ULA%n)Fo_8=3+s(i(yG>mE_b6l%<5(h@vQ$9~>_Vk^`PQ1d>xyYMj=i zTqrkt!-|1C-)cL!egktVQoA;|@_o5Bb+EohWH#sSb8$IKPi>s?b(GH_G8vGZ-WmmAV`zcsHN@_nyC{eF8~ zLm6)1q>}MQ{PEg=Fcw_Y+n<4T-jE%T2S0E?TLBbe>J$h^8ix8n0~li<<4^GptknYy zfpLx|0|EOs^xFUC&4~URZ}!BM*hL3BF$5=1BDO}zargAbHRr42%w-K?DFdPYVLRXi@OKZN!m$Yc94){txAOIa4W^Y%Lw^F8aaJcFDP-l{(wMxDcM`=1Xd))lYg__~q zRO|3tKD3D_GN1u98)~9l0xRDj+-zzdz4@A*cp)Ro%kzejz*}{&R!j0X?nt24*U@h$ zH>pV{6zkH zcvfHFdj@|H`RK5xyLJiPHxdAi8>i43XLuxk-%kx({f1>{HG5VV%=_-f67k-K?~yX^ zIA_jy{q#Remxq(LzC;S0cZCzSP3703cFhxnx%&Mn6ld;|UDb+s5Zr*Y%Mby@!*ssJ z2npSP1W*8qT;K;uuw3t zu!Sz78oU@0uz`VrUS3{WKkguxg5#GXZ0C$YtH}D9m#aMK5=VNN?xTDj5>tf3GD$9& zC#7=_Q2zKqOy4Qa&JNFE>?iqf?Oskrp6Dq`K^XWXgal@~M1oE%#+|X2A~@g{HmIIV z#f2&lA!c-iK5m0R>VVuqsRn_m8kmq_IFQl^7#W@&ntxn-Ua#<6?F5B z_B5b5!6s|RVPabF1IRI%yOl;c!+=|(wndxVUo>J?$aNPZxTS?y{Mm1UC(WdTB&MPQ zru~r{U%kMmqLK}O@HVWNF)XYa7!)~n$TB#4Y08@GBXKmb)wdj) z=-IC)%cN#oih+I?KdOoyn#e>v5IcPK`O!Y8=l5tCr`OeywRwaAEf7||LUq+eP<80X z&z632T3^A>ZduQ-)5OwX>AXKcpZ`6~X*tYq-9V2oqoV^|WfYVDqz2^>#&jERinp|6 z2QJ~!^$%E@&X)XSWK_EVXz7z>rd)E$6gfdDY=H(>z>_!LcxFoipY3ZXsMpz@h){de zg}KJpEw*!23i9{-OM&bJ#)6G!?6NRir*FzGCnmjoMNAhPm6|;{;2pcjQ3}5y>`YOI zYGn|wLfd>U(nHNnk7n#m(5XBC8ma(*g`ryAF9%9BZzl7?NbT$j_&TfiXNo1r8kQ#U zPdqWp9Y*f`L>kQ4L|mZ z{97Irgg2f>q^jXp{1m8PD3@Cj@!QdBXt?A|SxkFA4lTS_%3j)l0SD;8bs5MgCxjmzz4N6o(MpU4sU9cMI;p-GUR`?E)8f3GS`|g1c*Q3GM{9;PRSp>Nip|^Qzwa zm%5zpKC)%)wb$t^^&y}TlbHba1DfE-1Y>AHfyUojcwV2Ot$}3D5swB#H_>v85PbSq zDEzukUtObth-rW|i-p7dnsLqpN`s-#N0?4jD>*an2T#`4#hZ*KRZ+WVP%&$VgJ1qm zm5;?{>;%jay2vRR8u&JH;xLnh7RjM*m*m7;0QR*&S`v%g3l0BAL}4KV&{72>{K|vz z_TrA(_53~a93XUBAMR8sLy)oT#Cfsj zMiZ|fTQ|ZP`u^i*V4Pt6Zf4m@iEffqN(D>>&>Skn=W+p%CfQ!5c1HxK>n+*k(;Ghg z_%XPF;cRDm<(x`qj~(z$;dp_X6hNo~>C_&L7Ap0Z+V0pkoDf)LrM^mF)2b_j)N(%d z)_lax-#l2{-1<#4Wc+t#3k`v%;G9$=uDCZ#@S9SjSh5PPP5eV{X^Ps9;vei!J8SNS zy-9SsP8XXBojYhIF2K^Z)^j5d3CHg9!?7AWIpNF5k9$>up&$qe=`^c}f-z|*0A@>< zK+$ZM4WX*CN;EARR2g?v7w4q%`)))cJq!DQ$+dYnz4D(K!_!Bn!upV_^6eo;RDP+& z8I=qtBTs=awj`y|;XE9l{SkmtgdP8?x}1j1)(5#@+n=inG+`q`bgLX({poii!eKxV z5fPD=PpgHroRoM!(gnsYl1WRl2*TQmyaH>Xd)^ zFSfOg4x0cwxH~FX`IE=dUjc}za{L4)wf{D5=Mxi}?<2>Mu0z$pd_^5#H~VRUcQt3i z75h<=7gGV^KA4mga{YX+0tFeiHzqAsFl}-)XD2l;Ts{)#_-2 zcr<>0O7GAs6L%-xsKDb-wG5CLWC}Cs2Y-K3B*NQ|_UrPSfZKA-oei_ZxB7Pzg4 z{ONlEzktam8`~8+epzWPFvH&7a?j7#Rxq$t-L0-PtbWgL)^vG(BZ3p;cO3rr^_qQX zNB*!KI9vhJ?z~qCNyBnXQU(c#M--=O1K88d@iJhIib12B!+AWRXWWzJYZ4#dtos;A znJjZ3MwJDs5H%+p-!ZDj^VJskO`byz9QA`qp)}SV?D4F&-?UHCkRndM2;@J?*iMjP zImdaY_f7mJh~B6TYgn&$aL0H_kdatw_y$G5r*+cxF}6igW*E+|IeJ?e28RBnW+x~j z;wn~`!{6Z8-@EVAlQ4~~vj3f(r|}m^+14dY>L?%*w}8GQ`HnVb=b{g_k1RQz@{<|+ zob`^^&j#B1LU4jIy18Rz71dJfKYcBobV?o%DpfV-hZqT&EK`@{&>s>3qIuCq8(K{% z5MtI5s%3-GgdYIOgL>KHkv-K)U2dGO)%_-0z0h8=L$UetoIH^5&NfF+X5f<(v!xbx z7%}p&tv-KIO&nx(c^M60cSs@_0!ta7T2}oX9Tq|%qt#?OpR7{P6UqPCNdxuoy-HeH zXp0_#;zd*)3RtxC>u-#eCM7Wg13<+vPM&Q3CKb3@3-0*?G>cjXg2MiE(LZ(dd+#dATAZ?w`bt-c4Z{ zc`EY|pxUA2_?y63RT}W|qV*Ql9#5zLh9|0?uE#v@eg)rv5~RGWh6_%6oqg=k&Kd>x_=YAFixYujq z;5mo_yKvdoOlkIkL>=cnS)}%kcnc za=p(`sVf)PfYl0D2x2LL+wF;VBEx8O^7JnW{gpT*=g;gslNBwfoMPD})Q{qV;X6DG z+H6R{@XSMLtTuK2Z|YjwU#wk7CAeQ-Ujf5Lv%v~R2ejCB`Ju{0rB*P^H?$%e5D0i; z=3+9qcc#mey`vqzQlJ~3{;3-tA0Gm2ZVz6?r7s|yQAR?^l+O@HtcK)@&MArcBC9wl zrK3Zl(@^?Afe7&)*4VG{5bFK)?mm#43aB9+@J91SR3`8 zY4;SLYOedZ?#GX{yd1hVTFx{Bg~U>y>v=6hEVAgQiY#R)QM5iDR-TLak`IH-@}kc4 z>a_x?(RO2lCe#Jp55)^-C!d!%1zK(Y5rD&JZE1~Jw}fP~7$a$%hj`vzk8a(#b^BoY zC!sz7Q?m|i@(qEQ406b6lLr!nLFnOv(4FazA+lrnH5KRE!J^5dk?=i_R`04F+>q27 z>-Ly_bC#vp*Uu@TQ;=*PO8l_%iDTv8PZw7Q++Q_4>`bZkj}NHDyPqgaaj}? z+b5C_>inFk*YRdQ9EdlOk2(sk$RLl7&`J3CP^WX(bUbVUCE2=fvmSb_SkbYC(SjgzqC?Zw%kgl~DWT|pYmLncmBJeAQ!m=#BOSpJ=1XC3>SZWXa;ZoH7Zo`0LK z?-w>P0B=X94LCp9L_=kmkB5bIcs&jnpK_Yenq7*@f)l~!tQj> zA&c`YcsrP#l6EEtn@q~YJ_7l(SX%Kn>&lVEd*_;7KoKc$WxCO)c%pn>{~JQB$R=~@ zGiAE%wMuJuS;pe+I_YYKc3DMQIAO7q|A;UA`M2?OgE9iO-OyPL^i*dj(LTk86M}on z!`Wypp8jIQ795kPF8EyxIwBpUp8VN(o<=hmzJ;bxiT$WsQ*H{e@S~bw23rC%$e0~6 zG%%U7ePCey9i`$+KbIv#Z*#RlZM=-pY%Yz(Nu>XhtoCx_ZA*6ht?(V6c9dYjALE4< zffN5R6sVYB&nBvQk5n{Mqd7_S36<@QQ<`ZnKnluCYAg0qr;_9rXJIfYg_r^PX@OWY zBd*TM`UOL5Frv=)<(t5>%oNCU!iw z_F)M-En+IZ#zgdptg<61NN<3O;jRsQ7dF|`Vj|+}%e$VF8t}C#lu~d<2!-h=1OzP| z*Gq38RlX0Lz_|*`4>Toza?G0i-%{=m3tsQHBRc>}bNj-bA%6AE(Um%KQFQf1$5Un% zq&c@DM^haKEy6Jii8p0^oTnvW=pNJ16#8eU4YVWLQ|L;9Tl#&eE|7T%W*mtt%=I7r z{%rq9mvMte=MJ`Xa4-+n3R-ZOYp*k@?-c7|8FbUM%|Gly3kk9YT^^z14eXqL7?ZIH zjzUAjpyHw8t({uwCoBzDV#4;88nh@@D^5=^?+u;aZFC=ho>Q#Ph}!mCr_JH(EbJ#s zn$3$(tQCBH;J;ye|1B)vFjbIh^~a!d=?tt(L1_jyu9Hhv*oChTiqN96jUXj><>aOOp4ZUwZ9a$wmrP(BF%&W`i}l849{*PN~>^@+JMU2PzATEDHCw_f%>w=<3= zm@sia`*fMIqpdDU@T+x=3dfh?xNhU??Yg-RtnQ-WC}1eeWCzoznbTih>PYK<9!+RU z*`yu)`C8f7z^_Z7(b@U9z+KtVfT@d@=l4kDcXdFIh=5=OkbC&vIv)4+7Bv5aFm}G( zENgtbwaz?FRw4Ole3p>9bhUJlbK1I>P?wrAB-Cy}8{73;pc1a$ko5Hqr%rgi!LpMy z+jul#Q^W9pjsWM)S;^x15hvwgn9KWFt5c!Mgz?yN`3GZbN!hc`W54(DrM}>+P}v1v zS&Y%fqxMf=CCZ<(%a5MI@fujH!)L3qaBckM;GlCAzJ&IUVrIMTtzk?4>)0~zO0E03M+M{f-BoP4hT{XP46Q&! z++*(yN;45p6tst!#k%7;G+6awr^mysp|KD;q};!StcX9^;XFY&P>)tk5QzKoMFFA&&tuZv=M*%%1jL2LS;XlcF<;Pf?3;T438>7Tr80-iz zV$EShlA@td+JCNGZBIsK=4h=L0u zDPaaI(H}qeom9}X43fNl7T_UjT5#xtW+Zd`9x85+WWqM8B$oQ`ni|P z#Vxpg4+2zdO}fH7Yhij#<_v*j#c}`9_WnRvkLQUdkBmnL$JorsKW@>(5E}K z=~8rmNi2x8j11$Q!OKk^qv!j7%4JAf*_tD#?Qk7-Xs@|xc8+JE@P`@&1j3km+V2`>BSwP z+faRpE$7!kWdpU-;Q2JH?@-bE#Di-$Vx^4){Y?HJD5^9|gfdzU(0*j3) z)Fu8(MQ2n9^<34{(bCHfJYd(?Zi{jwk*bqEge{WGuY9cG@bzJ`4EGmy>8OV!tf??w zV1VeEm^7Il(slf-79P}GkaqV#og`?bzIvK~FfEk0hbL6zw22 z-oLIV;(0HJl+yuQa$Zs(Qw59ZDB?tNrH;)^*%}!+CgSJEO2EC}1f+2M{P<$xLtFb3 zFyoo{7E`!)qw8(StTs4c^r~v3kuV!a-YPsvI?LLdf*hx=SsA2nTG7;D1k|>CL_2Nk zJ=ZU3Yq&71*9I420>0Mdb3MP#Y zo|{;Xn;3#U6||io5gRFF7#NM|G%5dWdyT(dc9n!tdc+**$>o&v9v5~4a5s;{T6+l5 zE1~d*Sov}={bbo0w+rhl?i?)ch65@*5Ghwq8J#TrOWXVr<9qA}@BM(?fGt=TapHft zNClU%m?e>?{c(H=CnE6DuplFnQ?JcG5M&^FsQgROd@M(D3Ig-jOSrZoJlf0v@xpEN z^j&b)6pWGx>1UDE7rUr>!6+p-j=-#BLa*_!o6($dtTW*ij`-7SK(hq|1OO*yCnf=! zEZ7yA(LHBtxOHYDqMbVehE(TkvOhS7ZfZ~Q3Jk&n4K!=*@xWCxBTFruFrCkf$^qT* zm`$fcCy!xh+Xqnm=LYvT-{FzYsLKp)aeX_wd$#6toUW!UtvtR7g*JQ-lD7^UtQqgm z$v2Ys7#K7%P%}<+ue-;@Jwd$+SslgBD#;YPetktdZiURME;4V5Xt`P`$k)8T`m>{? z{?#LE_k`7IP`&xgmspVkQZUQ1m&an*P}@fNq|BD+2X@HTldgz~spbQsIY$%gMh)hq zl3f3KJfD6YI9#i4n|7g!KU^-gbC-YA^q0M0WULTkUjkJh8qsR_IghJ>kr5e$(Saf~ zNn+$2{*50SJ-oQJwb@s!M#rFj;G@tF2Eo z*&Wsx9`RgD*XGCI%&#S=9|% zRl(_LL;xlxOBHtKVhi5dHVH;1TpygTa7yEIwW*3Br>bKYR|#ze1Rg+fe8amDv=E0k z*`J>+n}ac@nq>;T@(X6SPW5BY@%U_(XNcdoA^>_<&9fFVoJi1)=c?#MXSHg{8Onx# zDen#VGT1jdL8NJ)tduG;d@Uhe(lb_ZhNS{ARd1=rpoa$r);GAV&8{kn+}zk9H0Y*v z0|T3sG`6;urPCCTVb7cwWG{)vhkZ>vusJX^)VH>lb&gjUnr4PBIUE@gqu6It)40Vi zl^l(?6`Pjk0$3C{OG{orp|EoCY2-qqh^?1!OG{OuNB_;390`)N<%Z^J*3i*J!0FWe5rz(F`tlv^OV~FaP zN~-)K!0=paU!5AB0UB7ypohA^gEXf5JHzfP_c7u!Rcs?dDxh{SfS_XGRvfG6luFO< zYSZRL76YI{Pmea~bufiN*O3Hu4Rw+uuQO33c zV2GoDLn~M_HfJE39dS>>rAU*aA)FgJpU}Qv_G$}jP~zXrC~nocHdMfYfDZ@=3nSiO zwT^0Pg66U(iv9f6gvIrU%j#P@X@2l$n*?&Sl-R}+4faoZxqd4B4a(>mqXij6$WO~# zyQ^AQ=F?41S3Y09EIT^Y0Sg{&Jv#_}ycj!_<8LrznRB|&kHYHs7d=F#J?UfB{$&t9 zcO6~`hnOHMxw?d4{&D3aTAC9NFL%m0ZGQk2wMFmzeDnLh{?kbA_pqm6yZjwaF6Ft; zoyeq{sYb!868ngJkbIBeUnE6wa73vzxC-R)K*-$xoDtpjH1iN6jufXk7MGA<>cXgE z{`k)(d>}Gx>*@ThC!Lc9*aS$*Zu00RG3KHbeviLulwr~x)6>dPojt-uP_p@z6gTTJkM%zX(KkRI`9@*>4x3gD(`Nhz)38{z}2K`rR=3 z!{w#*9TO7v-D&K2LPgF+_4hM462V(q?%0LXUoTtMbnPDz{}&g4oGh1;T7D_u`hc{3 zX|RDKzmXNNbBM|#eHrp&abCfpd}PIe5v2zn7A0Ryt`ZV{0<>YOev=)C{yiR)4PRVv zwqVBg1otADfI!`!m7fl_fhUJ1rIFu6R$9wxb)#3>X1is>x;J@HfH)LtdS_8KW~bB; zixq$H?Td&EGTY!5GCc(rVy(}EOcY)nB4Bw3&%3(bTNRbsPp0$`t3t_7-5@hp=1$|+ z6_O?FL*w5XB>c(|VG*gWu<2>-amX0+Auw9-uhf!;l{E5rbc3%b9}bJ zzZAGI993HTL(6>A-q>e#Y%`SnAwL?l@3plB=Lh{9z=4pI{J}v`Lno*7J1i?J>Kv~f z&{h`HS~8Se?yRgsZCvG^_?d!nze#HHOigR$gry7o9SpMp;Zs5{uPXT|y(! z8`oxuD{eEVES`3>7!^t_DL&qEMiNVzO=Be)kdW5!0;#ldR8yTSsk}V4C5Oj^Yy($mWZ=orneshtmpa5zK2HHo#QBNT}oH^9=TvYh@ zR9R&T9aQB}v9XlD>@vUroCq}9^U)^H@!7~Cvd>S^;{OY$ppK3xwFVYQ^!LMhGhn(G zn+k!l*IYtWRD$C49EL{qH?^;z5QV|y&vj`$PMCAn1oE@$2$Dq4#jQPqy1njLVjkj> z>YVfE*3pWj&D+mEB|c@2ZSkX&!J5bZQhCnHf?n;X-hbTrjNn3uQXcsRv4p4|}% zRP%s}?jh?B+_~>blpE+Wj3eU=ENPmwG3?_l#1j)8bv_U0S`D;m=d|qz2ngMiS^R+Y zM<}BLAnW{s_I3)uf%pu0SRKuk0Xnek8>}*Aq<;5-=Ln!U9bi$(`9{Y+2dP_6x<`e* zW5l_+WSypQs&i11;JF@&0{p+auXaCIG729)a{2#RoMy22$jIVLD&yk?9OJ|-~lZ4J|? zOqG|#vB6PEVj(*iO#u;LS1|VaJ!k6qCn-i@jS&8>B2f(y(;)O&DaoX4o?l6M8%oIW zj!d}HmeQgXd1B?&W51cXN@Mmw7eyi}Y+v)o1L6LBDvpkz75r{ZCH|JPU5|?={&5^KGU9}8I{)LyLOVV8a&HZpc=EUdMl^9dG z^j7PsBe!bMib3O9l@G4I!j_de{t<|Yx1U=Bn!};bw+_t6!G3(*3_di~2J=f^pUi8( z!n(SHq5pUIZum3Z;rxd;qsb{Z$EFk!iaU{^O<11vN;+*7XTocKt^9)qSdaR8T-#4< zFekJSW36C~^IHj1Y5egb6ss9`0=HGhW3x)p{wBXTu8io&qZ0oGYQ63U2~rqE{J>i# zwlv+Ae90X5%bl~9LybREUyX}pV-D(eCfh=>#eKHet?-%lY7xKVn*J_zOLJvHecJdL z9I#`wZWq4(Dty!m6@sV=Z=Fm9iYV3D-nR_N6`a^y7N2y-QdN*GA~10xZuiae4bbQ_ z7+5__tvzvpnkk4eGH8ojx^_U%ZHX=t71av6Tq67tGS0uk!r;yu8lx5dgldCB^}6Q# zA?=hwWm>b(u`_a;V_!hXYbrv2xN4 z*lW7bN0l^0_hnx45FjZ*hy8t~a4U_+P#dgxrcsba{B9>xe;wwz4}SidVY0pSolqN7 zU+grgDq35fDZMg3(%q=Nol&$k2BrT8FEbc@?rIyGGau_as7LvkeR9w&{p;&Js`t=D z>cqWLnObpvY1i_0c+F1~{& zL|N;Oz=8A2r3}|yV9nF)awFXr8O}Q~=+rB7F(pzD3hXa*I^BRE7k~~0)!KUh7dj*c z5@=y9SVRdEVXfb9RMYxFimuu^OxpG@Refxk^=>uoA{XGh- zqN$@}0;z3F`j~=j1O5S0II^z~n(CbpI>J`C=Gc)LI+cr4n4Ht6vjJg!T7=BZEoGwM z(%mcbbbuY#jm{JUsJME1g8*6=)U{P^|g$*bEPj$V?^J z1+;reDSkKXXYK^ycQ5SVm$gycV4&b9MqmZ2X}pS~0@JBw5yj4_hD-axw&^y@o7njZU%?1+?u+*h$CD&2WGi5 z`*^iL!?`CySWK`A+VT&Uel^KW#jYfTGpTT4bF)VdJg>K*75Trz3dGwUFvj~l(wX`! zNW^PZWUf}>dBXHl-pfJ^z6u7O#St+FDi;4(J@$-kz5ae$KN3Xu-WH^voLDxUiYjwl zd*aKKfb!ytMN_4VQCZG?b(~vcfTV9Q`QtVhdD~vz65g#e(73fo52bo4>P} z=R82P1{@?2Wo0xV-7V|x7J+#8Po9cEA&-jxcyrNuhZ4&fh^QSnKDu<*{Vs4cm80K? zAI6+JYW04Qskg=aayb06)WMH4G=y&wM&h~iDOf5N7J#b* z?gJ5(ObYzQIr@Ri0D~xlI67)r>_&SI0z>!FVOv*w=sTo>^ZTVFSiV(UA|z|O9(MYa zrI8KF`!@83frt9bb^^!~zB2NwMaf^9uXPE4?Zk?pE`d+WZ}<^ueFkRX%+Jdtpp=c1Reg z7{E1!$NnzV?Bo+EFryvSoZamMCFPThfewKSJ_zREUr>dgjW|p(iVBBw=f68TjqLEt zHf9NW;{ZidpP{J=!0Z~mhoh>1FN0@gblgp(72wGnamPwDvA4HiVN?O2Y=GW=03<~t zzj4XA76=Fw);c}`S|9)&aq@ixAIUFM^$^4x z&al$4>&IC#W^hF_ED^M(-va5`9XC}!Q4QqUEIPgOA3As94rpaG0x=zHYfEBL#2|oC z5@9G%)`b6w#4-yy*|b5yuXlt!V_|R9MP)9Nkv zdui{pdTlLtfoQ-7I!Q@&;)O#_Z=^p{cp>=KC-{DZKyLdGV>Z`s($|t@DQ{vjqoS<* zJwv8w#%TFxp8yTT@13<-IA;Hy0e2)ZBsgpp*G%7ngv&w!uVE)gsZWzWq`%!i6;R<2 zY7TujMJLHdsBSP8uUas9c}xWQZVtGyJgI?HT904r5{O8HfsKRCQjeB9l$!mX-KC9% z_zbb?q@-Z%?g4m1-ytZBMu=z}2$Ev}1nTV~4Ge%e;=uoWTl$T1I@oqW+-Ie&s|%#o zap!na2SC}sbpB76aK${q$sbpA06Y>XrT{v(RL~{CF}Ai0aasD^?nnjBFJ43qe})b| zVIlG|=y?Q`NC5XJ5Wds4&>JP@+cPu8Xt7!#NSO2ItdUVjQHBO0Ri0shi)4ra9*3BT zqM5jch*GLXsvc7jMS192b3DW#UH}d0j{_qM>h49u^BqbYa?l|tf)+E6erkIzNb7{e zjqpqA_lFoYnvp#h{+i;DFq-c1lVw!#(s>=dPNHB+>0TRNKoajT6!<6d1Vk1y8_cB# z9iz9lJ4b6#hNOo%dJSwKTm#;&@ZzF>CZ*JJhsS6#b0g=7UDDd{rjFs6oipJa4}=FK zPV!(NAM)+G6RinZ2lFL_WQq5p`wB#!Yq^H%*$1w!Qap;(hysifk%DOczyv!B;-sxKkR-LOhu<^J*gT2|b=q4qt{7jEXsD2gb6U8bfdOEd1+Ooi zB+Sg{H&}-$fh0H}@KFN&3gFAggaAjHZt)6@YZs^5P9{+5+n?Awe*UreG?_lJL$$t8 zz%Ua02u29@w}Wa6#R2G+{kZ^Dhkp0WAv$+$V%qrUX8_w8tj=}(kAY%XZ*CqgqmupY z<3m)YloW^#=9#mhC^A+?@Px`jFI0s>55wsrMsKd5JK~Jr9v)J;e+rf{8%kU6_MV({ z;aA!K{x3c~Ju;JsfH)h?WC{3kzC_;eX`4K5xN3XQvpQ9^o%}w(YL&B7JS81nMQ@qx za3r0#SS(*ErWg`&G^S+vcu@ycsI488#@2PoF^eV>({})r10?eybanAJoT5~LRbt`h z76<0y&#!-*Kzj^G0Jl*h-g*m$sGp4-0IRYhBatDL555axAi`c;l}l%hh4;)1zJOAz zymnG0tmC;{0ZZRuB=tvTZ_5}JF!+FKx30pY`bN7cC4jq-R#ZNRXHT=hgW_5PB53n*6&V?OJ_Nj+ul8+_u1fzoh3cf7PfI}c07`>2 zq@>aU9=QQhriBXWt};$Ba4Ya@LED-_8!8B_JnxTpv}WwHu_4@QbdAnsn%iztalbg& z^_Gb(eHy@uHZAlQ5{gl#p9jZsud$9GN&1yzw0sy~srPUrmH9uVAb&p>D&E68hyDs~ zYlOjQf#-u`?w&SN7>P(Gor$hD< zAdGoKc$8ftzEs&FbhY@9bcd@9__!4gHOrf&m`9PSj zkFljOr0)5dhkKubKzl-+OQs%HR167MZ5(f|O4IcHYax{SYX%$u%oy-C)%ACCMo-? z6QStS-Ok`um;6De7{#!gZ~4w_!(hThsSB}xI0S%i$^?lv*H+*F%H#q6$VWN{sysiH zM~SR4Wbsb156jNfBnzJgD3@2^JI|E-ldRMd;;hd?;F$KtK-oeU67&hGqkjT;hVAS| z9m2s9Xu3J3Gp3EU}-1!s@%CfVuoVRKBpj>P`&UopX*RSlTcr=9DZ&n z?d*Gqrvb=*!`j$;{)fk$RBQ_q;AWsM*6qH$90e3qx`3uYgil} zE`da}wXNk%D){{P8$Y#ee8 zH1z_+st_>biwTl>4_J)ZEylMEiCH}cNm+K%OpfsRmPuuFiqq>v+Qj# zv-;fPWOnAnP&DGmcS8<%4$r#67b*g_4lk(}iSzq*M4kH$@iXsV5{${c3*x^&0G2Hp zy0Mot`~r14c!>q8P^b$W^na;ILXM}KdM&v{snqm~Fn`wKM(Wr6Yj(0q0JWi$c_Om3 ztIzP-5Bn7CL*DdV@_?>ns=Z4%d+paPk_97+sV*(tpntSI(}LsaD=dZ=Y@YaEIf}Da zuEAxJK^o}v?#WSP!Trw{gXu+hfBQAs^-ZvN1`p9GO*|56_P73oV)bW_hIZ7z>cqGN zDf#OnfI^*&5s?MMB_m&@Jnp$SdHROUY=P?6RMD6K5f4lB{?v{NP!1x3Pt%=MuK)=c z(=)D)8AiIm(>|dN-;{8O#>onja4Gqy?uTKgD8Q|!NP5y{!`V4T| zqvWL=1$O~dMBG6xdoW&umqO9uzbfvZrut3?O&nUSN2>@mUner!L;)K8pGF=JuZ7bR zWMpgw33&uo7XVf~f@ulkeJ*asA3qfcmjHz#XE_2P=7vg?&X-KVwgOXmD|zpwtWLruUZ@$v#euHx*9kUa5!Ud#+|O9jUI z8$?;_?tK@~jGMv}#1Xo%OYF~Fw_VP-KoQm2#~=78p%XpDn_y}RY7ib9VBM$Dzl2!f z>;`nNOuo(;y_@3t{9vJY(*qz zi5>22;YPV8`_B8jjkZR-rG_NIJY4*;+;Fgs3Sc)O;$}_-#IhrG@)0~i{R>Ep(tH#~ zmh4D68+b7j=ELDN9y2?D4950k)+ZpfXiS=En3Cv!2C})HaXkoU8}j!sLJQbP!_GX7 z2|Z;RdrH*6y&-5oh?&WY3Fx5wnG<816~jcoE+7+!ErVVgr7Wa)|M^E*p3JaR!lrKj zl5?OuYc(y=-&ixDJBdfIkn}#!96(azDT@9yGtJq7of+G_z4{ZTLy^<8+^Uk+FYU*y zGz>X*9y=%wmxHzeonSm+TlLI$^@*R@J9I;8X;ZhkRsj8*JH3Bzta{9UHVDN#p&Rne zyAKx^7M+$LA!L!8BlO_S7R{3ux&(J7iG?%ImSVfP8L6`XO>9_vt}Zi|9%(g`De&iP2QBO(*>K|)Yas%`CQ#2#<}aC;Cig=OR~PffiK*D8P( zrT0C5xWd4O8eql9w)B`9tY5}YEg1kZJ+SuV{hP`_mnP@#UTVgBhs#u+E*{soQi1S)n6(sa@ zflP&0ZBJ9tZ=m8pU&?0zwni@fE zU7V}@x_#AoutpNd+OdiftG}w?flysXv>b7PWZ!3qtbfxfiq-2^dK^JgW@dB@@qy9a zC^xI4kxj?R&iD^@t)FHieK`~JDYeWup}u+CN7!5eGNyqDZIs|T-kQ{x>%IL6FGojO zP@)9zmOGkiD52zeo6Nk*HTwY%O7Ce7X?ofk*U(hgq z;)jQ8JGwSbulQwOPJr=R02Hmm-tb3BV7bW0GW37pS9f`>C6cGP%5QaZ;lR3ip%@18;Q)*S01ZF_B!$B-kvR5N>#N8sO@xb>-(dpw zx%S;_dkMStud+aK1bNXV`qTFpiUqW(QIlnZf$q6W;sHl9hn`~`BA&D5HyBOI3td(St9Um*#$wdl z;MicQ@dI;+^@hkJ*bbm z%nigBB%0aspoF2muzjY^>!w~CLUzx#i$p$95xGkM()z5T=)a4Dh>bfc4uqTyNRvRK zV6Ni1wYxuwLvOUA(DK5`kzMO@<;Ssr^tS;OwP@G=Nu=^y6Uam$P}Ibf*Y1?_0)xr52TJofz3|_@kK&Z zU6%I$jcLC7x2_3>&Ee+Fhv3mlacAlWlock^rcXX9R7sSGH!l8omELsz@3woVJG~ov zV(Fi~JJq|K-Y1O{|4VtwAj9MYe;%cNa?kip*A2~)XuOTl)7l$k==xXB^UBwd`h1x0 zBtfbB>zIYHOs|w}`|JIn`n30@F{$B_wpRB-8~^&6BPMJsQ_ZB)&;LWB`DZjmV|Qf5 z^Y>cJ>m>g>FjudbMUbmNh+3)d9n^*P2VRTwL}NVK@57iP4VmB(!hT~LSnv%8GJQph z01M=b7uyl9J=|W8-1j}z^bnlf{8pQ-yuBfqI`uH*EWuODFG>_)2kzX@w0RHGYr5D+P$zQ-}S3d33)jeZ}rFr?Y+~d{l z#$%mT47?r^l4betSjjRx{0HaH4q|?{+VafKqYP(l-EX+R?mPF(%*$;I>lS9tY`>{L zu>GrY(DMF9^NU4nB8@L|!iL%Wbz{x^=;z+nwKlxA(yj9<<;v&hu#TPmF^lJt%HDXa zTHv(pv%ETJJ`X!24~eC`xc%FX`VHGw-=FR}-7A3(-!#45>h^BPZ+x_zTNhvd zr-91chV5nlSM4yk+i@}52?0J7V^W8Xk?*cNXAuVV35ybgUcYt5p?n3kH$p76LN$jL zrHFev|J9p8bDOc)VH=dO0a!Z&8CfoYjV2Sb_K0RvTR)IG9GO4)lpYq#quI+sF`J$Fif7<;b5Vt%6uPf^snftH;>mS}mlw6ti&|e#Bid ziAKMh{nBo~+7}J!PupmUMOP4Z_CbC_>rC5)*R6IlAoLymn&g6$NHEgwIj_P!nH;fx zN3gn16oHBUd1~e7jWKd6>yo!W^TKNi5}Zgz0#Zmajlk(>n`z{ccb~qNTP8L$a6JFd zS-Fu&$XI!P@h>%Oz#gl9>^EVL0y>8YxwFL-6;<{=&#~l1^6N!VIx)Zgjr{e$XXW>Y zRQbgUF-ZYP%E_>+%V^a0R? z|K#0u=3AYr)h{}kg(9a6@huEB1b=n)2KPDHyl@FjrI1MfhmF1weAH~!Z$rX6iJ0>B zoQHAB>H>G^;OXj;nQk5Hwejg}|8Cy+_9>JD zOUT=M0^qBrM&4Uoea{4shW@05R>5`K$v|hXuv0_HS%5=f_c`6p&YnRW2Ju+`Ja_B)p*l0+Qu)*#e_RD|f={Bx~ zS;~$l2z$a`eCjj%h5OH6SBp|ckzQ^@`S$B#F@c=&dnM&S@2@B=*IH~SAoVFges{qK z`sTfrTpWwri}B`n=w%7bW$+b{D}e~g$QsCxZQ9f<#(;H_W<9@Fp!II9`MEdGtN4Ec zDAY9CE9vQ1W3ngtX9d*|%FF@wRTRNIY=tJVw38EObqurE|M$YHFfIfTA}rm~Snv{y z$l$tbt#C_ipt^}+3PAc+T2rvVhkf-Q91+jS+bVj%n;HGURz^(F#fIr05yZNcT#_^C zO`k7~W)b7uzYNd${1Z}B)x>Gke9QE1}3bF(Ku%K(f9t8Glw#TMs1bos#lBBuLZb*bD6-yCBEPaG@e zPgTNN*nS-7zOR{{7$B%#>k<*GA#8KKvlP3t{r29qq4)IgZ~IOf`7b(5lR`jg0T8msb>2rBJe<}q@5lnE zyD;$Zgu9I7`G$dkf$x`uxi8%RiuFg2&SyY=d^uFxS=o;iGGsO(pl@D3D@>skvyKPu zxd;m8-vWdPM2fu1gCWV=>6PE}D-BT~O=&y{MtvlsqJm%fl?5=o$z#z+Kylt3_rZ{$ zG{pC;(7d{u3y*h(RQTBuO;S?hg!c=W3o+bRe>NxmZ5m?~v~vEH1600-SAYbRgip*ae=NTPhP`=*K$X)RyR4E#iMSG-WqJ!om*PqRAs<#EOfh z(ga#QQ!B0pp;P|JQ_PYL@#>6?Rr;V&yfQv<+&fr|sj8|-#(0XMoZm#o=)1nYu9}*w zrkKT7)$OhuwfxwyvGLFVSEGhoD}f44qSN`X z+A9Am)~Ji?q=GA?i@qjiOx382etzCo#GZs|;t0%m&Iak$Ruejbm&(!i8?hg3`&MhM z)G(01r7?h5#62Y75;pC=uWv57$KPA3RnD1D`I}MGIXQo&K=Jj2&k$hVx=7-0cBZ8P zE~F#FRBlp&g`*93oUpLh{eZ&Q9|p@h}=-l}9DgIJ~E?W$HV} zHBG=pB}9I&572Q)hfS5blLMB30FKea zRbP!AyGy=~gj5hliW{|Rs>#%LO(EqHKa{SQ!Qfxg0(56`?0lW^htVC)jC=%_`*r+5 zoU0k;6bKdx^l!+zx^h0(3QCo_?nJmu60-U+llArWQagi+aU&qySh{3-S}fV|j3&Yk zZ{~px?^vozWpA@jw0WB0?GLs6^mFWC;nC(HsZpn2_)S2hMDb&tr*m`9oovy--fCYw zxvWl*e88d@Zko;kOd0n}rX;LsbMziZ_8cBCAz(5Dty&`pKrgq}Yy`4wY}!-5jSD1O zH0iAC_6reEs=hy}AiIC8?(GXxl562RjmN2hfJpml1WrhAsbUp4XcNJ54tv9uKqsls zGPdoBbu7Cy43HV);Y$H-JrV?X!p4fn*zxtwuyd8)Vg=v|Aa-xQgy(~6YY73BV#~r} zf_-14*`1%p7XMFmUl~=^_pJ>Q(%sELLOP@y4k;}yeFT(7y1QFS1VKttLXhqj5Tp+w zDH77%+{N#{|1sVVzdOczKfe1T`|QoyYt1#Ex#pVdd0@y4FZ`dpM!N0;WOF?P!R+S& zMj1(g;UT*#KPQ!g2RGX<;_1g_y2D#z&UXKr4Zl}aR9eC4ksE9FARJh~6kHr!=WRJw z(*Z@klKKW2X%?1q-EggVR*u=1`PlCuHB~UU+mnT1sm5)qMDkWFtzfFE(pSM&`P5I! z6HR*YYSHw(OlC?BP};%eO#!UNTgu_h4{5T$NX30_E6kH@tZDj{Qo&;I?OL zzQ=rel0NkFlQglXk6?c|wt0gygZ%3DKq8}@739@`+X6fTVU*VBr@Ob#fU1ewijF-j zL_TC!b7U4vRpBj#`uxG77u1kb^d*Yp{<@-yO7~(bA$FZ(5epzI3X$+jlg2}irC0|v ziGX73>hzi%Fl7Oqphv?$8h<`XZKKRZZ)iH@5esk%N|jx_e>|m({}h+Fs$}rIEe+iw z5;Bg6ODiFl&KUzF^f=0mgrVDSUE>Wox+Yu@f!21E+D9W(vActn7p{9PXeK77hieH) zjOB?~8HS89Oaa~RPz%0zB3VF;H5%U<0D2O$orOz5aE^)7O;|*MiLff*zF_7NQQ~pa z-N^(UGHSLQ=<}#j2HAdu!sg$AX(8*W8$MK<+j;|oo1eccOSl=}$kg(xmh|>J*Jz{c z^QG9SvUz%OaZG>z>%&DKY|S>YnI-zXdVFDW7#c5CF%pQD=foRq3DAzCE@ z@VnxaP4T$V zZ+wde$nm-D=X6Vkp6b-&N_19d7?HOZJTV&W(9J1p_$H{ityPQ+#(0a2kdUF=RFcZ( zTV$^641__J-c8B7Q{y^+e67aZ+**jiv2g281vC_=9S2hsrtL72B;nTsOge;ByQ(XV z15m$a1gcBk5-VFS3eFaG9iF)M7Hd*-+Z$GOmeZz^q+<_7w;Vb-YZa6nY}7Uji5$~x zU(e-Uml{@8t=X0*06*cH0;cfAbwDui$mWA7bih$iz9>4Ay1mjl*eYtL=wUGxk=3sD z_T`|Smuv`+uzvB=%|Nx5>?PwUC3>>I85nbO)eqXegQ>E3WS*!?0ko_Dp*nwF<&Uot zQ!zee(kyz1e>LW&uO}eg9_a04rz5}pt~itje7q1aaQ(I$S&$FFsaZ`XiP_?3jaR=RXyB!ec@J5R5YNxub7TBb+a zyV`qQz^TBs=@XDrjA|q{l&3-*4^3sA(iygQh?8h9R5V5>#+M~Zq9Nz*z>XokUhSvF z?HF}zpIqM*^V?7OTK+m#4YRa+Jeyv*ta!hpGLFBgB0(XlJluHvT96J4{I|aTA{5{q zf^wGpfi!{?m=4*wCkkWpQJ12`>U*!!cBEfT@f<=i&iw5jBO+)ER(&eu_rAOOy(^n= zK}OkR&}G?${))8rUU2L;95ocg8n~BNO|Y{afBgn0T7`n>Ao>bgxk|#RjwMQ1mCtWg zBU~?bH{k+CFtR6;Rp$E^i(-x-BtumBNP(3ajro=&tnFMu^Nu%%wL0L2Bg^y>O;w@- z`TQ`x(Vxk3o(|4`LqVE?@Tq5skD?RaLw)R642pS*+Mv`C2~}*jmweDCrutzk`y%<} z8RUby`;khyni`1r84g2Tb)Bj_>#nTs*fn7)cxH2bxE_;%7bjG@0dx3ntcG2aT{v!{ z>QWtX^<<3K`>xsV1FOO$oXQMI{-n7V|N0}#juR7ch28&|>Y>-{1`?-QLtk+V7@ z@hOusGHlIq7T-NIeUav)dT(8j-XREe0Ha)-RgQ?%z*_Rewy}D{FUjEiBpWH}u>5|4 z6(fEEh4?<{P>lL`D!Hs?X2VR$fbd7mGF-X4qt^JzL~*kD>lbb(9zyRAm&7yk_WxjB zbpFB+_g4xvBua9#fRwJ$2>AY_K3?@U|8=Qf(38{8d+tIu??|F%O}s~yde7bs7arTZ z^Fbyca9rt-QHSnJ#Om|p!1#n)I?{s`N8Pr@0S6=u@rIXEAkDUjpgH{2*t zo%y;G5*u;+JWpt* zJIi$*`gi0n{Xe>YdhD248PfcaI0^$>3P$n%&E_;yr;=6M`ba7!0yy>`%grndh)pKi zJFnG)@m+JB0@%@+tho7k!@|BX4y)KNFW8XX_#cEJks5O00rN(DJzY*wXMar#f(1ZD zJQ^AA4{=ixiMiDbrx#|$B%KzM8A6ZWY-vDM86v7G&l@JE7SZmU?PkWipD{PG+X>q< z7S}vKq0frO>|Vi~8mpE~)st{VN%_Wcz3S5mCt}i&De-MSv)6HblE-(~L&hwOEIn|^ zyC2Mt3&W>0ZMYQhY8|b9WA6i1*~2&|u^+RC&m2hR49FkVci_prqO+N)2sLh&h)7Dp z68F9djf{-YN-wC%K3DL&Ig~H>O!9UQ`n;IP#%L)iFczwI_@^*7`Khl5zm(rny|LH? z8n*a+_fC&V`5YzAM*ObkST&Le{A0%+|23XTow(TcAb+`hARR*91@H6#n~pSNnFAcJ zD4Zplt9?=lJ~>pIcrB=~dv3j)e#`89Hc7+2MHH2>A17m$_kN>#ixGrwNEVKcAzxnh ze=_`bv^nDlWbzt-8yDH~3Ybi0e)C>TSY!L`vv*f4l>OFn5b{Gt)uDV5Y#VyANczVIF*>i_Y>x-*C3A`jVKzcTPASe`hsq% zlv-q3@R3>U=j>gxtUPF$+81+^Wt=1W6opEqHBI3H!JRluVZDJ|5s6C}?q~RZ-}~u! zmKSX}A_$XGRb=v`mk|TY*fa|mcXv5}AMWqwl{0>cG2pB85E3R#@)7Rz}fFl&@MhUfF;dfarr8g0co1)@EHT+-`@)i!j|kO0MyP zl~%f}NGyGHjH)-mE9?pw9^`BsxC9p^c1R=1n@TqPkO>|}3cDUEE zJFF)%PElEz>mmx7&ib}^EMJ`4QaMqLoi>Rk2m3ja4QqgepNHA1z0kL(A?JcKVfGwx zFI(Nzox_E_gFy34@Q@KrJfy?WsC};)SlJW!g!k z*)5wLDu1MVhj_Vb$B$#?X?(H6rw425zOmT9*jIR0kl%6`(U-+XF>6(w!Cft{z=KuxOWqr))MVQ zysMPK#ycAbX_BiuIcl?TZfpk1&h~ki$75LHc@DMu%F+;3Fr5?=U$|u<>L!mpDGiJ1 z?0oWsKF>Iz+b)N>`Aei-1^b@%lE(hfp2_F>WA!99Cs*hj$(Uq(SN{WCQ5e7l8lHa6 zQtPcSuS-OKG!yQP1l+-3IvpArPagHzeokml&okFeZra@3fak_((-YtBSXfz6;vLat z*K$Va&b}M(Q04YfESc+*X6PNU#L(xG3boRCoS;~RQ)UxUbEDYtFyt_tI|2Myv_n%#uTHjMGBY}%47tpFn8RD6oq zD?~y=(T;@$8jgOB4r@;H3;X^MU-|rOd=<^yTwE*vX}qE{Dg|DIsi~#vKTvAl>bD|I zlkAu-l-9N6jZ{nSK8wg)kliCgEE`FT`xEq@oT2Ny52&OD82^q-G#o^rC%xH7NSMIv z?=97lt+F1KJUDot0PC-K=*scJI~KoBTE+O+>K~vA>G`G4b;w#T>R64kkbA_VhZvxR zYlELh$G#;o41OS&W=igM9?nrzkL`cK|H+#ujBJ9Uc>VoSe+@yv{a1u$4pg(g*B&Vo z+$RHn{o++^=NT;C>NV8Aj&bO23%|dF3cMpFkR`$=Rvyh(bz1Gw_Vk?W?FcG+h>usd zUT}sblAbA~#up5*?~u7uM=&h~Dbvdx$77uDOLWB4F-;*Y_|O3rm|i2=uiK)w+}^`H zli4n4f&{#uw9A|V3?7q}O=%z{iVAhn{}phMU-zKt^Yj=oDR;nowC}LA>KXjGx}WOX zQcjTRSx(RF3!kcj7f-C(1Tli5gwH$ikpn%#*vKAQ_aQD0g@m0f&@_NLsK$CfPd0)U z=n%JSr5C2cX?4Et(fCIv=FZTeJ@T&jg54NJL~E;TWFk&Hq}B`JcP*(HnR+8-BxbszDj+C=gq4k*jn2p|{;YgZ9F zogWcDsmZ;G1CgpC46Fs6Pd4?y2}?x4Q~l49Mm<}Rzc8=0_KV~;SOJNNRL+-~lo8p4 za>aJ#e)rJ$RYv7)Umn7%_L)Ej7VM5>xV8Yds;VgocVN@L*gTKB=n+0wC~w&-(tkFE z*o-U_K%>84FuCGC~W4f1cg6moTwf&uoWo{DTqNx|! z9d#FX`2>qy^Sv*XN|?{{xh^Oko!C9EL#QKHiAiO{ZaHgeLM8&n$$ho&X?dvXX}v<(pIrQB~{A`0%{oZ0}&2N+zHa<6A9 zaCFNrG{y~s9~*_$L|}hNs9=9X{Xsc;xF@%A4|1CO$lh98?o@5PfHMl~1s=$F73%}4 z#r|rTY3}p%a5BL?K~Ep9{?oraV7&QjOC(vvO%O3ff3-R;COPhP4yc6tBc76dQq%(B zwYJ@03QzydpQ;I;Ixl)mEoyjQ(_hgSWcocD-Gdm-tnZmBR!v!zj>8I6pYxedJ;! zfHGydiO*BONg%VE-q8aUsc_vdRvvPfB zWZP+~FtE<{y>(Luqn6%Ou2rb|S3yZB>2nvD#m?6qgwJSfaO-(ezj@cjqG8Rp5G^4f z5UoDc0%$@DupJg-dv|6<0dp>K?VA^r$;|B$e|{JjaF$I{Nl*pR%T9NWj*?19a1?MB zO^Uar#dp8hgNUkz;nZZUz)NE%8Sz`O!N`r%fWo=Hn@b-cY(f3t!_rON<&v3n3OUQP z!BJ_#zcaM`d%p;mw@WkGqHG}$A)1w#yyc&h7!MghhoLf5C2N4iNoPRz1Lx1^Qpmx< z{OkET0iX*I)ED;=vDYTQC$_cvfSRfy}d^W(3Y{2Wzb}|AvUdq!82$1i$)|1IbRCHe+CuybY zLTb0}yg_;=9=uKs;3QxP@B3;Q@t{5hvQ74Y{69*--sZWnVKv_*cqMf=Na~D>TaPSs z9<2wgE_bpOo3>-f$J-^e`DJeX5P88kMSHsGi($d}dF3O1YP4m5BimD6Oo1t^{Qej$ z43OVZJg0gCQ$`0uLAc}{$w;MdC=;!ojHO`3E%Yj4!V6j;_@KJDe@`ml zAQqI8qH?l#izAeA>w=@y522)t!X7Z5QIHx%p3* z){I1~a?3|)LRoh_6l(TEpKj|%xH%ZOGGO>h3F5#y15{LEf3~+%;?QQtCMH%FYkx=0 z@vB33aHs*>HxeH|Y_pC0cbE-NU5H*zzkxYhy?JJ+_7=L)%MU!#zVnmlNUW~idFO+3 z$*7Kw8c;AObG{dMxDxSYtW*cPc5N#Z&rXq8 z8V@V)Hb4!dfq!G+VojxBR$uJ;^J4{Gzi&FQ&I>$AM7@U#n8`q-td>+T{p|L1+=5t0 z?39L}qNsb#$6CmP{pD)^lkv9?4MmAcP?vtaDQ7qDPD9GI7}4rS{$M|Vb|pR>o0_qt zq+qWyJ^k8TN$AY}$?za~=ka4w`1INJXTF zkA^}i9$F89j3WSljE|p$`Y;lakngAZz|POt<~B z6FUr*FSFF?I3q$5mL0cITw&qh!seRAjVo&?43c|{ElA_^65W#V%aT`qMl!Za+z+#tt&FHD_r#JX zKm001GYT=A{P_?~O52^d#i+M8YlM!gP_F_c(0)*{o7)(ZW4B23j(=I|p7=d$d-U05 zz-{r*>#+((yM;dxnbV_&QcBFR!6tr^U)pb~Mzdz#DN=&@ioY)B_qfcjdF|SV`e4Fz zOtHa-%;iINcimb>;5KU-7FpmaSy1A<`r+?6+5=UCaQ_h9)#;e3PaTK$8)G(GZ+Z%f z=oKbotI^acl8|RR)8e^3VvLOV3xq^MEK423PlaptH$3Oeq1mk=p~Ls(p%rcC zBpV0YUe?R5;4EePEv5hU_2sTbO2f^y6||P>(Gta5?6Zt;vz)Gv^qNulQIS}I_4W0e zySum3l9eqtt$;P%)_IIWr^0?V-6}ecV=nsnUfaUw7T%Y3R%0?ZD@|HNsrai|RwNcf zD1y-S<6V50-al#7z3aFpv!;Fi&aYApR|}G(WwMl-$d>Kt=i=bZR;@?Hs{>?XW91>N7lNbVJy+5lRm3$l?!sVf7Mn8eS}AcTAJ03o|QJkTfDu-77AkZ zr@mBPOzo%lrql~Zh>g6|W{#F_bGJAhO^C|KV~I9k?&Y$XkMTZzf1$n3eblM ziSb*J2w#&%J0TAbW{C8S%H{rpcE5y7RtaCJXv+dqr7qGGUW7vRsDk6Gs!BWD%i~)) z1&GL+daU!ib~_Bg|0DxXe3rfs>OsAF7(RFSl{h&ny?l?xOExdi)&H1^+kXf(wm8j& z^Ye%?_nURjtkzqyr|9>~^($6zfg5oZc;->s#=(`BEK5X%tT#QICt-X6BDr}cUdjTt ztdCCM!F1(Nz?srN+40CDIuEB%*=hTQ*gBLdZJY4l95Jv_A;uVd?=iLQH=AC>B5OSB|0GYka^7objMI^V}dK*PXz*FeC^0g7x64i6C}{}hKJKLjQJPZ$D)79c*jdGYg2%}z{v z0!<(_JT8f!WD*@6En{Z(Y0@&K37fK_d!`l~mOCH;E#D^s04C8+;^UWKxy z5#n#vfC?OGyg)u{2L=HFgYCDGCl~CnK2CX1UA)cXMw6xHp2 zdDFc08maX9W(d{zX%NK*8RvRHNpDu63wCW*egr8ZIdGOeuGwRau_9VA;K9*u0Zr6Z zr(HuVlUDZuxPCmfs8FGTw$THOo@jtziHvf{)Q4U4WmsS!AAt@C2mkvHc>OEuvbW+i zV22VU>~@v>@l7hg3{nc#T?GmpyDG8d+x)Z~pVw zNJ9>Y(1lSpxYyfX1laVO3-yVU{K0NBWSjxitt2HTUiIbh2&6GQ34P%Wl>=M;&;kYb zodyJ{z^EwAHdC8#6!i3@x!R?Loau^1jSkYXN7W_BWd;3_@nLlqRfk zQ)ziEJt?TRA&r=4;PSFrt>co(ww7{gtDhJV2Azb-wz9H16dDSq1L8xF7Q*N9N2TQX zCxX5J7%TQp)I%r#TiEuWDF^!TU>gjDaiTlk#Pvw8lH6h@ii^50DKAM0pYQU1Ena5d zv*A-r3AQ8d>B=i4g}cUtR~a0o(~e;@A*lI2`A6K|F}u(ckv6W#NY|i3(my-r-e;;L z@gqBNIpu8%KS>?90+M2s;F(Lu#P?>uYQu!)Jt2QC>O*3@DDog`7J3IbH)|qPs#7R- z8$~FZoW3vd@LPl4za`GKowoQJh1OGIr&-h;ap8O7Q|!Pgb$Y?>|FVfhbaY9UU@+G^ z#^l0vN2&$JhBTRUVSmDs<@k)u9bfct=10+M0k_9iO~1M;rpoX=A&+>-t(;zOh9yYc zBh$n)AxwH6^pp91Z726Plzim&`~J2KZR7Alq=HFX`r1Fc*w_T81B>&AkA>Z_^*n8x zmncGH$;@%3_{^n5(2G`zhMZGQkZMAh%H~ff&aX4u86bRJZ}rrd$}()hdc^kPV?@ax zE@Vv}3v~eJ{yhqCVOxwF*ax$n(N6eb1g-pJTYOajQJ@GxC!e*2AlQp`Y_6KPr*s{L z$CKB1&>7zPK2|mo@kgqF=~>L*`CU|W6YhKzM`;(gkK@vF>|adeC)3*(NgFxnpW1mR zPMj-a+%PA%Hu~eG^U)l`6Sf{1`v|gQl5g$aZP(QnR*uiSJnKFtwff6PxqcoiXD(lDM^w zNR52DzSXT}i_PQr-3CtQ-=;e*yOWCs@o78tHWt zq$5E)Qc)s}W|4DQ1heT{%sI+{7^I>Iy6abDJpvQUR);%eD6KS?JIRVKxfclW*JX8o z5dNZEROm>^blx+kAlj;KXt71VQMZ;h`GO=e)ezQ^+U&&llroxG53hw6dF-_1XPvSH z{opKSD}_=2XU2KwElrA)Xdce#ytOJ@-{ZqN$J!R7+lX!8dQfAPp# zN|0-fJYvw6uXOw){mlkDE%pvOq4%ixFAv$8$OnYC)+hJwsJ!W4dbO7d6$u8r3gsM! zZ@%JESq}IR$vH`#JN^Ousuthxr|Ct0AQRg@3!C}0^4dYuNUjW@Pz=YUvr_CyWjuXZ znweRBE82xU$+S_FeDrJ7m&|&#G@_4b>%WEu;*i1Z_1fm?_1hZHd==tiH73dkOOea_ zQ*C4qy;}7o+%dexg$U#fK~}8#H}h&#WUUn7clP!5b^1MkU-CScKma&a`0Ok_3yb2m zmSO;kvq-}K8nT?KRUy1W3JEl+O~|a~;Fw)iO-(Xz@-AQ!zH(~2-V+6`TWfiHo7D}y rV57l87+|C3iZdu+1()i-W95Y;E_G%Jk~MlD0=Sgq)SwkIX2JgjU-&dp literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSServer__inherit__graph.map b/html/classcore_1_1TLSServer__inherit__graph.map new file mode 100644 index 0000000..ab15bbe --- /dev/null +++ b/html/classcore_1_1TLSServer__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TLSServer__inherit__graph.md5 b/html/classcore_1_1TLSServer__inherit__graph.md5 new file mode 100644 index 0000000..c990953 --- /dev/null +++ b/html/classcore_1_1TLSServer__inherit__graph.md5 @@ -0,0 +1 @@ +3db2521e6d0fc0018826878cc61138f1 \ No newline at end of file diff --git a/html/classcore_1_1TLSServer__inherit__graph.png b/html/classcore_1_1TLSServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b38734dc61d12d357f368a6b599f1cfdd8e4fe GIT binary patch literal 14126 zcmd73Wl$VZyeCTVAORxyAR)K}cM0z9kip$`a7b`>cXtWy5CXy7-5myZeVw~|cW>?8 z5AVyXdP7ljs;B!%pYuQclYfUO$cdw);G@96z@SS?h$z9pydehu6_85NfAL6*L3KL%l9c)Vx%)&Eh*^*0(c{?^B(2sot~ee+J(Ve zA3wh1yX9=}yCiJ-L`gH){0Y9R!d330s9mOSaWLINEmfZN#gn4k8*NCcQ0J+Dr@mRL zJU+i{8bzl8ydVkCx|s?RO!kT|4$~> zD^xZ_W$oLRaBh4IIwZ_yFjIdF@L8VFwV#gR<&24^0e<(*dbF!L?bmsragb?fv0n?3 zmT#l0=;UCH6UE@1Gch-i)tPRkXAd=u`XorNjl4KRf$66Hgc!N_vfzCwKpe{HRz;TR z9HGrTuWx;fQyTZv{ab5l6jkVofQK1}wOd2#0ZCTpD?J&eP}?wpWyZrkZMDWA=&{AR zEn`Gn;%rtzzyD9flvRX^#>FV9Zph}HpJSlYOsr`QTPqhGnw$DhOrhYcx`kBh2Ifrl z$Gy_|im=E@FS#r*e@z;qw3^PXX;Q=nQg6O382{=GjuCap($>P%PCDKD*5FX(pqH*X`#KXrMDG% zlyB{ERYX*LY^L&7njT@D3OVuG>5%W97MCUJitO}OSI8`VG|lsXy2mQVI}D%-Z1Zo~ z(dh6%DL14))?oMK$BnUT(uQ+s1%D9P@e{3h9hby_eIohtCBI8N@YWq{+pyAr@s#?Z z`Rm-30S2-}NoK!C?W(VJJ#~oq*?V@4U)Bw6TW<>~@3aRo7Ls1p+IBchj+}J}mB}qM zRb8I0H2rS#XSA@pA|Bfbh75#Zqmq7g35`CD;Vk1zgPM*$WM#FrXZ`8#Zf@EqM**Yy zCe__{LfDF#q7tTkS#nZCvJzrOSfS;*mU~fqMmx+AGEQZbljySOiZ*KRB4x0ISfTG0 zox0jmN>X+jpV9Wc*LHj2c`q$atu3-k%uDl@k9i64rZot^aI`WB6!qn zrQO91;pjMMal{YTrb0D7zlKHE!&D#;&6?yM9UiGsbdD9PzD;e2G%>c2f?SJuTR6~6 zPR=~skf;;4=N;`IP;nye&CYYIlT-FGi87R>b=&!E2iMx~tQBD)%#AMJSup+4ffGh1 z_12Q&u5vFq$eIjEm98)i5t@S~MeD|VBP>*hTUVB{ze4G8?a?|iCqUDjpUZl!AHB9{ zxx;M2K(ssNLig4^QCBnOl1lHO14B)j!Z~*?W6mlx3jFk-d%G-6T~bOV6N0LHT1^-0 zCqgt6U9VYVO~Wy6c(HqAi%Qd^TdV6|;dIel+-Mf&a-DIhL;U15wv`?lx=i_~e*8M` zbHNFxMV3hAM2{(}DvU1e_FSm4z50dO{9nWo4yG29L6u8k5(9J_3TJynG*`t>@k-Ia=JrbUG&f zg9zHfq2M)k9I(a4l9ZGnOcjEpB&ok4UmqCGuR|ju*sz2=`K#?V@EDR#H}r+wMaDk@ zXMU`%CKiua%#2m~y>*TygpG~fC@n3mC>Qw?^N+p3!Q?m`(n&1nJ?q;#>CfrB_x%fQ z#6il`#n^GwQ_ZzK~rIVfM5*QOckRtBDsONS;oXOKmms60lG36sB}tuKiA6{!>2PwN43F&CH9v88en!rv zhEA3%%lR`BQl2bJrZa6ZrVk6!o8cfdSht>RIkuIC-U>5e3Q2&$g5pKhMY_0n=ExbN zTN@J-rz^{_LxUnwamW&g(A?kIf?yu!$v=#wIOtPm$pr<9Tc=Xe(lLJxg73(0ZmegY zA0RqytTtBJZ=IraGs3~ubAP}?!w>s= zc8*7g)3`V>(dI1VSLg>(6c!8I-C;X>d0yjjnH59Mn=0dgPZ~N}X|1+xfp2k|c!4Nn zc17n*FnTLK$(cB)qgF1jD3@_?Rg@NYE=n$D+?ppHm-%J%Qh>BOG3;1yQ39>Lv z#3$i!QB^7Q_TnRBeW29p=_$Xsb$PiQJO8R%_R zLrqS8dcL(i5SIpFw$ajh6BU$}Z04QDY}gxfb>*AJk>u_17n$k}G`DxFZ$M7&(bvy3 z68BuWZ0&xjQL{VH8XYa29dbNY;k}oAo(=xE?r;wrWMfp|adTjo3_H8#dpYgIb2+X2 zahXE}kHLok3wN4dg!Ayo6Vn)MJS0|7@JU33m)sUBTX3AgerT9(vHfxPPry46Pbr7z z(JnLltdm2{as%`s%2ex3^-oC1(qO^{H}|09E*gc0U>Hu+@BlTRBSqpd!W+eGuz~aQ zLnnuA$3oqJD4J>2(NUSZtH$Xv9>U&*62c-m|IUu8DoFgfQ@_G6}?^Zs%<`xjvg*gGY)@$cv(tNnfYrGd=6v zuU(Ce*#ns7trnUcgNXPZNNCHF|KLs{E{c98q*SX!tF2>oaHz@VMond}$ZBc%bF%WP z01^rP)+*t2Jn!f8I&yaF@}B!!L^4wfGb%P`I{z~#Tm6qix=GkY(L~!MBA3(EpNDia z%gg0gS1NF@xyA23(`SQ??vJWaLqp5&FN2gp+dPPV9cB~3z<6&@9g9alf64~uyFPJp zecoJnxQX?3pgyoDn%pi& zriw~bOwIT7rc>3}y&g8Ux0jb1lO*pNA7xVOlDe{k{O^=N`Fws}>Xz^K3i{~lJev)j zu3CdI1Qh)B>n)rWb*nZ{udYo_Csvwy+>aERK^!OauqgH(9 zdN`PpZ?vTZ>H}bT{kzhCea!MX;j~I#*d0;dxJH%C23Pzb2^M(alppxlmcieBU`$my zUZT#?H*XhbQ2zYcG&JB>a6Yh?b~>%(F_Ec~O{+wCj?^3%vOca7gni4vm&u(_BORq} zw!qvsJ^j?*ZwmAxC>u;q-gM>q7lr04pUvA3A4VkO=o+k=5e*F*xy{tWB>MlgW;9TI zd>lJIP6=FL3*c8uMc_vHcXS+X56mt#to&fA*2W{%FZSk56_cw>3lGPy$4k%1(0=)4 zYMPXsOoxinGI!AmyC$*umIoD^?pJ+%0k`PVFUP%6wPs>#>jLwsV+ge6;KZgPn?!Ri zzaAVr&!DZXt*)+Ks$7S@H=1Et(VEI(J71z46-ng9=yEbX+agbmblUojjg9SIvlj7W z#iJ}AzPHB)G|q6AQFV%mj}Ejc?;H(*T}0?mRx%h#VYyrHYGtH=l>LCj{1ptN`LCAkKAVW%b91a6hybWP`6ugLT+OA5&*@QEgE}rwruij#F?k zab<1Vi~EcQhqDBpwg<$`&4CVu)eS(fM5`Z7F`$L?V`?m*?aSLvV|bz9BsaqfWnwRK zZ0Tl0-NuN<+I!@;tCv)0noahp6)`B%t6bZ(iiAFPqtTUG7cvbd96@0d%Ax}Q zUtbdT_#VrH>05b)BLek@UwC@%vS*pyYMg`K(Y$%XQGzngU)KfMAjW8k(z!K1s|-p( zpl)Qp3K8(>ggyTN_Z=KXQq{k`ncHZ(%;k~J3oD@V+NHiC@H!1~vAUW2s?X5er7UJU z405?Me@A(GKy-BHCTD3V>Z8vgJ2ogLa3B6!8D>w6N@MZ;4Y`HAP^~JNtL9u1Ix#_h z?LFkq6E#3ZUotsPj(^Fhf^pZ3R1Px%13Tu1g#AZX_Sf&6o6F5j7{m@GgX2UBUNmZ8 zE)( zh?RMwB2$8cl})5slgqaqUAEPa9n5HJVqtP`Eda+&LBg>)zL%cf_P{V?j31#v=*q>w zm8E=kI4v`KpF)PCvlXnBK5m6f>hJnB(x&+j1PryT2xVglNd_MJf5XIe+U|HsH&|vg z7fT!F7+NYjY>Y1+!?k>ZS*<}MgVXWHhapeX+ba15W!Kiw(oX)c%Dkeyb=-7q!@eI$ z>9}*nacT!BfzR!UO)i5`UQbv!)tosC!17{xux^5!6-k)(37q0!UQ={2qG83_SNxu@ zZXX`zwpu|kG~iGsuu{Jr(0N|9xx9{&Vkn`K^}^k5ywPe7PYDaUzXVD9X6~q~ZS$gN zw4D0Q#7k!EJMXcjZ5rZqzRdC6DoK^npeS$tne(6v+a`$-XH$xD<)X*vxTdKnj@3>) z-@Y4-zNKlW57+pNP06Z#U6Yc*7qz;$M)t?KXY**Gss9VBDmok8&UKp7+xZB6+yJGOvKi?eNcx>7DIq8KisoPMW`OeT$`9Yutstg53~> z1*@ViTZ+eceKFhi6mflOt{&S&&x4)_-S?>&7w|KzmS;seXvvU$*V|W&$mgDKIc=a> z=aczEOKm}rIRh3W4Vs5`u^0FCkahZ)v%hag)L7sI9(xU>p+u`2CEu|m&z`hj2~0`{ z^Yv?<8#wOlVs1N*(wGckmsj8VVq#)gHVTFe|Ncwen|@u<)J z{>3Q3(<--3UjVl7s6zXhe0{oBpxY^z#-UrlEwKa#g+h*>E z?A5CN!^FjP`zK%zsD~vR{Mo+Q^X|kqRYta+LT10#`G}1OgD6ofrf00x%F62M`nn`S z5OaTpr=9_f!W6zpg6{fsR~-?7UXtZ96Q8Lw-`V+EC_5TQxfE;~Vx8IpZ3P|`)K%C* zROF%sP08dNGeXD<^Yg)uMyhadY#bbAAfDXPQda|Qvn6u-M+V7XUXKybrK+QSDglp% zz(czCl$1q1vyg6LpYRMWN0=GSFBw3cR4z}h!;v5kOd%;Ly3$&S&(_w)^72b7t+t6t zjklzjT4;-^LlFd3>Xm38j>l%EKNd%l#cPx5z2{nHzpd4S6YOGWEIKs4DW4mMq&y%aaYLtY=9P? zo&o`Ovp>!UU=vm|93f<{hxpUYnyS*!N2mxqenep|EcCskq@>Nwu^`gBWojzmF)Hc{ z$$5HWR-gO!uBc`-D1UI!K}FQ!gUJ}t7s@_PyLE;c!7oX5jbYs-cFrqF8Q|}GJk9p$ zKhy)SOr z#>t8r%k*O9fB6vA_j=yQ85tj+4Mx{vHr^ctxo?V~g@@3`Up16vuZN|k!ukm&#pIy! zZ2?FFH#4&V#9e&6imrP=;(yfu5KH?#xm)$B*$N##IdO5kZp;jwqX`9Nzp+;QUcGS~ zIy>aIZn5cTh6Z!w?a=oCBz1E`Z*#E?@byhEDZv&B?kXliP*lVk^|$zFYAS7L7?Ht~ z2LM9*{B|&GOw1T9ZL_|V)~L05;nLT7eluDWq^f%Iq#B_oQwg?nCbA{Dmghh zSFu{09&UrtK)>bOi`NTp1hAyw7Xy6#^62R!0FamsgcG|#k32SZ;8H`EI=3e!6goIe z7aHo$XNmnCc^)N^0pz?lx&(mol6Rk}fll{D@~Nn++c~ioaZ7kG+UcqD@Zf%Us8=}OWU_b5{8^CD0j*e3j-l8Je0`Q;gRHZFo{~~rywJ>ln|%v4qc?RJrx9EI}70P zDU3N|iS(2F6bP2?J5=GJ zPzJ&fnivxk7$&_2gr@Xm^8Dm{Wf)Et4z_m+x2k7%m2^=6DhQyUMRI(F+{niH)!?qK ziO9&^mKGYI;XQx^6nM&5l~~S|sUM7G6?Oe|J=bU&&nYjz*q;aj+6$bnr={BWjv{hb zQ=?Epia`OQkj3O`t@Sq1DKdl}45gu>YW2KFNXPmr=eYN7nTwdH##5x`ep60`4%U^K-mmy?%Ja z)g12NCP~HCN*%A1G;I{5&A;+GnFmLfKHL4zZM^S*i={#rowp_G{Dh+-K{LSQNBoPi z{4b5BQBLSIH1tsSO9~bS2IJk~pFo$D=&%h>mU95A==t(p#u@uOCJ_SS_w1C$0rBuC z12I_ztP3ZncsSU6GX=#GGj;uqBvhQtu~asg58QgZn5c+;{5~(gqN6FZ_;-{uL}l`G z!A0@{i3thz4mJ7Q!F7(#^@sC{UVV`SDo9vyH){<1!~*u8O)iWq*$LkDD2K}x(QB~+ zgtaInM2U$4@@P8;?0+mQVTJOi;?9^qFom}IZck=q)ulQnbDkS%IXT_;6mQ_OzBv3Fb|XLm;jvX$Qo6|#AFvZ^6TxFEH9cJgHQIK{Ib%-NUqV1!4r~1q zhQEI>s35(mr_*G|CR?#^Z>J~9f!8|6a=W%!)6Y^ z_~xv`3(a3=1b<)-CGqt3dV8L&gJuLJRF0O;nVFdl3=F7brdnWOUjU83&Vjj*Tfz_z z7k7TK;g4i5U`fz-eqiFXBdN~y?bPd%2UZuGb0dkOu!ID%bC(uz;Dk9V#SC@o?}ddF zGjx?Ial?WB;(`9UvbfSCD?w7>$oia-sm!LPrn=4c0Du3cmX?N1kT2qM6T;HvBLhq^ z!haYX|KW64pm^tY7Hs+}PdeYX#CK2KF4Df^Icw%ZBKs#Diux|8Iykfu-jJo{ii?m7 zA&>buxK4;zD$62JDC?9B!9)pkzaK&t*+$~2f#=AtRpHj+u4<1N5Jx7xV%xadWD+={ zt=(3MaOW9C4}Xz4xf^=T~m`?bT9HNK5=jdIcLPIRU4r2d#IW`a(iembIN64%Ku?Q&n* z;YZTssz+RQ6xQ$mS@PYiOa6fBL4gP_CVg9+7~L!Qz!*(^GRo){m~O$J{VpQGa)JwqMu6dbtfv()JB#!FNT_1 z2LDRW#V4t=dO#QSs^6ONeQf4ylfWn`Z}a%fHXs-)0I)2c1UdcEV68`v!Vqp#+D@NV z73+lI6?!bT;JrlPsgeOO(etTofDJs@l66FAjP+XRg%A{J5>PSiu)51EU#tsX-3%l? zgvvBPvhc*$P+mUbyRqc%&ud@{A$J?iFY<}KdQ(Se8{UX&dsnllm@p?qKyknlI989P z@xgz)xl3v^XvCh|XGg1*aPgBvIPQMEHX)>Soc<9Yaw2X&nOX;9u%Ig0Snq%EdGSWr zq(p3LArjPy8Tcz|JJ#fQ!|4X^joC&bta>{pP`?67d%l)VmbN*IpCEAT19_)*4|ufn zaeHS@EzS>8h_6$MuE-p*POOBkoLMvZBl~0iAKb~4G`DzLNWB&xkl8z|?&e7{MjE^K zw5jq@w5fOh54%TJM^Y)oo@}rJ^S=5s5nW1}TA%4q) zniRDAd|Ok)#G#x5sZIy(w{D`lW5UVblv=;3bK6>7PcA*%?-0pdfsQM~4xbe|@!+gq zh8I^7P*oR}u*uWP*$|YFJ@#AsO3nJ-<5t(IxoeXp>&M?!*JxJ`vR`k0{D?mcY2!Ge zpI1wZb^W(`5SC1acyzAg0y+zxqP-4YN3^{S8+7*mGO42TQBSY9sIHt(nWC@8_2M`z z;Xg8XFBBaORebssgy6mT0bVi2!7FXdO!|W}mu5kv7bU&Gb1E4(uwp*)E}?5zj}+AA zbQg*TxVF>&m0o<(ZN(Q(e`K(?>2YUQYnP6HWtX2>aRYs#%%s6yF5R4Dy&jb&QpFN6 zv{geDFkHh-IHwGIN%I;%Ib1kz>n8hT)!4D;sQa=Y-L;{hb`2?Ox=o8oZ@K|Lm4{mu znwvgrv21c_Hp`HGSUC)F5>^(DPfH+k_02YS881ZL9g!KK>x7zqtK$Dg`akI&g-<<$ zELa+}V;q(q^GdDvgHFt_IAtt!5^TplKNKB^Y4Cq1gHjAmfE$2(u0y!u5CCmioYVSb zIg;?6@;?XG6R)aT>eHpyKUh-S|Mta?$q3JLwehspYIvlhgNw;0zPSTMI#4X{=yBym zD_Q+J2uWG7EE8nNXp9xrM|PHe%quD^Tz@!sjRt4v<=!4uXeMie16J2 z$YQ=5`R+8eG~-pH-r2b1`J5LkO(UgDjCfzsuEt=vyQ%-;*%zB_dY|x#D+)I8ZFVZNhmQw?G()WxG?~*QaM2 z21~L`Q-`Lu!QA+H#}^hgkzm5TPx5@5J9WHwvt@O;QZ|~saa%mXt7TUWj0PbRz@(L( zhAk{y?pHkXef};^*O56Vgl-4}gFW{z7a$_+J9TPlAb#S-gKWt*w6~`POVqYpjG;Op zc(7`R)2|>qn`CGx;?-m4B>7=YY#^DdHHB}rlyqRm-taZz_w@tdQT7 zp^CNXz_g;wgx6_?WhmrXQ=+ghcf5AW?WbY*#{}-?bdy*2lRDi!Vq)^tklU0p+PbQ{ zg#+3W7w0=D;o68tlL3o?VQSv3=-N}>l=7?O?&5`2eI;2U*tp3p3iIB$qAs#>$i#wg zb$?Y|H>P4?%G_o37Z?YwmnKXG7-(k6kOW=L_*glnK0pqoO7>-jgVbw@B z)8naGuT-o=If3F;uf_Iz?Z8#*(S|kWudNU@wPQV=SHUPncJ%Nz%FC%umM%l)m&2;E zY5m`a!#S0S;U)|%vomr3BO@X9-k@;h!}m_RljY{bwNHWib_k(&z!RMOZpsK|k@J70 zJpA{(Hy9e_K-ThN#hf&D;6F(n~wnb_t@j272pJ80RL z7chAsB_#z{UvD~ffTChbs_2y$u(+^L|LAMI_G0Vak{cNK{QD<29O6C|t+c`j8XB6` zj`tS}vciIdm5%58nKD>HaX-WZxpY_mLy<3~wFpcDo~2}C?H-ZtqonU$FM5s(5DGUUnu zWDdAs%geBqaxpPE=dP}|Cm>HxMEO)B!6NCouFTokEL{j7@n>g08XJE?R=t(_@zE$5OM@T}BNI)@!xe%*dYdOtx94i4mZndG#z+e0J2 zqo${~$v%5e&8Wu2U|m@KHDU3&H~w*_ED3vHos^Iel8_*oA%KkNXJb<6a#N0xMlYD< zC&`bF9&ow0S6VhS)Ia?YmOEu0h8>}xU?#l=vlyD+2#AuZWxdm$Wxw^tQ)I-(GC|ur zIa;!TTkvrMdeyjWsD-(oIjmDb0VT!cGtk4Ox%u8+6}zX5u51Fl65G{dLVWyACv&rr zyn$>%b902z(MJtBF}pK5Y-zQ#=t;BrSn|C5`|&cBMqpS50c2TGQ)aAud^2ZfZh)Bw zk2J>X^HP$v_LfNgB2X$$0`Lu^h&#nq6F^u@jewnHI(o;5>x9-_R~OIAYgH^KPHt}d zZ=@MuQ!scZIJg-w5Rr38gM7EZ>1XNYs z{G$T`HqN(J(GaZ{Y827LETgh!3ndQrz-;Z_86~BIvs20yT;~IEQOZS#nwogT{Je1k z{(eD!_`K730V|xAb}Ktu_pl8%Jmg-_*jQun2*LmX65_9ApRx+)fq2s?R+GCR<4)8TFs;t@ifUo3mf5^+Upgx{os$M5%~Q zC*>fblccmEd*>Bhjk|zD&S@UV@diMr_J*r(Z(Rx}MABd2F@?@L%3_$AL%)M>S#Yn$ z6?6gJsdP)hWUWJ+fc?8pjnQ_lC|U97B;vPL{G-b~1DvF1R(x#y!?H5kiy^heYJfhU z&SPEA>3(QyLsZHru>JvI6VxHMR~trvPv{}1 zHDX!j^qqM!HKx|6v0 zWr?z1Zmy0psOXcC3ASwVucFdW9K8Fqc*2k57c?$?L3K+_Uh zT0i5a_!0exux~7b-c8rs)$>TWu~o1BX#V?Levhd zcl4XlYNaIv*iaBqN6%bc(|B?=c80E~mES?2rH;qRjnnTorVjz@4zc?enfp!By^t%c3MWSVrn#6BWtu1$@%B&A!dXbemgKu@pl@6ih;%z&9* zx1;&;BozUO*kdV$*ME+^?|bAk=rW;oQIUeHe;lRICD)O1F{^-@Bebu_%Z-Wz{d z0HN+^j;G5x+6eHxi~*sBT^j-%h8KJ~@6#yVnsz>(?*`mvFRvg8tNW!lW;h|~>2$_M z`DV`U z@z~Fnug8#ioGfffZgjyl^=J$OcK3TgKYh6BetvM~cQWH9UqeGo!VM#?llG({pFjeR1OD_+zzO~i zhI4j`A5A}3RMd}aBx&kN)*5H9_(HkY(t>DVMwQOBl~+h1-~0LEg7f4Ai8K8o8q*w) zP;T;DE0wb0)v<1UeS+5QD4=@)6`8Zred)oe^vg#{Z<56G@|poubs`KG$ZAr8>T>8U zS`w}_vKdYSx06ChcseDmbQYt&yoH5e*)rvK13Iq!lY|^Vm7l>n+;lLvU9-T&`$S8l zR{yk$f~u*hiL%o2Y5X9z-q_mO8i!s>#2KYJwgsY(Yhq}aS5+nNjCpWzcWy{PkOtVG ziXf5l{Bye1092fomKLQ9p%#gCX+)+UxBoi_>3=07{VRxO#Kvvy{34$C$oH8BOUU&l zt~-oEE6sw2G37!FjOhA=m#85|@>yU$hP;V1qhNAk(hV9R!!LxKQ}wn8C+c2PH-)^& zVtUEmM(=7*?d}e(4yG=QdoUAc@U1Ti^5*|XdV+9!v8V)|zk-B>#B*a8D)H$h(WGh^ zeUSyTo!lAiJ2^~vj;#mXIQJuJ<`gN!#LAb(8dpFSX!A$MzPLesDq6&)VOfwf?OYeN zM>1J*nJ^j}GF2!Gaf5;n!LWFmJfpz#-kZhzvI% zpbxHm|J1mB^~KGtsFv_02nuoFQ}0|yNf9>7*Ba3DLeiksv~le&%M3`W`zzK3IpWdT zGBM@J_!L`5Vfyd0_h38q^1I^*>8{W3ByY|OzwJohL~yVI-D`7ft?JuT4~+U8SwAf^ zkjx0ha~UO~jQWk?i(^!L_;O#=&}vxQ>HXGm06ml0-SDKTTi%h=P5xG+Z_H7PKzm^u z`6<6R%{+smMVoDN@hciBEUCy;ZOw!{|5oRb!E&E3N?Y%t=X=nB_Ql1#V~1a?e1?0M zC^Bh}hu4FV?+B}lvip|F>-$}?O;rnP+?i`^j_L7^u>Y3{oF8}(F5mw*@6&=xWyMQ< z1|;A$yUu6sN!nOZeY%a zGFW_&+un%CY9|E}g@I0w4fdO)LT0P3``7;)GoBY6uj4U8?O6Gdm6EFIy)^bi$LoiX zO;64k7nd8S#pl$PMDD>MY%a1_<=-%x;k^nhS)U48*R6gfk)o6Ku;N#9o;iGX;4fOA zDM=~6WD#d*>n-7!yxm4t2C-RxH=YmS(N%D}3UMrmoa!^zLoZj1Sop~}UfHtW^3akn zaLQuwY&=!x%u1`QTvJAQp&X|ilUO<1C|>1`_McRi;pO=N^(z-s<$#~*cq=!j(-S5h zzAnS&t#2Ow(_n14DV8M&{V<(gN}ciew7#cZ+531aN(3&ZBT9!xz$lgFa`W8MT(OTV z`0W%Z9=}#>8pE4rARFvF(JFs)cne9Z@=h0D11B_ zIGnu_iY0MF<~LP)a*xh0=c-sEJ&(gPpBB}hj;|7?Te+Vgk*B+S->dOR8Am1_b8TNH z4oY6XI09MQT60)KmCVa+;=yg>$+HvA3o;db1S^k+v^8uV+|W^ih9iUD8ass|22aOa z1pi)0paWS#LkCCL*5m^+VY7>hqH}t7YHPycoY^NVb!G`otKCR>l}^r%NN5q)5Qnx27S zZbA|JDQT>ame$Rx;kc0ifchb+M%niHCn$j3wD}i@pTCdaXI0V}b6n$W5EG{6TPq9+ zY8~qTUka0$lYM}3a46o+weKW~UB&`93DjS{_#ckQy`g?yHDY05!NI`+Qi#JkUmn5^ zk*A|4A?6kq?}&Jl4?j){Su7!({$B?a7Eii%3Zloa`DE8*62c#Xqs--Xtebi0-^g39Xyzzn~z$_ick(s`SMu3*cUAn&8hI*;pf z5u2m!Kddb&<|eEBctn@%Wp$xucHEz9M1$@V?|Wa^wtQYZFL#lMgn-okK>-ed6fU%h zJT{w~BL(`LZ1A6rlGpDqbHA-OraRnGWZW_`4Y6e!O)dmh+V6AXj;gj=O8c2-d>n2v z#z{#JUrYtt_g5&~qo9Q}VWhm!*}qA>aXyaBbFp#y=9=zuM`O({w;&AC)UNH{N8$)P zWvK!j0ao&-6-T`^d;%S_ea=_79BVT{HeNJ1d|;!ZO7Sgx z_h@(pC_69QejG*ruyr&z-XMp!AV5i`Rt#x*Vc?zXFOD+6p$xfz93ZeHM)dy z_;wgsxeoGcsg?e)ImxZcKh33caTr<@PTEst3$_@3=l>J(R$O^br7U!$pG+a>6rp>1 zI=(E^6z9DJfiUt0SC(V6l*>$uj~*)lp*MYovOhp-nj>ipCQuj{6UV8*eYevp^N!dHu9;d*5 zMghHKE;Pju^d+o^VC&QIu!Y|(KLWctq~XiEn_jKAi8(*6d(dPloSK~8FJWqma5&sM zI{(egUR!ZV(xd5B+nS@x$d-TH2qByTJ$H`mODOza?oQD)s+W00yG=G9u+e$P%X8eg zq5t|EWy1{p_S>k>lC)@+$USa=RKo(%1aiqfT$9i@zCI9{7=vWGy}85y&=5fJjvzoWzSz^%Ic*LTeR d39k174H|~A=}ueCzzc9NlA>}Vl|p*H{|`RvFlzt+ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSSession-members.html b/html/classcore_1_1TLSSession-members.html new file mode 100644 index 0000000..84c5894 --- /dev/null +++ b/html/classcore_1_1TLSSession-members.html @@ -0,0 +1,128 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TLSSession Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onBlockReceived(std::string block)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(char *data, int len) overridecore::TCPSessionprotectedvirtual
core::TCPSocket::onDataReceived(std::string data)core::Socketprotectedvirtual
onLineReceived(std::string line)core::TCPSessionprotectedvirtual
onRegister()core::TLSSessionprotectedvirtual
onRegistered()core::TLSSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::TCPSession
output(std::stringstream &out)core::TLSSessionvirtual
protocol(std::string data) overridecore::TLSSessionvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
reset (defined in core::Socket)core::Socket
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
setMode(core::Mode mode, int size=0)core::TCPSessionprotected
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server, std::string text="") (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
terminate()core::TCPSession
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()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_1TLSSession.html b/html/classcore_1_1TLSSession.html new file mode 100644 index 0000000..5ee6091 --- /dev/null +++ b/html/classcore_1_1TLSSession.html @@ -0,0 +1,414 @@ + + + + + + + +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, std::string text="")
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
void terminate ()
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void receiveData (char *buffer, int bufferLength) override
 
void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
void onRegistered ()
 
- Protected Member Functions inherited from core::TCPSession
virtual void onDataReceived (char *data, int len) override
 
virtual void onLineReceived (std::string line)
 
virtual void onBlockReceived (std::string block)
 
virtual void onConnected ()
 
void setMode (core::Mode mode, int size=0)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+bool reset = false
 
- 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

+ +

◆ onRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void core::TLSSession::onRegister ()
+
+protectedvirtual
+
+ +

Called before the socket has registered with the epoll processing.

+

The onRegister method is called before the socket is registered with ePoll so objects extending the Socket definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket.

+ +

Reimplemented from core::Socket.

+ +
+
+ +

◆ onRegistered()

+ +
+
+ + + + + +
+ + + + + + + +
void core::TLSSession::onRegistered ()
+
+protectedvirtual
+
+

Set this value to control the next read event coming from this socket.

+ +

Reimplemented from core::TCPSession.

+ +
+
+ +

◆ 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.

+

When data is received within the session two modes are available to pass the data through the protocol method: LINE or BLOCK.

+ +

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_1TLSSession__coll__graph.map b/html/classcore_1_1TLSSession__coll__graph.map new file mode 100644 index 0000000..57bbbda --- /dev/null +++ b/html/classcore_1_1TLSSession__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/html/classcore_1_1TLSSession__coll__graph.md5 b/html/classcore_1_1TLSSession__coll__graph.md5 new file mode 100644 index 0000000..563cae4 --- /dev/null +++ b/html/classcore_1_1TLSSession__coll__graph.md5 @@ -0,0 +1 @@ +2cdeac3d1557017d3406af5395022519 \ No newline at end of file diff --git a/html/classcore_1_1TLSSession__coll__graph.png b/html/classcore_1_1TLSSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9fe795815d597cab3ea684ff1cf5fa1b1dac30 GIT binary patch literal 55218 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSSession__inherit__graph.map b/html/classcore_1_1TLSSession__inherit__graph.map new file mode 100644 index 0000000..caa3726 --- /dev/null +++ b/html/classcore_1_1TLSSession__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1TLSSession__inherit__graph.md5 b/html/classcore_1_1TLSSession__inherit__graph.md5 new file mode 100644 index 0000000..c2fc049 --- /dev/null +++ b/html/classcore_1_1TLSSession__inherit__graph.md5 @@ -0,0 +1 @@ +09286dc1e3d29db1de04ca11158a935e \ No newline at end of file diff --git a/html/classcore_1_1TLSSession__inherit__graph.png b/html/classcore_1_1TLSSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..37d6c7f5f0f6db8feb2515d57bfc866bb507e6f4 GIT binary patch literal 7070 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TerminalSession Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clear()core::TerminalSession
clearEOL()core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onBlockReceived(std::string block)core::TCPSessionprotectedvirtual
onConnected()core::TCPSessionprotectedvirtual
onDataReceived(char *data, int len) overridecore::TCPSessionprotectedvirtual
core::TCPSocket::onDataReceived(std::string data)core::Socketprotectedvirtual
onLineReceived(std::string line)core::TCPSessionprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() overridecore::TCPSessionprotectedvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
outcore::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
reset (defined in core::Socket)core::Socket
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)core::TerminalSession
setDescriptor(int descriptor)core::Socket
setMode(core::Mode mode, int size=0)core::TCPSessionprotected
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll, std::string text="")core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server, std::string text="") (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
terminate()core::TCPSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~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_1TerminalSession.html b/html/classcore_1_1TerminalSession.html new file mode 100644 index 0000000..3508d6a --- /dev/null +++ b/html/classcore_1_1TerminalSession.html @@ -0,0 +1,344 @@ + + + + + + + +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, std::string text="")
 
virtual void output (std::stringstream &data)
 
void send ()
 
void sendToAll ()
 
void sendToAll (SessionFilter filter)
 
void terminate ()
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
 Socket (EPoll &ePoll, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
std::stringstream out
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+bool reset = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::TCPSession
virtual void onRegistered () override
 
virtual void onDataReceived (char *data, int len) override
 
virtual void onLineReceived (std::string line)
 
virtual void onBlockReceived (std::string block)
 
virtual void onConnected ()
 
virtual void protocol (std::string data)
 
void setMode (core::Mode mode, int size=0)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 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
 
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void core::TerminalSession::clear ()
+
+

Clear the display.

+ +
+
+ +

◆ clearEOL()

+ +
+
+ + + + + + + +
void core::TerminalSession::clearEOL ()
+
+

Clear the display from the cursor to the end of line.

+ +
+
+ +

◆ setCursorLocation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void core::TerminalSession::setCursorLocation (int x,
int y 
)
+
+

Set the location of the cursor on the display.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TerminalSession__coll__graph.map b/html/classcore_1_1TerminalSession__coll__graph.map new file mode 100644 index 0000000..e52d5bd --- /dev/null +++ b/html/classcore_1_1TerminalSession__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/html/classcore_1_1TerminalSession__coll__graph.md5 b/html/classcore_1_1TerminalSession__coll__graph.md5 new file mode 100644 index 0000000..80cfa26 --- /dev/null +++ b/html/classcore_1_1TerminalSession__coll__graph.md5 @@ -0,0 +1 @@ +098331aafaf85ad9075d43e99a6e3829 \ No newline at end of file diff --git a/html/classcore_1_1TerminalSession__coll__graph.png b/html/classcore_1_1TerminalSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..52375049e40d5cb5ed5b5ff1929f884e4033dad9 GIT binary patch literal 55539 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TerminalSession__inherit__graph.map b/html/classcore_1_1TerminalSession__inherit__graph.map new file mode 100644 index 0000000..6f8327a --- /dev/null +++ b/html/classcore_1_1TerminalSession__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TerminalSession__inherit__graph.md5 b/html/classcore_1_1TerminalSession__inherit__graph.md5 new file mode 100644 index 0000000..0f1c7c7 --- /dev/null +++ b/html/classcore_1_1TerminalSession__inherit__graph.md5 @@ -0,0 +1 @@ +a248316e887d8075885b627745432c8c \ No newline at end of file diff --git a/html/classcore_1_1TerminalSession__inherit__graph.png b/html/classcore_1_1TerminalSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bae96c3881639658ba76148e40b99a0eafaceb90 GIT binary patch literal 12634 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 JSBn}2{SO;T{=EPI literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Thread-members.html b/html/classcore_1_1Thread-members.html new file mode 100644 index 0000000..a3e77c6 --- /dev/null +++ b/html/classcore_1_1Thread-members.html @@ -0,0 +1,93 @@ + + + + + + + +My Project: Member List + + + + + + + + + +

+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
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_1Thread.html b/html/classcore_1_1Thread.html new file mode 100644 index 0000000..c002433 --- /dev/null +++ b/html/classcore_1_1Thread.html @@ -0,0 +1,163 @@ + + + + + + + +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_1Thread__coll__graph.map b/html/classcore_1_1Thread__coll__graph.map new file mode 100644 index 0000000..902928c --- /dev/null +++ b/html/classcore_1_1Thread__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1Thread__coll__graph.md5 b/html/classcore_1_1Thread__coll__graph.md5 new file mode 100644 index 0000000..4a0cc87 --- /dev/null +++ b/html/classcore_1_1Thread__coll__graph.md5 @@ -0,0 +1 @@ +7b27e6318b467af3b1df84944c1d56f9 \ No newline at end of file diff --git a/html/classcore_1_1Thread__coll__graph.png b/html/classcore_1_1Thread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a87930bf39a2b665e4a4796a653f9698bd25e1ef GIT binary patch literal 3093 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Thread__inherit__graph.map b/html/classcore_1_1Thread__inherit__graph.map new file mode 100644 index 0000000..902928c --- /dev/null +++ b/html/classcore_1_1Thread__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1Thread__inherit__graph.md5 b/html/classcore_1_1Thread__inherit__graph.md5 new file mode 100644 index 0000000..4a0cc87 --- /dev/null +++ b/html/classcore_1_1Thread__inherit__graph.md5 @@ -0,0 +1 @@ +7b27e6318b467af3b1df84944c1d56f9 \ No newline at end of file diff --git a/html/classcore_1_1Thread__inherit__graph.png b/html/classcore_1_1Thread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a87930bf39a2b665e4a4796a653f9698bd25e1ef GIT binary patch literal 3093 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Timer-members.html b/html/classcore_1_1Timer-members.html new file mode 100644 index 0000000..af392a8 --- /dev/null +++ b/html/classcore_1_1Timer-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Timer Member List
+
+
+ +

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

+ + + + + + + + + + +
clearTimer()core::Timer
getElapsed()core::Timer
getEpoch() (defined in core::Timer)core::Timer
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprivatevirtual
onTimeout()=0core::Timerprotectedpure virtual
setTimer(double delay)core::Timer
Timer(EPoll &ePoll) (defined in core::Timer)core::Timer
Timer(EPoll &ePoll, double delay) (defined in core::Timer)core::Timer
~Timer() (defined in core::Timer)core::Timer
+ + + + diff --git a/html/classcore_1_1Timer.html b/html/classcore_1_1Timer.html new file mode 100644 index 0000000..d1127da --- /dev/null +++ b/html/classcore_1_1Timer.html @@ -0,0 +1,228 @@ + + + + + + + +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_1Timer__coll__graph.map b/html/classcore_1_1Timer__coll__graph.map new file mode 100644 index 0000000..67090f0 --- /dev/null +++ b/html/classcore_1_1Timer__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1Timer__coll__graph.md5 b/html/classcore_1_1Timer__coll__graph.md5 new file mode 100644 index 0000000..ee1db5d --- /dev/null +++ b/html/classcore_1_1Timer__coll__graph.md5 @@ -0,0 +1 @@ +ed8eb54e8b8c1aa912a2b8d80c03ef5e \ No newline at end of file diff --git a/html/classcore_1_1Timer__coll__graph.png b/html/classcore_1_1Timer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..40de9677785e002859a25b1dd405e9bc7cf8e6e1 GIT binary patch literal 12611 zcmd6OWmsI%k{}S=Ex3Dd*Tx}ekl^m_!5RE7B zXTII}wO{|Z=ia`jPSvSXUN=fjMGga%1QiAb217w!<|Fhv4Fdyffs6dx6`tw}($z;5J{CukO zTLMx7XuNg6&+D#<=i9XZJ`b5iY%umm7hDTMiO9Bm2zEX#Di*cyKL&bxCSf3u#o1cZ zaB27g4ISO!3Vott`KizOW>?J2jGD!QRQZ?mbomQVRC)cuJIO7NVzZ0QE@Wh6PA}p@ zl7)S08996kDGwPibg+YwAWXv2zG8l@>N8v&mj3QCqJ;g)sq)Ms#%#;-Gve!)V`N@{ zec`u9R34C5SVzuV)?`fE*&D0QmMheAhb(vnrHMx#te)<3#R$*7r*a+;2fo(jY;TU@rp9FzIP@xJD{499mc|c9v-1-Pdea*p9U+J) zIou5CC2r?0@QRkpJ+C!7eM`cT_G99dgX1U$I*X8nwGV8PkK4`N0f9IHxOxi#^I)kP+zm}WH^Mla4NrU zZ<}gQ);JWlw=2DE~nN_{cv_%#CU5_&eYu5@b%{Y zi9sWUH9^0xT^Gxe^di;3({ppwv!VBM-XJg59;xT>Td&PqpC_)7HEQa@RQ3$5I(Hs;ADA|D zFWmAy|Dl_*5WFA=kTW<=mMPQ+4vcgitHi1*Nw$X*>bIw|CHeXe;2p^;?83UhB=)vt z@D$RYC`HSCe0c}&E03caXk|#N{G-%5K`m-<69-dX&K?m9s9CO%62G8~`GNe5T9N?f zU1p1|G5>poH8M7UU|~sNC`fwftg?XpW+2l9iAGuVNkz$M1FTOJV-Te!zJhB*C`d3& z%iiReAuL94=^9d@@kiWf=^MSLTWHLr>#6)f9}&wV*uBm@S$5;5kvOD}qVC>j8sV3Y zZhzvR6K68N1!4|#+lPCO@-NulgynNP=Q~qIh>SWV%pA%_o{P7_Fl2(5rXE8b-=Rlp zEqypAR45vNpiiZNpRV`3ha`WYUe%MT6++k^G=B4YC0-r!48@AQEit`Unq$v|KV zOpXqcA~ZXV4Ry`B6Dm%7ae7lp{xgeBZP+deY0Xxzr0za8vy zlG60wcWR_)Mr-B>itn0!7i)ycrH-F#Kl;r8w2rk*+<|Vsb66XPO|A|^p2Z0VVUwc> z1Bi(|Qkb~1Nkq_Z&o|Z+J&6Wy&jcWA4yuyORUHi(ToGG=O7F*0n<2N(3owgzi~zt- zsCp+^Afj;p#-hyJ6r42A+j+Ytg-8hpJZB3>^CgzU?KJG}$xj*rC zNA5m%b$Ol8^fQcNhQ`JM4BPQd9t2rWzb;KXE&f1BV!Vq`E++Od(kyKIb#uPKT50^u z@^aUs$`$b7E$Da4aE2qJk_i5@mlo9LmZ<`ldvH0g8nk%w2aNzdJS8RHgZy)`v}Dmo z>7tLjgHaX8$SbkAqG=Yp!%3q*^54l0$|r(_T(`f?b-`IkXlioj7bGMYf$DpSM;TjpFJj@#a}zM)+P;eHJSU)H*ju@59+NfdavFtkGR2%xVd^d z!I5UQGtyJ{)0IN91>Ks4&n;4-N22hSk2iR37c|(Bkq?d6JTYuT8i1Edqhmgi;DJ{x zH#cHcO#v>|5Y*{BX&rl~ZFj@xsXxiOwWfmjs7Je=uDWe=gc>EcLwV8{-_>bZV#(St z3E6E0;3JViru|nCGisG@@eztzS3gw%)5if*NHApNPF&vS*f0{N+Y-!aN_Ftzm`CGrwsg(pB3X4C^9%J@pJ4Cu!FNa=>$di9S`zQ(S%T!0&<-!JOvvrkI-QA8X5d%-F$a=thO;(U}cK|Lx~gQwD@JL zut?gDfFBQ$#`#!7W(M4Tn}3>Of)>vJdtxd()n86jVF9(;q@?*8syOoTUl} zQ@Mg3hfcrt_bq;nQVk9kl6KJLzmWuuXs!VkFMr!dOM^Be8r*4PNt!VKYLU~g@}f{3 z$DMH$fdrGuTQ|Jf)d2bFu4?wPwZ^mEFoY=K`+&s{zg%1b0&d5jg2YhX%9w5^ETlNS zhu>JY#stIi8m*3}#s#P8Xs{ZSMIVIa#aDfM-3lvW!8JABsQtVLCg1 zfGin^(+CM68MLV63E?WIfA3lQ^=UWGX@0TRY?_MBlAzl7Ll~6n?IVdOct9YXwcCoe zUWv+In#h0cy)}i>^s_z18j3X^JO#yWg429TNy!^ba$nNP%vH06(i>!~l4?f{D8tj& zAlVP~4H`6pK!%4qmpHdwev8+am|^y)%H^ zrogg?m7fpa(BbTf+k?lm^Eav7?C%2_-IKI3ailDDHq+?n6hA36iXG)_Z4050-%5HD zCEqlo@BlvVqwQ4GFyvV&$#p*8vJZ}I4Ltpkjx$PSQUk(&FJ$S^;}K!i#SR%9bo75| z6Zf2IpGnvWPcYU-acK#y}BaTE}r#TO~eUdgUt^3?EQu+T2kKKlW`#YhS!PoYdF{ zafCn)gD67V+z#~zMYar}Y5K9y0`(9sVwMnh)I4156R&t2qK#^;zWa-_Pt zx&udL-RTfJrhH1ZJI{bf8h|+&k-lg|tjVU-mZTE)23Yj8D>>{Di`(t_kdUZKFzh1X zfTTmBfhGhp8tbb7Hy+!dBL^&@`e;Op$YfgiaIBwo6hVBjrL&`RQ9@&(cubJ8s!d;%7WZBkGSYuT6HtPXeVEu{s; zc7gW?_P=qIH{|Be2TyF&i?1iDHRV1mT1`H<$eYr?798HKR<@mupO$2QwZX5It`X$? z<~^YIr5N%cUV_S}^iwc#wdTTb=t>F9$!N@JR#tIx%Eda57;LZ6z~1qA|9;W0xLN#Z?0F zqr;z`wZ)-4H@uGe0fII%R2Gqy6cxJ($?8PuD(0S%nhSRd@Y+-hS7oTkDXUeYe4#5A zAY4w5coaOIYhh#3tfJx!i=e4iMs(k(X}RLtKi_>iht?*C)_USb)wVrgF@gD}tU|;P z&BBeP?ii%Ca|$=o4;(B?Wz!fLp`lQ5^<;i+PVV~ikx-y@1$`vmgCe%Bo>GiZL~b$Q zQP%E+nrIGyXy!-z#bn@hwwrxm$Hir6qE{TU@O#UZhli5cI4%t1nfk!T)_qCkFYHd> zpiK(7VEOr`WIlyBYCdv8UBrR>`hO!L)q1^QauUGd@s%}St;D#eWhazH(2MM-#TsYm zOsEBXpTc}2>)qLM%U3FZ(Cacb-I|>YGS{N6-=)E>H%Aq_7m_P!M-P50CMCuJDvHB! z#Ahy)3yhIHnU-E>h^frsfLnVG=OB2BbXb)Idfefs20gvOy#{t0!h^YX0u<;s)9W5N z34F38OucnhT8P51I6V8t16X18{3g~rkZQ{LEeg}vNSb~Ru2gVQr3O*ol1&+rPN zPqVVsJtRWI>EEYg1Mb0MhCR6<0gsz=;}3%I(yp$YMqjCD=+o%J!ooD~yO3`I9$%A* zBDM!;lV%}g=0s4R_BOOk!+^8{zd%7*xiT=f+ZTg_PulNRhSTNZ z?xtA`CjX(X>1-f7$A-8I)8bWApj;o~M-eccI}j#HRSUv%`~Ra&$4B0*Yr|VhGp!dDX@Fa5OhT-)r&GMSvwY zin;k5)CP}1ZImTTad)+dsUa;>w8U2 z)CK#=&Gy#xk(-mU_tihHp@z@Ao1=`KLX36r_Z~>CJ8G0@AdVD2_Xj*>?pIN)9Hzx7 z9g`dx6&111(d4Xm=X+qVG+Xf@4o)Aaq;OK&FSos@@R#Y;{(KS0VUKIr_0cN=r<~ge zy3H#Wkw%m;gp{RqO5b(`kE^R?AdCu1Yk&nawT>9VUAKEk3dsP}A1~`@$L+iDvE-g) zn9D7(j^*FhRyJ%7tUo!X*=tE-sV<}<1LKhRWK6+*S4f{dmn?kD%FFNuj!schtNx>ZNm{yHkWqzrA+&c~5f&jmkxvi3t1Ie-l-!;iTJbz&6q(;!}>{#L$9puuj8sf*u*iM%R zfG!4Qlwf=TzpAK=Ed9X9NZWM`NE1pASP+vtBP`-zK^hu?uQfYapK>ebZV$Yf`4Diz z!puy3wx$j|ruhmPJ@opm|6?jJa$&&`HGx0|m*RQKg35Ba+D;{G&dgu~`XG}}(?DH) z%+<9v7#dYrq?!Mg!J!BbSp%#^#~0tmH$(3xlRFmnXAwOKY*q2Wv&wBs7WK#ZA1_;d zcv99x^l@dO=ojRyta#uPl+SdFhRc!Cpd?(LM>?t4lcY+QGv-6(qlBH8wIommkAh@f zTYw~0Lp&cDYokC;WMN+W?+|0Uj1*(MO#Dk2Xbs?*XC`zb2d0MM6?OVMiwOV^)8y?z zoe5EMF*sua+%WznjLweDRyW=mir#T~^~TvcFRL6O6cTy!B0F<*#NMG4FE|e~G*ecV zzCeowx}phGrz*b(mth#el#r^2fvV}MHkuspDU6_Q7cZd18am&b1_f&}R|AhEwLk=l z3G@vVjPcnV`F?4q+{~F#xQ!?p04hQpXDLd!oHrDlb-s7^(mG-^4#v0-cRsS}*qAs; zzQ(`ZVQr)}`tq_Kj76FQ-YWpn>kcljuI3+wNfoV&-=3aUa=PsREzB~l$r~!UYXF%b=&rQq0Jz|xblw66v1M>_>oMPuSj~LDU)Nn9 zAsFZ$gQ>XIMV5I>A*`Tytw0B!y>6aWm{VL4JtcBRiQi>@kvF>BkIGjZr%%*h%kv>L zVHHY+_obJ`rLezRc#m4+J(VBHRr{6F6SWy#TT_3kK=6vY8C|}YWT`r-q$Y(9BIWAV>b(HfsRa2buvv$o>o=nkG^PJPAdPfhw@F08^ zCXsx3xksGGCddjsJ?Y?LcX>0cvJ#s;Xr;b2(VGxveysoAT5nbEFs^H3CD42v5zVEAZ?LI1 z=IbArRHm3JS7mBciBuowJzmA}O5`^%37Ql)(e#$|M|`wSM+jxWuo5Q-UD>C5x%@iuse^9ywXzIKRvKi zzS}C}-lbo>g;uuf3}wZW8W2)z-d)8P)N}Zo@Q@@4=PlS8O79^NKQGhF5}EPLa3x-- z#?#db~XK265?di|D1BTZr`R#(I^T1ISLu%+4VIe1M za@%Kv9y>iWrB3ir-rhJMVU!*-s3dMN=883XtkuAY5`;#{6aLP-$Z5nv|KdcK#~mSl zWIum95HRJ0Hu%-#irV1-ghI}4an`Z!dSpzEI@gbLz4?C7BP)`ts&KKUWtbnoNi-gBb5`;AxTe$d8gY$F_}H} zLHA6c(D328$o|onVTHmpq19&-CaU?056x2b;i&^HN2jL+yoh~u5)1m<7QNjbf&7YI zA;xdcVhxhzBbfmGA_|!h8}=7nvV?rVq!$;W{9Cf0elu*iq#?G@WJOY;tdITE+vG4( zv%6k5!=pS}Mug0}y3mP_yg8-s=`$h7MHTHHF77>+E*jO7LvPp+XQ>UOaXtXiSG6{< z?bp^dsleN_S(vLN(NJ({;}c%(8~S(r32wN(RTXUb%`~m3lQK{=_E-1YJn7JSf z$Eq%Zd-H~_JVuuiW#;RX$703(;@SP*uM|x8?Ar;E@f;tL|-z=GYI{a+d$j=%&Pur@&bR(zjmErQIQw zs}Hdn>5);;)x|-5;#-B(EX^>Yn{FV@DM^~e!pH;SPQ)1~HPBt8vtBh*qX9dzzdXOg z=n{wY@+4(LcH)<6?U|8aR$A&q;$rgS`LF|^uTI=4&LNe_-tW!>8w1B+RpUHhU<8{r z`UP6q0FUc^e#qqY#G$tO>HER}kPcV2J`qwy@uzFw>4JXl@G5-irA8UIZpcA6zbuq8 zWrlG5$-_<3OJJ$&hg$LrRdg#ioT=6 z$2`VUeO;0cvX4=={Tf~-AFqzw+|MjyBrEiL{g|5Ul)pswTLk)1L}gEHrE~wQpgtQW zmp9YsGZBys%SHZo>Ecz*wJYoZC@X*50*Z-qV+=kfx}D|KjZ@uFWya`lbHTu1pZ@Iy zfFw8iD7#tSoZ+puHnJgLeI&K5=6m5^x~&_kb>Ze+Ue*d!ZiGreat<9|6~C&p6!jGQ zhu-DQ&@l<`K01;gPZ4Z-wjU@5@Q=e{b>T*K1Ir zQl`P(-K^7|hM8shO zqWSf4kwWOj3=m(1+>fHb0oam8S#0XMzx)=Tez%A2;no@0mt;sylWX6DDt}^b`j&~3Vv%tC(?nE_0+IXC)ps$#r zS+C1TzZGM&{#qPBT&pGpWC32DoH7O|n3t7Q+RcHXs996kHeo^ap9jjF?cX^53u|I4 zY#e~21)Q*^c=KOGufXm~(fzZHP#vu-uDNl7IQ>6nX`cwByb$_9^#ua?ZH(_=JWiV7 zHHxqMD)ruw-eU1+W|StTi>seO9shTlujvr;Z`&_ZbgHTXC zT+SWpaz-4S|9Nyhw~bSAX(hV8z~05%Fw4sGTNmy=jwb-1ogc4P~RWR=4h6~3_o zUeA@K`&SKPSB~E(iKut^7vic1xQN-g7(6V3T5I1C8*SMmroFBn)_20)-7v}efSP#^vL;f4%G!qt_jva3_B+`F#9GjyPsk+|I2>nuh7`Q@TtDAbKtQ5A7?`-EeBH{Z65CuTmsNfm!h1 zYdd;KS8e~?lhg&iyM_1gYKjPV;sJ=>f2iDQ!4JhR?I;#*F6s9YZw>ii;lC|vPtLw+ z)3jg|`J5yS4vj<-1PoE&#)ry&Yl`p{iG(F$06aN45(~g7U0jc}yDN;wibU<@(A2#u z!+wu{pV%Yb-Nzd?v`_W;;2b-?{<#j1pSJkAK|hS=kt6@$0l84jH&U&~<1}3mj%8lX z>~Vm% zW@W#gq~x|MZi@f1X~8L&OWe4>{G6ZYj}ZZISnd7*@Z9-QXvWEQ|M0+VVq)U-!eSB2 zwYXSxs%OQ~%<$gG3YwlBsw}AIK#OKEC~j|#_0;yVsBkVN(vYp&%SovmIS|MwxAa*+ zT^jPGS_iiLeE6MEC-BpM<>^XRe^C?LJGm-@E5y_8sJ9Y7PWP(XVkN{#M=zIvZ?Rc4 z)3<8%in7uyP%PJRwA?jy$U(2=7|~#3BO>mJJ?2v1Nj3x8^HjXIE{8rym1b6hr!Y5lk9utju~dGP|wfZj}ycBu}vGsSe z6%+D!DcHh>trR#3s?4Ee@Mw)~x^NyS@(X8@N0XcJBgL6_q8V;1f8mC;`>$Jw27^NF zEC@|U#)7^i8b$6PMcqGwUZo*yB7pT(v{cUp&Gp;ldPra4g^Ibx<2UeYzdzZBy_0H# zIrtA}LW4$K5s!_u+~R9w>x(Uu14I^2U006J3kSL^NG#S?7n2W@D}66rHA3|qih})O z#2a7Q^v5%P4##=^Hu@3IDDDg{&0qOF#eZ5vd7)!y;zhSkA{f@>U1vt{qqtHl0j62- zl)>-24{k?yIcbA^N1_o^^*&e7w++G0h!2ztsY37el&$SXeu`jPHFUppGzNThfbOE| zp6_DW>Bu8e7ld=#jlZ5p9_WwseUfm3y!A1fU-#oe|?kbH!#%H)DctM zvvZqWemL0J5+MKgbn!`rVMH*08+`uN>GQ7vRPlC3Gx#z-P`5+EkPy^AM;hCTa`Hmc zD`YmC-kx7!?gxhuG{hf}1<;yWQ-c%rZTb2onC8#+<>Y8BPPBEsPY^+uyKzSG#xour z!v$Kvu$|Ftp~%f1%1=s4@Wvg88M4oEmUthfc%3M;%&488f1~vhMWdl&d;f-(Y-y}j zc)?LZUg+g;lUDP%QSj=Iccf6;aV~?Gd-(iF{l&hTaA(o}=gXM@{{E~?xC}IvqzZn1 zj1&oImm=h=(Wc#B;iA=+oycM8cfT6N`CQ{$W}OUkE+i8xhYxORb}>mI79yUe1wZ)! zesDf_^x(|X-9rG%s&eKs@Vb1^K)==Pm;4(YnJ_5`xGiuSMoO+Vj7Fq?L zAWSbI;Vv_II}SOKWxJ8am$#%b#ZGIQ_eO!%4EW8>iOl##JxQaMz{E^cQo^(d_AlvN z>KNzfU7cUC!aj6Wo$K*kmF*EM)XT@6wAv}_cT$^Y%=LsJ zhti?`*1E>Ln9ds!0YUGnjhqseo*8$~GNfncqC+1x5uO?YNimH&Lk)Q)$DIox`=^({ zC1W_q<-OfLy5T7&O1wJA^;{cMm;>;6$mn7llFGL7XoLUpiVgfQVcL0n>w)g71GDYs z?M+ooc@pcnr7Z1Ww>RSXHY+4isD}2_3VS6*En8<}-u~asM?|HI-Zf*Q6fqZFP2Alvjg* z#cN%`ePs}TpwTUC;E$v5yXL1@lYwS)m330x*DAvge;D}#?1i{H z(iSTaZT;gTc)$f~dplkNXuKK8RzlhGMYo*bMr(}$HC~S!2)w`Fa=jPFf}hBVt#;;b}P1EE9KORS-hHqIG5r|7_r3> zzAYTD9pf0)4-l7Dd>amGLQkE{9q5fG+p$Q>i{QV}+F&rxMGssVwy~yC0wa2llz+ob zO^G54M>8bJB38m+AI_~Tj{JnFL_;*}>1~>mm2Y z2BPgsz2OpiS`07S^}>gQ)WPm|r&aB{H{Z0)({qjjoR;+{O>T4s0mM(^syjl+w7Cir zkk{wP(O)1Y-{go2P$)!NhPp8K`Lfd+{nlA5)}U>O=|^|O%%qvTy$DgjhCOn^vT3aE z1ELq=b1cg{tUTr)(m!r^R@xlVUi{&0h0(3e50lSY^QzD5f?Haq9wOCmApeqq7b#p`@Fyc^X=rQSef>i_NI j0B#uG?i_6LC-J7+vRN}S0($6I5ikm}Dl*klrXl|Whunu_ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Timer__inherit__graph.map b/html/classcore_1_1Timer__inherit__graph.map new file mode 100644 index 0000000..6f4f8a8 --- /dev/null +++ b/html/classcore_1_1Timer__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1Timer__inherit__graph.md5 b/html/classcore_1_1Timer__inherit__graph.md5 new file mode 100644 index 0000000..3063d9b --- /dev/null +++ b/html/classcore_1_1Timer__inherit__graph.md5 @@ -0,0 +1 @@ +480d2813572d73a62c09b8ae029eba1e \ No newline at end of file diff --git a/html/classcore_1_1Timer__inherit__graph.png b/html/classcore_1_1Timer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c3276586e1ae31a288ea0a0700ccdfd03fcdab18 GIT binary patch literal 4891 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1UDPServerSocket-members.html b/html/classcore_1_1UDPServerSocket-members.html new file mode 100644 index 0000000..743f06e --- /dev/null +++ b/html/classcore_1_1UDPServerSocket-members.html @@ -0,0 +1,119 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPServerSocket Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
check(std::string request)core::Commandvirtual
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::UDPServerSocketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
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
reset (defined in core::Socket)core::Socket
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(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")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()core::Socket
~UDPServerSocket() (defined in core::UDPServerSocket)core::UDPServerSocket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1UDPServerSocket.html b/html/classcore_1_1UDPServerSocket.html new file mode 100644 index 0000000..2f8afd3 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket.html @@ -0,0 +1,270 @@ + + + + + + + +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, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- 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)
 
+int getBufferSize ()
 
+virtual void onDataReceived (char *buffer, int len)
 
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
+bool reset = false
 
- 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 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. 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.
+
+
+ +

Reimplemented from core::Socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.map b/html/classcore_1_1UDPServerSocket__coll__graph.map new file mode 100644 index 0000000..de60cd7 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.md5 b/html/classcore_1_1UDPServerSocket__coll__graph.md5 new file mode 100644 index 0000000..ee94436 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__coll__graph.md5 @@ -0,0 +1 @@ +f92fa2014d64ab46a9ddfc6ca246ea10 \ No newline at end of file diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.png b/html/classcore_1_1UDPServerSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f18912c180e232aa0ed111abfe1ba03ad4da89 GIT binary patch literal 20027 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 Vg=r2yuATq@002ovPDHLkV1kkr#l8Rl literal 0 HcmV?d00001 diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.map b/html/classcore_1_1UDPServerSocket__inherit__graph.map new file mode 100644 index 0000000..f0cbd70 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.md5 b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 new file mode 100644 index 0000000..e544e8a --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 @@ -0,0 +1 @@ +2aa4fd79f36e7ea61025981c6334e8a2 \ No newline at end of file diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.png b/html/classcore_1_1UDPServerSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3b295d64d11e51a0e67b8f50773d71925e1aff16 GIT binary patch literal 12365 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPSocket Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getBufferSize() (defined in core::Socket)core::Socketprotected
getDescriptor()core::Socket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered()core::Socketvirtual
onUnregister() (defined in core::Socket)core::Socketvirtual
onUnregistered()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
reset (defined in core::Socket)core::Socket
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll, std::string text="")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()core::Socket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1UDPSocket.html b/html/classcore_1_1UDPSocket.html new file mode 100644 index 0000000..62634c9 --- /dev/null +++ b/html/classcore_1_1UDPSocket.html @@ -0,0 +1,195 @@ + + + + + + + +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, std::string text="")
 
 ~Socket ()
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
+
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called before the socket has registered with the epoll processing. More...
 
+virtual void onRegistered ()
 Called after the socket has been registered with epoll processing.
 
+virtual void onUnregister ()
 
virtual void onUnregistered ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Socket
+bool reset = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+int getBufferSize ()
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
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_1UDPSocket__coll__graph.map b/html/classcore_1_1UDPSocket__coll__graph.map new file mode 100644 index 0000000..9f205c5 --- /dev/null +++ b/html/classcore_1_1UDPSocket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1UDPSocket__coll__graph.md5 b/html/classcore_1_1UDPSocket__coll__graph.md5 new file mode 100644 index 0000000..296e836 --- /dev/null +++ b/html/classcore_1_1UDPSocket__coll__graph.md5 @@ -0,0 +1 @@ +53ad30a1801814dc085d6382ef291d52 \ No newline at end of file diff --git a/html/classcore_1_1UDPSocket__coll__graph.png b/html/classcore_1_1UDPSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ec31c20e7ffc29eaa92156ae5271f320f3285b4a GIT binary patch literal 13472 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 + + + + + diff --git a/html/classcore_1_1UDPSocket__inherit__graph.md5 b/html/classcore_1_1UDPSocket__inherit__graph.md5 new file mode 100644 index 0000000..3fed8e9 --- /dev/null +++ b/html/classcore_1_1UDPSocket__inherit__graph.md5 @@ -0,0 +1 @@ +da2aab22a03a27d505da4648cfa55fc1 \ No newline at end of file diff --git a/html/classcore_1_1UDPSocket__inherit__graph.png b/html/classcore_1_1UDPSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0763d0674ab7693427c12b54e2f5dac9b3feb137 GIT binary patch literal 7564 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 literal 0 HcmV?d00001 diff --git a/html/classes.html b/html/classes.html new file mode 100644 index 0000000..7d13b71 --- /dev/null +++ b/html/classes.html @@ -0,0 +1,125 @@ + + + + + + + +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)   INotify (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
CommandList (core)   IPAddress (core)   Socket (core)   Thread (core)   UDPSocket (core)   
ConsoleServer (core)   IPAddressList (core)   
  t  
+
Timer (core)   
ConsoleSession (core)   
  o  
+
TLSServer (core)   
  e  
+
TCPServer (core)   TLSSession (core)   
Object (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..73ecbb2 --- /dev/null +++ b/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +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; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @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; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +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: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + 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, img.inline { + 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; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @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, .memTemplItemRight { + 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, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .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; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 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.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 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; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +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; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +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; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 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 +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + 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..ea0a7b3 --- /dev/null +++ b/html/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +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
 INotify.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..ae6d31a --- /dev/null +++ b/html/functions.html @@ -0,0 +1,321 @@ + + + + + + + +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..ebfd7af --- /dev/null +++ b/html/functions_func.html @@ -0,0 +1,294 @@ + + + + + + + +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..449af92 --- /dev/null +++ b/html/functions_vars.html @@ -0,0 +1,93 @@ + + + + + + + +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..7042904 --- /dev/null +++ b/html/graph_legend.html @@ -0,0 +1,136 @@ + + + + + + + +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..8fcdccd --- /dev/null +++ b/html/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/html/graph_legend.png b/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..58209e0566fba78f322b9d4b4fa5c6aa90e77588 GIT binary patch literal 21469 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 XOI9jW#YzWwl0$Pt?-rt5$2R<5fF?o7 literal 0 HcmV?d00001 diff --git a/html/hierarchy.html b/html/hierarchy.html new file mode 100644 index 0000000..ed81d50 --- /dev/null +++ b/html/hierarchy.html @@ -0,0 +1,107 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+ + + + + diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..6473b4e --- /dev/null +++ b/html/index.html @@ -0,0 +1,76 @@ + + + + + + + +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..edcb801 --- /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..d70011b --- /dev/null +++ b/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +d019270962bf71fea9f33cb5799a0ff7 \ 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..8d040636f43b40a4f8da9c62d5e6e8c365bb2529 GIT binary patch literal 1672 zcmV;326y?1P)+#EAu_oyW^S@TiE00$wI44uo1N6yzohXlauD(E_EmQYu3h z^ZP4#n)l1oJjs{$q$z}97$CqG@P{@)(Ekvj;t(QK972SOLo{Spa&vPdBO^bQ6#}&h z4i2`rx9?i*ai#KjytK5m0k=f(UZka^@pwF0MdR&_Qd3h0$`3(506~zPLflhv2oWj{ zAwtC=A5o|%@7OG=>#wimAB!r}|G#`hp$-<%7mcM=WmP_fr64~kjP?GEX( z4g^6E1e0`zj<#76n$AbMH${rWZM5Jao{54%bj8W~?*bkZe7pJT8Uy*BwF~6=!D-Yl z6C2e2B7-|rc}S*#*&+<>sC#g7*2}|QtK(jx(oaP9;*%N{_}SiLC6}Y`9OENEolvoc zyc6qPEa?<7&3uM`{9i2?06@%74_!RjNMA>1$mprw5!b5`002OqhTG^l2Su!~Hyx@& zS;B6`8uL$Xa2`K`qD?lioD;-;-VOi&04X_ON45^h7t1XxF-u+jDfsB7S1x*`B04!Q6zX9+OHVy`Hw(q43?aKD}2{DgWG!-Thk)j2kp z3~V-API(*glf9G34u?w-S+V2Mo{40qsB)<&F4{MRY`ecijERfGrjVx{d@h#g#o;y- z=i|K2+P3udqb#=E5h>jnTFZ1Nn+9f!dM+a^6@PBGqf%XCDi93AkcwljmK!r$Fbu=c zs>B5rD>#i3SGy4ZEj)IqYxET)o7cJVMs-iiMa`=sS-$L zAecUqPLkB}x%{^40mdXqg6`Z?uLJ_+6V=;0uZVKef?!SBgf$tAz;mp%CNKcV(4XhlDJi@tLT%tiQ0x`;s(Pi*p^_Lz3}M;dl|7Px>4pYEZh5s-M7U*KFoH3nYjEk|BN>h| z)bn7~$ee;`QN}S-N{FzjvhYHvhp`3#KzNt+8y51gqie{v444pZ) zTyE!q67wo5kxsXYbd}xej$61ZA^pz%yH}!IxqICFQ|d7#Vy`Hyf*=TB@9~;Z-$S+X zSv&pN;cvq;%9`5WaC2e78-KO!`mSooa z%AXw>`Xilo@m;)ZB%3MIRdcK5v}X0N%pW`~Y1C0O!fO}AM)}eqg(3i;^On(x=7imk zy3ba{RnTzHErBCBU(q#T^}63aH%bJ94e + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/inherit_graph_1.md5 b/html/inherit_graph_1.md5 new file mode 100644 index 0000000..a4b534d --- /dev/null +++ b/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +5e693242276d6785bf2eab4a026ad47c \ 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..964edfc64e620c043678b03102743e7807037ae3 GIT binary patch literal 56388 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

Jri#C)w+6PSZ1zoSGGXBQUx+9en!8 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 UXuSRK3Ih;$y85}Sb4q9e0B<0tYybcN literal 0 HcmV?d00001 diff --git a/html/inherits.html b/html/inherits.html new file mode 100644 index 0000000..d6d5eb1 --- /dev/null +++ b/html/inherits.html @@ -0,0 +1,110 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +

+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/html/jquery.js b/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").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("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",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(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{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"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,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}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/html/menu.js b/html/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/html/menudata.js b/html/menudata.js new file mode 100644 index 0000000..10d214b --- /dev/null +++ b/html/menudata.js @@ -0,0 +1,62 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var 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__7E"}]}, +{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__7E"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/html/nav_f.png b/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/html/nav_g.png b/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_0.js b/html/search/all_0.js new file mode 100644 index 0000000..71e0478 --- /dev/null +++ b/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_0',['add',['../classcore_1_1CommandList.html#a7a45e75e3d21a25fd3f7e887acf395e9',1,'core::CommandList']]] +]; diff --git a/html/search/all_1.html b/html/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_1.js b/html/search/all_1.js new file mode 100644 index 0000000..86ebf98 --- /dev/null +++ b/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blacklist_1',['blackList',['../classcore_1_1TCPServer.html#a82f6bf16e4ab20d8b30da09e034fffff',1,'core::TCPServer']]] +]; diff --git a/html/search/all_2.html b/html/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_2.js b/html/search/all_2.js new file mode 100644 index 0000000..6d4f29d --- /dev/null +++ b/html/search/all_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['check_2',['check',['../classcore_1_1Command.html#abdc0d7a4693a7f7940bbae20c4a667c0',1,'core::Command']]], + ['clear_3',['clear',['../classcore_1_1TerminalSession.html#a42bb06857891220a831da04248233935',1,'core::TerminalSession']]], + ['cleareol_4',['clearEOL',['../classcore_1_1TerminalSession.html#aa660768eed03b0b996a749e8a146446c',1,'core::TerminalSession']]], + ['cleartimer_5',['clearTimer',['../classcore_1_1Timer.html#a8e063f46e89dac04364871e909ab940a',1,'core::Timer']]], + ['command_6',['Command',['../classcore_1_1Command.html',1,'core']]], + ['commandlist_7',['CommandList',['../classcore_1_1CommandList.html',1,'core']]], + ['commands_8',['commands',['../classcore_1_1CommandList.html#a435f09d15c78dad43e7bca4977d6bdf1',1,'core::CommandList::commands()'],['../classcore_1_1TCPServer.html#afcc44802b988e2f4292504e804dccf8b',1,'core::TCPServer::commands()']]], + ['consoleserver_9',['ConsoleServer',['../classcore_1_1ConsoleServer.html',1,'core']]], + ['consolesession_10',['ConsoleSession',['../classcore_1_1ConsoleSession.html',1,'core']]] +]; diff --git a/html/search/all_3.html b/html/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_3.js b/html/search/all_3.js new file mode 100644 index 0000000..14a3483 --- /dev/null +++ b/html/search/all_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['epoll_11',['EPoll',['../classcore_1_1EPoll.html',1,'core::EPoll'],['../classcore_1_1EPoll.html#a2fd5cc4336b5f72990ecc0e7ea3d7641',1,'core::EPoll::EPoll()']]], + ['eventreceived_12',['eventReceived',['../classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b',1,'core::EPoll::eventReceived()'],['../classcore_1_1Socket.html#a4c9a3396693ff919eb827729f9e72b03',1,'core::Socket::eventReceived()']]] +]; diff --git a/html/search/all_4.html b/html/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_4.js b/html/search/all_4.js new file mode 100644 index 0000000..7868e7f --- /dev/null +++ b/html/search/all_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['getclientaddress_13',['getClientAddress',['../classcore_1_1IPAddress.html#ae5e7e28589d026bbbc6c3423d418b008',1,'core::IPAddress']]], + ['getclientaddressandport_14',['getClientAddressAndPort',['../classcore_1_1IPAddress.html#abea870f1a048cb7bba1d2bad98558232',1,'core::IPAddress']]], + ['getclientport_15',['getClientPort',['../classcore_1_1IPAddress.html#a39f706f2d43d7d001296ecead4b587e8',1,'core::IPAddress']]], + ['getdescriptor_16',['getDescriptor',['../classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed',1,'core::EPoll::getDescriptor()'],['../classcore_1_1Socket.html#a06ba54744530439d4131e6aba4623d08',1,'core::Socket::getDescriptor()']]], + ['getelapsed_17',['getElapsed',['../classcore_1_1Timer.html#a0df7f1ffc05529b45d6e13713bbc0209',1,'core::Timer']]], + ['getsocketaccept_18',['getSocketAccept',['../classcore_1_1ConsoleServer.html#a80d9ea7f3fc5e07c50d5b9e0d4943ca8',1,'core::ConsoleServer::getSocketAccept()'],['../classcore_1_1TCPServer.html#a841f02799ad8529aad7cea132f4de8a9',1,'core::TCPServer::getSocketAccept()']]], + ['grabinput_19',['grabInput',['../classcore_1_1CommandList.html#a40211d843807cd65f6614c17efcb00e4',1,'core::CommandList']]] +]; diff --git a/html/search/all_5.html b/html/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_5.js b/html/search/all_5.js new file mode 100644 index 0000000..0b99b42 --- /dev/null +++ b/html/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['inotify_20',['INotify',['../classcore_1_1INotify.html',1,'core']]], + ['ipaddress_21',['IPAddress',['../classcore_1_1IPAddress.html',1,'core']]], + ['ipaddresslist_22',['IPAddressList',['../classcore_1_1IPAddressList.html',1,'core']]], + ['isstopping_23',['isStopping',['../classcore_1_1EPoll.html#a301b46b71ac7ac61a687ff723fe269b3',1,'core::EPoll']]] +]; diff --git a/html/search/all_6.html b/html/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_6.js b/html/search/all_6.js new file mode 100644 index 0000000..407665d --- /dev/null +++ b/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['maxsockets_24',['maxSockets',['../classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90',1,'core::EPoll']]] +]; diff --git a/html/search/all_7.html b/html/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_7.js b/html/search/all_7.js new file mode 100644 index 0000000..622230f --- /dev/null +++ b/html/search/all_7.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['object_25',['Object',['../classcore_1_1Object.html',1,'core']]], + ['onblockreceived_26',['onBlockReceived',['../classcore_1_1TCPSession.html#a4403ef0a92b119dfa2e74667788e4ba1',1,'core::TCPSession']]], + ['onconnected_27',['onConnected',['../classcore_1_1TCPSession.html#a8719952f7bb00bf7239ec40aa2868626',1,'core::TCPSession']]], + ['ondatareceived_28',['onDataReceived',['../classcore_1_1Socket.html#ac8d6a2c54696eb6fc2024cf6bcf6b4e5',1,'core::Socket::onDataReceived()'],['../classcore_1_1TCPServer.html#a276ccbc8cb9b4380ebd78807b97f0159',1,'core::TCPServer::onDataReceived()'],['../classcore_1_1TCPSession.html#ac2c3ffef9ded12a8867e3d27902b001a',1,'core::TCPSession::onDataReceived()'],['../classcore_1_1UDPServerSocket.html#a41933ca153c854a800e3d047ab18313e',1,'core::UDPServerSocket::onDataReceived()']]], + ['onlinereceived_29',['onLineReceived',['../classcore_1_1TCPSession.html#a0f209620e9f11e70bfde54852b5c5460',1,'core::TCPSession']]], + ['onregister_30',['onRegister',['../classcore_1_1Socket.html#a81e5ee3e17834166d97c6e8b7dfe0da0',1,'core::Socket::onRegister()'],['../classcore_1_1TLSSession.html#a76cec7cf4851eb27abe77a2339344c6d',1,'core::TLSSession::onRegister()']]], + ['onregistered_31',['onRegistered',['../classcore_1_1Socket.html#a23b9824653bbe4652a716acb828665b1',1,'core::Socket::onRegistered()'],['../classcore_1_1TCPSession.html#aed4ed499b978bcea57a8efefe929fc98',1,'core::TCPSession::onRegistered()'],['../classcore_1_1TLSSession.html#a8e26fdc9e8a6c573b5a504a1f1b137a9',1,'core::TLSSession::onRegistered()']]], + ['ontimeout_32',['onTimeout',['../classcore_1_1Timer.html#ae51704ff08d985bbc30e3ff4c9b3c6ca',1,'core::Timer']]], + ['onunregistered_33',['onUnregistered',['../classcore_1_1Socket.html#ae9be59697c2b2e5efb19aaae3ba943d2',1,'core::Socket']]], + ['out_34',['out',['../classcore_1_1TCPSession.html#abb302bbb3d7e7bc75490c736364f0d4d',1,'core::TCPSession']]], + ['output_35',['output',['../classcore_1_1Command.html#a314aef05f78aacb802097f8ae0875291',1,'core::Command::output()'],['../classcore_1_1TCPServer.html#a120d5031360cc62251bdc43fa2d9813a',1,'core::TCPServer::output()'],['../classcore_1_1TCPSession.html#a50037cbfc515650e04054e5481785981',1,'core::TCPSession::output()'],['../classcore_1_1TCPSocket.html#afacf7528ff3c9ac077d7b5a49e2116fd',1,'core::TCPSocket::output()'],['../classcore_1_1TLSSession.html#ae55de8a035d1ddc560cf619b2030af43',1,'core::TLSSession::output()']]] +]; diff --git a/html/search/all_8.html b/html/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_8.js b/html/search/all_8.js new file mode 100644 index 0000000..ce6cf40 --- /dev/null +++ b/html/search/all_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['processcommand_36',['processCommand',['../classcore_1_1Command.html#a068ebc22f7a067cf23ed2c17f95b06e9',1,'core::Command::processCommand()'],['../classcore_1_1CommandList.html#a98939555ca061b445019a841726e3ef6',1,'core::CommandList::processCommand()'],['../classcore_1_1EPoll.html#a0c2d7fdaec43d0a15abab0399d5727df',1,'core::EPoll::processCommand()'],['../classcore_1_1TCPServer.html#a93f64f81bc63f145799af91138a064dc',1,'core::TCPServer::processCommand()']]], + ['processrequest_37',['processRequest',['../classcore_1_1CommandList.html#a589f3eba55beebad94a5978970e0650d',1,'core::CommandList']]], + ['protocol_38',['protocol',['../classcore_1_1ConsoleSession.html#a830cc1e1e0c3fe3b066f0a9f7f469490',1,'core::ConsoleSession::protocol()'],['../classcore_1_1TCPSession.html#ae90dc64e2d3c4b3239117923145edb3f',1,'core::TCPSession::protocol()'],['../classcore_1_1TLSSession.html#a547c436ab69f75307f065eca8cfcd109',1,'core::TLSSession::protocol()']]] +]; diff --git a/html/search/all_9.html b/html/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_9.js b/html/search/all_9.js new file mode 100644 index 0000000..f11b54b --- /dev/null +++ b/html/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['receivedata_39',['receiveData',['../classcore_1_1Socket.html#af455ec6f793473f529507af26aa54695',1,'core::Socket::receiveData()'],['../classcore_1_1TLSSession.html#a1822cb21de545dc1a183ec0bac6cc4f0',1,'core::TLSSession::receiveData()']]], + ['registersocket_40',['registerSocket',['../classcore_1_1EPoll.html#a3d813c7bbf0da70ebc8e3cb6aeeacfb4',1,'core::EPoll']]], + ['remove_41',['remove',['../classcore_1_1CommandList.html#aaac684effb9ecf5238d23ca60d3fffaa',1,'core::CommandList']]] +]; diff --git a/html/search/all_a.html b/html/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_a.js b/html/search/all_a.js new file mode 100644 index 0000000..a60eb56 --- /dev/null +++ b/html/search/all_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['send_42',['send',['../classcore_1_1TCPSession.html#a2b09eeafef5e44009a77d9da43e3b889',1,'core::TCPSession']]], + ['sendtoall_43',['sendToAll',['../classcore_1_1TCPSession.html#afdfe135694c6689f5365fac6c090ec33',1,'core::TCPSession::sendToAll()'],['../classcore_1_1TCPSession.html#a05c489dcd2ebd74f527864759929e351',1,'core::TCPSession::sendToAll(SessionFilter filter)']]], + ['sessionfilter_44',['SessionFilter',['../classcore_1_1SessionFilter.html',1,'core']]], + ['sessions_45',['sessions',['../classcore_1_1TCPServer.html#aeed1bc55d099667ccda51cd682bfc633',1,'core::TCPServer']]], + ['setcursorlocation_46',['setCursorLocation',['../classcore_1_1TerminalSession.html#aa9939cbe36c08e1a0b8413a96ca251fa',1,'core::TerminalSession']]], + ['setdescriptor_47',['setDescriptor',['../classcore_1_1Socket.html#ac44f6ae3196a8a3e09a6a85fcf495762',1,'core::Socket']]], + ['setmode_48',['setMode',['../classcore_1_1TCPSession.html#afde7a264edac9e91b509f13eb4192038',1,'core::TCPSession']]], + ['setname_49',['setName',['../classcore_1_1Command.html#ad8b0321c64838f4d5c8f93461b97cfef',1,'core::Command']]], + ['settimer_50',['setTimer',['../classcore_1_1Timer.html#ac0a642cdcb76b7f995137162050d3d0b',1,'core::Timer']]], + ['shutdown_51',['shutdown',['../classcore_1_1Socket.html#af2d1b6de7a64a9d446b0305b6ec47b31',1,'core::Socket']]], + ['socket_52',['Socket',['../classcore_1_1Socket.html',1,'core::Socket'],['../classcore_1_1Socket.html#a4c3f87fd1de3c9eab4bf5efbb30ce87d',1,'core::Socket::Socket()']]], + ['start_53',['start',['../classcore_1_1EPoll.html#aaefe2caef75eb538af90cb34682d277b',1,'core::EPoll::start()'],['../classcore_1_1Thread.html#ae6885df9a9b9503669e5776518b19054',1,'core::Thread::start()']]], + ['stop_54',['stop',['../classcore_1_1EPoll.html#a0c2865acd31d14fbf19dbc42cc084ddc',1,'core::EPoll']]] +]; diff --git a/html/search/all_b.html b/html/search/all_b.html new file mode 100644 index 0000000..14f3403 --- /dev/null +++ b/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_b.js b/html/search/all_b.js new file mode 100644 index 0000000..e4368d8 --- /dev/null +++ b/html/search/all_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['tcpserver_55',['TCPServer',['../classcore_1_1TCPServer.html',1,'core::TCPServer'],['../classcore_1_1TCPServer.html#a418924164fd6e59800272fbd6f069bb9',1,'core::TCPServer::TCPServer()']]], + ['tcpsession_56',['TCPSession',['../classcore_1_1TCPSession.html',1,'core']]], + ['tcpsocket_57',['TCPSocket',['../classcore_1_1TCPSocket.html',1,'core']]], + ['terminalsession_58',['TerminalSession',['../classcore_1_1TerminalSession.html',1,'core']]], + ['terminate_59',['terminate',['../classcore_1_1TCPSession.html#a34936745e8d7669d5400e78d353a56d3',1,'core::TCPSession']]], + ['thread_60',['Thread',['../classcore_1_1Thread.html',1,'core']]], + ['timer_61',['Timer',['../classcore_1_1Timer.html',1,'core']]], + ['tlsserver_62',['TLSServer',['../classcore_1_1TLSServer.html',1,'core::TLSServer'],['../classcore_1_1TLSServer.html#a6460f9872936015efdfd0b8de04aa2fe',1,'core::TLSServer::TLSServer()']]], + ['tlssession_63',['TLSSession',['../classcore_1_1TLSSession.html',1,'core']]] +]; diff --git a/html/search/all_c.html b/html/search/all_c.html new file mode 100644 index 0000000..da60ab8 --- /dev/null +++ b/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_c.js b/html/search/all_c.js new file mode 100644 index 0000000..07ea324 --- /dev/null +++ b/html/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['udpserversocket_64',['UDPServerSocket',['../classcore_1_1UDPServerSocket.html',1,'core']]], + ['udpsocket_65',['UDPSocket',['../classcore_1_1UDPSocket.html',1,'core']]], + ['unregistersocket_66',['unregisterSocket',['../classcore_1_1EPoll.html#a5ab5e82ab51e0952fc8fbcc128f52900',1,'core::EPoll']]] +]; diff --git a/html/search/all_d.html b/html/search/all_d.html new file mode 100644 index 0000000..bc376fe --- /dev/null +++ b/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_d.js b/html/search/all_d.js new file mode 100644 index 0000000..28d0dd4 --- /dev/null +++ b/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['whitelist_67',['whiteList',['../classcore_1_1TCPServer.html#abad6300b6234ca8b69cef9128755342e',1,'core::TCPServer']]], + ['write_68',['write',['../classcore_1_1Socket.html#a1413c826307ef0f29d7457770af675e3',1,'core::Socket']]] +]; diff --git a/html/search/all_e.html b/html/search/all_e.html new file mode 100644 index 0000000..2e3c74d --- /dev/null +++ b/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/all_e.js b/html/search/all_e.js new file mode 100644 index 0000000..b21ad8b --- /dev/null +++ b/html/search/all_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7eepoll_69',['~EPoll',['../classcore_1_1EPoll.html#a8e7a2496d684b745a6410f9bd3e88534',1,'core::EPoll']]], + ['_7esocket_70',['~Socket',['../classcore_1_1Socket.html#aa5003845f8ae464ad2fa206176381be0',1,'core::Socket']]], + ['_7etcpserver_71',['~TCPServer',['../classcore_1_1TCPServer.html#a7ccdc057c9eee8504fce796301f82088',1,'core::TCPServer']]], + ['_7etlsserver_72',['~TLSServer',['../classcore_1_1TLSServer.html#ac71db77c796a1bf65357409cb96054c7',1,'core::TLSServer']]] +]; diff --git a/html/search/classes_0.html b/html/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_0.js b/html/search/classes_0.js new file mode 100644 index 0000000..1528e5c --- /dev/null +++ b/html/search/classes_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['command_73',['Command',['../classcore_1_1Command.html',1,'core']]], + ['commandlist_74',['CommandList',['../classcore_1_1CommandList.html',1,'core']]], + ['consoleserver_75',['ConsoleServer',['../classcore_1_1ConsoleServer.html',1,'core']]], + ['consolesession_76',['ConsoleSession',['../classcore_1_1ConsoleSession.html',1,'core']]] +]; diff --git a/html/search/classes_1.html b/html/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_1.js b/html/search/classes_1.js new file mode 100644 index 0000000..984c745 --- /dev/null +++ b/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['epoll_77',['EPoll',['../classcore_1_1EPoll.html',1,'core']]] +]; diff --git a/html/search/classes_2.html b/html/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_2.js b/html/search/classes_2.js new file mode 100644 index 0000000..7740aaf --- /dev/null +++ b/html/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['inotify_78',['INotify',['../classcore_1_1INotify.html',1,'core']]], + ['ipaddress_79',['IPAddress',['../classcore_1_1IPAddress.html',1,'core']]], + ['ipaddresslist_80',['IPAddressList',['../classcore_1_1IPAddressList.html',1,'core']]] +]; diff --git a/html/search/classes_3.html b/html/search/classes_3.html new file mode 100644 index 0000000..2102545 --- /dev/null +++ b/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_3.js b/html/search/classes_3.js new file mode 100644 index 0000000..2c195a0 --- /dev/null +++ b/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['object_81',['Object',['../classcore_1_1Object.html',1,'core']]] +]; diff --git a/html/search/classes_4.html b/html/search/classes_4.html new file mode 100644 index 0000000..095ab59 --- /dev/null +++ b/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_4.js b/html/search/classes_4.js new file mode 100644 index 0000000..2d5a8cc --- /dev/null +++ b/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sessionfilter_82',['SessionFilter',['../classcore_1_1SessionFilter.html',1,'core']]], + ['socket_83',['Socket',['../classcore_1_1Socket.html',1,'core']]] +]; diff --git a/html/search/classes_5.html b/html/search/classes_5.html new file mode 100644 index 0000000..fc9cdc9 --- /dev/null +++ b/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_5.js b/html/search/classes_5.js new file mode 100644 index 0000000..fd23763 --- /dev/null +++ b/html/search/classes_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['tcpserver_84',['TCPServer',['../classcore_1_1TCPServer.html',1,'core']]], + ['tcpsession_85',['TCPSession',['../classcore_1_1TCPSession.html',1,'core']]], + ['tcpsocket_86',['TCPSocket',['../classcore_1_1TCPSocket.html',1,'core']]], + ['terminalsession_87',['TerminalSession',['../classcore_1_1TerminalSession.html',1,'core']]], + ['thread_88',['Thread',['../classcore_1_1Thread.html',1,'core']]], + ['timer_89',['Timer',['../classcore_1_1Timer.html',1,'core']]], + ['tlsserver_90',['TLSServer',['../classcore_1_1TLSServer.html',1,'core']]], + ['tlssession_91',['TLSSession',['../classcore_1_1TLSSession.html',1,'core']]] +]; diff --git a/html/search/classes_6.html b/html/search/classes_6.html new file mode 100644 index 0000000..1ecfddd --- /dev/null +++ b/html/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/classes_6.js b/html/search/classes_6.js new file mode 100644 index 0000000..3bf0262 --- /dev/null +++ b/html/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['udpserversocket_92',['UDPServerSocket',['../classcore_1_1UDPServerSocket.html',1,'core']]], + ['udpsocket_93',['UDPSocket',['../classcore_1_1UDPSocket.html',1,'core']]] +]; diff --git a/html/search/close.png b/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/html/search/functions_0.html b/html/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_0.js b/html/search/functions_0.js new file mode 100644 index 0000000..97dac7c --- /dev/null +++ b/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_94',['add',['../classcore_1_1CommandList.html#a7a45e75e3d21a25fd3f7e887acf395e9',1,'core::CommandList']]] +]; diff --git a/html/search/functions_1.html b/html/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_1.js b/html/search/functions_1.js new file mode 100644 index 0000000..21bed4a --- /dev/null +++ b/html/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['check_95',['check',['../classcore_1_1Command.html#abdc0d7a4693a7f7940bbae20c4a667c0',1,'core::Command']]], + ['clear_96',['clear',['../classcore_1_1TerminalSession.html#a42bb06857891220a831da04248233935',1,'core::TerminalSession']]], + ['cleareol_97',['clearEOL',['../classcore_1_1TerminalSession.html#aa660768eed03b0b996a749e8a146446c',1,'core::TerminalSession']]], + ['cleartimer_98',['clearTimer',['../classcore_1_1Timer.html#a8e063f46e89dac04364871e909ab940a',1,'core::Timer']]] +]; diff --git a/html/search/functions_2.html b/html/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_2.js b/html/search/functions_2.js new file mode 100644 index 0000000..9e5fe22 --- /dev/null +++ b/html/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['epoll_99',['EPoll',['../classcore_1_1EPoll.html#a2fd5cc4336b5f72990ecc0e7ea3d7641',1,'core::EPoll']]], + ['eventreceived_100',['eventReceived',['../classcore_1_1EPoll.html#a3238b150b5d0a57eb2e1b17daa236d3b',1,'core::EPoll::eventReceived()'],['../classcore_1_1Socket.html#a4c9a3396693ff919eb827729f9e72b03',1,'core::Socket::eventReceived()']]] +]; diff --git a/html/search/functions_3.html b/html/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_3.js b/html/search/functions_3.js new file mode 100644 index 0000000..3040826 --- /dev/null +++ b/html/search/functions_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['getclientaddress_101',['getClientAddress',['../classcore_1_1IPAddress.html#ae5e7e28589d026bbbc6c3423d418b008',1,'core::IPAddress']]], + ['getclientaddressandport_102',['getClientAddressAndPort',['../classcore_1_1IPAddress.html#abea870f1a048cb7bba1d2bad98558232',1,'core::IPAddress']]], + ['getclientport_103',['getClientPort',['../classcore_1_1IPAddress.html#a39f706f2d43d7d001296ecead4b587e8',1,'core::IPAddress']]], + ['getdescriptor_104',['getDescriptor',['../classcore_1_1EPoll.html#a1e52017e1deae15c1c87c6b6a099e1ed',1,'core::EPoll::getDescriptor()'],['../classcore_1_1Socket.html#a06ba54744530439d4131e6aba4623d08',1,'core::Socket::getDescriptor()']]], + ['getelapsed_105',['getElapsed',['../classcore_1_1Timer.html#a0df7f1ffc05529b45d6e13713bbc0209',1,'core::Timer']]], + ['getsocketaccept_106',['getSocketAccept',['../classcore_1_1ConsoleServer.html#a80d9ea7f3fc5e07c50d5b9e0d4943ca8',1,'core::ConsoleServer::getSocketAccept()'],['../classcore_1_1TCPServer.html#a841f02799ad8529aad7cea132f4de8a9',1,'core::TCPServer::getSocketAccept()']]], + ['grabinput_107',['grabInput',['../classcore_1_1CommandList.html#a40211d843807cd65f6614c17efcb00e4',1,'core::CommandList']]] +]; diff --git a/html/search/functions_4.html b/html/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_4.js b/html/search/functions_4.js new file mode 100644 index 0000000..a02283a --- /dev/null +++ b/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['isstopping_108',['isStopping',['../classcore_1_1EPoll.html#a301b46b71ac7ac61a687ff723fe269b3',1,'core::EPoll']]] +]; diff --git a/html/search/functions_5.html b/html/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_5.js b/html/search/functions_5.js new file mode 100644 index 0000000..42e08e6 --- /dev/null +++ b/html/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['onblockreceived_109',['onBlockReceived',['../classcore_1_1TCPSession.html#a4403ef0a92b119dfa2e74667788e4ba1',1,'core::TCPSession']]], + ['onconnected_110',['onConnected',['../classcore_1_1TCPSession.html#a8719952f7bb00bf7239ec40aa2868626',1,'core::TCPSession']]], + ['ondatareceived_111',['onDataReceived',['../classcore_1_1Socket.html#ac8d6a2c54696eb6fc2024cf6bcf6b4e5',1,'core::Socket::onDataReceived()'],['../classcore_1_1TCPServer.html#a276ccbc8cb9b4380ebd78807b97f0159',1,'core::TCPServer::onDataReceived()'],['../classcore_1_1TCPSession.html#ac2c3ffef9ded12a8867e3d27902b001a',1,'core::TCPSession::onDataReceived()'],['../classcore_1_1UDPServerSocket.html#a41933ca153c854a800e3d047ab18313e',1,'core::UDPServerSocket::onDataReceived()']]], + ['onlinereceived_112',['onLineReceived',['../classcore_1_1TCPSession.html#a0f209620e9f11e70bfde54852b5c5460',1,'core::TCPSession']]], + ['onregister_113',['onRegister',['../classcore_1_1Socket.html#a81e5ee3e17834166d97c6e8b7dfe0da0',1,'core::Socket::onRegister()'],['../classcore_1_1TLSSession.html#a76cec7cf4851eb27abe77a2339344c6d',1,'core::TLSSession::onRegister()']]], + ['onregistered_114',['onRegistered',['../classcore_1_1Socket.html#a23b9824653bbe4652a716acb828665b1',1,'core::Socket::onRegistered()'],['../classcore_1_1TCPSession.html#aed4ed499b978bcea57a8efefe929fc98',1,'core::TCPSession::onRegistered()'],['../classcore_1_1TLSSession.html#a8e26fdc9e8a6c573b5a504a1f1b137a9',1,'core::TLSSession::onRegistered()']]], + ['ontimeout_115',['onTimeout',['../classcore_1_1Timer.html#ae51704ff08d985bbc30e3ff4c9b3c6ca',1,'core::Timer']]], + ['onunregistered_116',['onUnregistered',['../classcore_1_1Socket.html#ae9be59697c2b2e5efb19aaae3ba943d2',1,'core::Socket']]], + ['output_117',['output',['../classcore_1_1Command.html#a314aef05f78aacb802097f8ae0875291',1,'core::Command::output()'],['../classcore_1_1TCPServer.html#a120d5031360cc62251bdc43fa2d9813a',1,'core::TCPServer::output()'],['../classcore_1_1TCPSession.html#a50037cbfc515650e04054e5481785981',1,'core::TCPSession::output()'],['../classcore_1_1TCPSocket.html#afacf7528ff3c9ac077d7b5a49e2116fd',1,'core::TCPSocket::output()'],['../classcore_1_1TLSSession.html#ae55de8a035d1ddc560cf619b2030af43',1,'core::TLSSession::output()']]] +]; diff --git a/html/search/functions_6.html b/html/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_6.js b/html/search/functions_6.js new file mode 100644 index 0000000..fc761e0 --- /dev/null +++ b/html/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['processcommand_118',['processCommand',['../classcore_1_1Command.html#a068ebc22f7a067cf23ed2c17f95b06e9',1,'core::Command::processCommand()'],['../classcore_1_1CommandList.html#a98939555ca061b445019a841726e3ef6',1,'core::CommandList::processCommand()'],['../classcore_1_1EPoll.html#a0c2d7fdaec43d0a15abab0399d5727df',1,'core::EPoll::processCommand()'],['../classcore_1_1TCPServer.html#a93f64f81bc63f145799af91138a064dc',1,'core::TCPServer::processCommand()']]], + ['processrequest_119',['processRequest',['../classcore_1_1CommandList.html#a589f3eba55beebad94a5978970e0650d',1,'core::CommandList']]], + ['protocol_120',['protocol',['../classcore_1_1ConsoleSession.html#a830cc1e1e0c3fe3b066f0a9f7f469490',1,'core::ConsoleSession::protocol()'],['../classcore_1_1TCPSession.html#ae90dc64e2d3c4b3239117923145edb3f',1,'core::TCPSession::protocol()'],['../classcore_1_1TLSSession.html#a547c436ab69f75307f065eca8cfcd109',1,'core::TLSSession::protocol()']]] +]; diff --git a/html/search/functions_7.html b/html/search/functions_7.html new file mode 100644 index 0000000..7de3106 --- /dev/null +++ b/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_7.js b/html/search/functions_7.js new file mode 100644 index 0000000..89c7740 --- /dev/null +++ b/html/search/functions_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['receivedata_121',['receiveData',['../classcore_1_1Socket.html#af455ec6f793473f529507af26aa54695',1,'core::Socket::receiveData()'],['../classcore_1_1TLSSession.html#a1822cb21de545dc1a183ec0bac6cc4f0',1,'core::TLSSession::receiveData()']]], + ['registersocket_122',['registerSocket',['../classcore_1_1EPoll.html#a3d813c7bbf0da70ebc8e3cb6aeeacfb4',1,'core::EPoll']]], + ['remove_123',['remove',['../classcore_1_1CommandList.html#aaac684effb9ecf5238d23ca60d3fffaa',1,'core::CommandList']]] +]; diff --git a/html/search/functions_8.html b/html/search/functions_8.html new file mode 100644 index 0000000..7422be2 --- /dev/null +++ b/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_8.js b/html/search/functions_8.js new file mode 100644 index 0000000..076dc8a --- /dev/null +++ b/html/search/functions_8.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['send_124',['send',['../classcore_1_1TCPSession.html#a2b09eeafef5e44009a77d9da43e3b889',1,'core::TCPSession']]], + ['sendtoall_125',['sendToAll',['../classcore_1_1TCPSession.html#afdfe135694c6689f5365fac6c090ec33',1,'core::TCPSession::sendToAll()'],['../classcore_1_1TCPSession.html#a05c489dcd2ebd74f527864759929e351',1,'core::TCPSession::sendToAll(SessionFilter filter)']]], + ['setcursorlocation_126',['setCursorLocation',['../classcore_1_1TerminalSession.html#aa9939cbe36c08e1a0b8413a96ca251fa',1,'core::TerminalSession']]], + ['setdescriptor_127',['setDescriptor',['../classcore_1_1Socket.html#ac44f6ae3196a8a3e09a6a85fcf495762',1,'core::Socket']]], + ['setmode_128',['setMode',['../classcore_1_1TCPSession.html#afde7a264edac9e91b509f13eb4192038',1,'core::TCPSession']]], + ['setname_129',['setName',['../classcore_1_1Command.html#ad8b0321c64838f4d5c8f93461b97cfef',1,'core::Command']]], + ['settimer_130',['setTimer',['../classcore_1_1Timer.html#ac0a642cdcb76b7f995137162050d3d0b',1,'core::Timer']]], + ['shutdown_131',['shutdown',['../classcore_1_1Socket.html#af2d1b6de7a64a9d446b0305b6ec47b31',1,'core::Socket']]], + ['socket_132',['Socket',['../classcore_1_1Socket.html#a4c3f87fd1de3c9eab4bf5efbb30ce87d',1,'core::Socket']]], + ['start_133',['start',['../classcore_1_1EPoll.html#aaefe2caef75eb538af90cb34682d277b',1,'core::EPoll::start()'],['../classcore_1_1Thread.html#ae6885df9a9b9503669e5776518b19054',1,'core::Thread::start()']]], + ['stop_134',['stop',['../classcore_1_1EPoll.html#a0c2865acd31d14fbf19dbc42cc084ddc',1,'core::EPoll']]] +]; diff --git a/html/search/functions_9.html b/html/search/functions_9.html new file mode 100644 index 0000000..befd4fa --- /dev/null +++ b/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_9.js b/html/search/functions_9.js new file mode 100644 index 0000000..09eee44 --- /dev/null +++ b/html/search/functions_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tcpserver_135',['TCPServer',['../classcore_1_1TCPServer.html#a418924164fd6e59800272fbd6f069bb9',1,'core::TCPServer']]], + ['terminate_136',['terminate',['../classcore_1_1TCPSession.html#a34936745e8d7669d5400e78d353a56d3',1,'core::TCPSession']]], + ['tlsserver_137',['TLSServer',['../classcore_1_1TLSServer.html#a6460f9872936015efdfd0b8de04aa2fe',1,'core::TLSServer']]] +]; diff --git a/html/search/functions_a.html b/html/search/functions_a.html new file mode 100644 index 0000000..a81e963 --- /dev/null +++ b/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_a.js b/html/search/functions_a.js new file mode 100644 index 0000000..debfed2 --- /dev/null +++ b/html/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unregistersocket_138',['unregisterSocket',['../classcore_1_1EPoll.html#a5ab5e82ab51e0952fc8fbcc128f52900',1,'core::EPoll']]] +]; diff --git a/html/search/functions_b.html b/html/search/functions_b.html new file mode 100644 index 0000000..345265d --- /dev/null +++ b/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_b.js b/html/search/functions_b.js new file mode 100644 index 0000000..cf3b926 --- /dev/null +++ b/html/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write_139',['write',['../classcore_1_1Socket.html#a1413c826307ef0f29d7457770af675e3',1,'core::Socket']]] +]; diff --git a/html/search/functions_c.html b/html/search/functions_c.html new file mode 100644 index 0000000..858bfd6 --- /dev/null +++ b/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/functions_c.js b/html/search/functions_c.js new file mode 100644 index 0000000..125471a --- /dev/null +++ b/html/search/functions_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7eepoll_140',['~EPoll',['../classcore_1_1EPoll.html#a8e7a2496d684b745a6410f9bd3e88534',1,'core::EPoll']]], + ['_7esocket_141',['~Socket',['../classcore_1_1Socket.html#aa5003845f8ae464ad2fa206176381be0',1,'core::Socket']]], + ['_7etcpserver_142',['~TCPServer',['../classcore_1_1TCPServer.html#a7ccdc057c9eee8504fce796301f82088',1,'core::TCPServer']]], + ['_7etlsserver_143',['~TLSServer',['../classcore_1_1TLSServer.html#ac71db77c796a1bf65357409cb96054c7',1,'core::TLSServer']]] +]; diff --git a/html/search/mag_sel.png b/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/html/search/nomatches.html b/html/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/html/search/search.css b/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/html/search/search.js b/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/html/search/search_r.png b/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/html/search/searchdata.js b/html/search/searchdata.js new file mode 100644 index 0000000..f474f46 --- /dev/null +++ b/html/search/searchdata.js @@ -0,0 +1,24 @@ +var indexSectionsWithContent = +{ + 0: "abcegimoprstuw~", + 1: "ceiostu", + 2: "acegioprstuw~", + 3: "bcmosw" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "variables" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Functions", + 3: "Variables" +}; + diff --git a/html/search/variables_0.html b/html/search/variables_0.html new file mode 100644 index 0000000..bf3eba5 --- /dev/null +++ b/html/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_0.js b/html/search/variables_0.js new file mode 100644 index 0000000..4f224cb --- /dev/null +++ b/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blacklist_144',['blackList',['../classcore_1_1TCPServer.html#a82f6bf16e4ab20d8b30da09e034fffff',1,'core::TCPServer']]] +]; diff --git a/html/search/variables_1.html b/html/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_1.js b/html/search/variables_1.js new file mode 100644 index 0000000..da5582f --- /dev/null +++ b/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commands_145',['commands',['../classcore_1_1CommandList.html#a435f09d15c78dad43e7bca4977d6bdf1',1,'core::CommandList::commands()'],['../classcore_1_1TCPServer.html#afcc44802b988e2f4292504e804dccf8b',1,'core::TCPServer::commands()']]] +]; diff --git a/html/search/variables_2.html b/html/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_2.js b/html/search/variables_2.js new file mode 100644 index 0000000..aa977c1 --- /dev/null +++ b/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['maxsockets_146',['maxSockets',['../classcore_1_1EPoll.html#acfcef2513d94f7b9a191fed3dc744d90',1,'core::EPoll']]] +]; diff --git a/html/search/variables_3.html b/html/search/variables_3.html new file mode 100644 index 0000000..19a31fc --- /dev/null +++ b/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_3.js b/html/search/variables_3.js new file mode 100644 index 0000000..207a7f1 --- /dev/null +++ b/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['out_147',['out',['../classcore_1_1TCPSession.html#abb302bbb3d7e7bc75490c736364f0d4d',1,'core::TCPSession']]] +]; diff --git a/html/search/variables_4.html b/html/search/variables_4.html new file mode 100644 index 0000000..bdc37be --- /dev/null +++ b/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_4.js b/html/search/variables_4.js new file mode 100644 index 0000000..31f267a --- /dev/null +++ b/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sessions_148',['sessions',['../classcore_1_1TCPServer.html#aeed1bc55d099667ccda51cd682bfc633',1,'core::TCPServer']]] +]; diff --git a/html/search/variables_5.html b/html/search/variables_5.html new file mode 100644 index 0000000..6aa2249 --- /dev/null +++ b/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/html/search/variables_5.js b/html/search/variables_5.js new file mode 100644 index 0000000..dcd02b4 --- /dev/null +++ b/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['whitelist_149',['whiteList',['../classcore_1_1TCPServer.html#abad6300b6234ca8b69cef9128755342e',1,'core::TCPServer']]] +]; diff --git a/html/splitbar.png b/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/html/sync_off.png b/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/html/sync_on.png b/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/html/tab_a.png b/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/html/tab_b.png b/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/html/tabs.css b/html/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/latex/Makefile b/latex/Makefile new file mode 100644 index 0000000..877c9cc --- /dev/null +++ b/latex/Makefile @@ -0,0 +1,23 @@ +LATEX_CMD=pdflatex + +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + $(LATEX_CMD) refman + makeindex refman.idx + $(LATEX_CMD) refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + $(LATEX_CMD) refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + $(LATEX_CMD) refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/latex/annotated.tex b/latex/annotated.tex new file mode 100644 index 0000000..d0d8907 --- /dev/null +++ b/latex/annotated.tex @@ -0,0 +1,24 @@ +\doxysection{Class List} +Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1Command}{core\+::\+Command}} }{\pageref{classcore_1_1Command}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1CommandList}{core\+::\+Command\+List}} }{\pageref{classcore_1_1CommandList}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1ConsoleServer}{core\+::\+Console\+Server}} }{\pageref{classcore_1_1ConsoleServer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1ConsoleSession}{core\+::\+Console\+Session}} }{\pageref{classcore_1_1ConsoleSession}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1EPoll}{core\+::\+E\+Poll}} }{\pageref{classcore_1_1EPoll}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1INotify}{core\+::\+I\+Notify}} }{\pageref{classcore_1_1INotify}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1IPAddress}{core\+::\+I\+P\+Address}} }{\pageref{classcore_1_1IPAddress}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1IPAddressList}{core\+::\+I\+P\+Address\+List}} }{\pageref{classcore_1_1IPAddressList}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1Object}{core\+::\+Object}} }{\pageref{classcore_1_1Object}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1SessionFilter}{core\+::\+Session\+Filter}} }{\pageref{classcore_1_1SessionFilter}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1Socket}{core\+::\+Socket}} }{\pageref{classcore_1_1Socket}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TCPServer}{core\+::\+T\+C\+P\+Server}} }{\pageref{classcore_1_1TCPServer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TCPSession}{core\+::\+T\+C\+P\+Session}} }{\pageref{classcore_1_1TCPSession}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TCPSocket}{core\+::\+T\+C\+P\+Socket}} }{\pageref{classcore_1_1TCPSocket}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TerminalSession}{core\+::\+Terminal\+Session}} }{\pageref{classcore_1_1TerminalSession}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1Thread}{core\+::\+Thread}} }{\pageref{classcore_1_1Thread}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1Timer}{core\+::\+Timer}} }{\pageref{classcore_1_1Timer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TLSServer}{core\+::\+T\+L\+S\+Server}} }{\pageref{classcore_1_1TLSServer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1TLSSession}{core\+::\+T\+L\+S\+Session}} }{\pageref{classcore_1_1TLSSession}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1UDPServerSocket}{core\+::\+U\+D\+P\+Server\+Socket}} }{\pageref{classcore_1_1UDPServerSocket}}{} +\item\contentsline{section}{\mbox{\hyperlink{classcore_1_1UDPSocket}{core\+::\+U\+D\+P\+Socket}} }{\pageref{classcore_1_1UDPSocket}}{} +\end{DoxyCompactList} diff --git a/latex/classcore_1_1Command.tex b/latex/classcore_1_1Command.tex new file mode 100644 index 0000000..19ed8a1 --- /dev/null +++ b/latex/classcore_1_1Command.tex @@ -0,0 +1,119 @@ +\hypertarget{classcore_1_1Command}{}\doxysection{core\+::Command Class Reference} +\label{classcore_1_1Command}\index{core::Command@{core::Command}} + + +{\ttfamily \#include $<$Command.\+h$>$} + + + +Inheritance diagram for core\+::Command\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1Command__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Command\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=174pt]{classcore_1_1Command__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual bool \mbox{\hyperlink{classcore_1_1Command_abdc0d7a4693a7f7940bbae20c4a667c0}{check}} (std\+::string request) +\item +virtual int \mbox{\hyperlink{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}{process\+Command}} (std\+::string request, \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, std\+::stringstream \&data) +\item +virtual void \mbox{\hyperlink{classcore_1_1Command_a314aef05f78aacb802097f8ae0875291}{output}} (Session $\ast$session) +\item +void \mbox{\hyperlink{classcore_1_1Command_ad8b0321c64838f4d5c8f93461b97cfef}{set\+Name}} (std\+::string name) +\item +\mbox{\Hypertarget{classcore_1_1Command_aa63cf88493b2a1b775b5b93b07e79324}\label{classcore_1_1Command_aa63cf88493b2a1b775b5b93b07e79324}} +std\+::string {\bfseries get\+Name} () +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1Command}{Command}} + +Use the \mbox{\hyperlink{classcore_1_1Command}{Command}} object in combination with a \mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} object to maintain a list of functions that can be invoked as a result of processing a request. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1Command_abdc0d7a4693a7f7940bbae20c4a667c0}\label{classcore_1_1Command_abdc0d7a4693a7f7940bbae20c4a667c0}} +\index{core::Command@{core::Command}!check@{check}} +\index{check@{check}!core::Command@{core::Command}} +\doxysubsubsection{\texorpdfstring{check()}{check()}} +{\footnotesize\ttfamily bool core\+::\+Command\+::check (\begin{DoxyParamCaption}\item[{std\+::string}]{request }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [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 \mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}}. This can be overridden by implementing the \mbox{\hyperlink{classcore_1_1Command_abdc0d7a4693a7f7940bbae20c4a667c0}{check()}} method to perform the test and return the condition of the command. + + +\begin{DoxyParams}{Parameters} +{\em request} & The request passed to the parser to check the rule. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Return true to execute the command. Returning false will cause no action on this command. +\end{DoxyReturn} +\mbox{\Hypertarget{classcore_1_1Command_a314aef05f78aacb802097f8ae0875291}\label{classcore_1_1Command_a314aef05f78aacb802097f8ae0875291}} +\index{core::Command@{core::Command}!output@{output}} +\index{output@{output}!core::Command@{core::Command}} +\doxysubsubsection{\texorpdfstring{output()}{output()}} +{\footnotesize\ttfamily void core\+::\+Command\+::output (\begin{DoxyParamCaption}\item[{Session $\ast$}]{session }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +Specify the output that will occur to the specified session. + + +\begin{DoxyParams}{Parameters} +{\em session} & The session that will receive the output. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}\label{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}} +\index{core::Command@{core::Command}!processCommand@{processCommand}} +\index{processCommand@{processCommand}!core::Command@{core::Command}} +\doxysubsubsection{\texorpdfstring{processCommand()}{processCommand()}} +{\footnotesize\ttfamily int core\+::\+Command\+::process\+Command (\begin{DoxyParamCaption}\item[{std\+::string}]{request, }\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{std\+::stringstream \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object. + + +\begin{DoxyParams}{Parameters} +{\em request} & The request that was entered by the user to invoke this command. \\ +\hline +{\em session} & Specify the requesting session so that the execution of the command process can return its output to the session. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Returns 0 if execution of the command was successful. Otherwise returns a non-\/zero value indicating an error condition. +\end{DoxyReturn} + + +Reimplemented in \mbox{\hyperlink{classcore_1_1CommandList_a98939555ca061b445019a841726e3ef6}{core\+::\+Command\+List}}, \mbox{\hyperlink{classcore_1_1EPoll_a0c2d7fdaec43d0a15abab0399d5727df}{core\+::\+E\+Poll}}, and \mbox{\hyperlink{classcore_1_1TCPServer_a93f64f81bc63f145799af91138a064dc}{core\+::\+T\+C\+P\+Server}}. + +\mbox{\Hypertarget{classcore_1_1Command_ad8b0321c64838f4d5c8f93461b97cfef}\label{classcore_1_1Command_ad8b0321c64838f4d5c8f93461b97cfef}} +\index{core::Command@{core::Command}!setName@{setName}} +\index{setName@{setName}!core::Command@{core::Command}} +\doxysubsubsection{\texorpdfstring{setName()}{setName()}} +{\footnotesize\ttfamily void core\+::\+Command\+::set\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{name }\end{DoxyParamCaption})} + +Set the name of this command used in default rule checking during request parsing. N\+O\+TE\+: You do not need to call this under normal conditions as adding a \mbox{\hyperlink{classcore_1_1Command}{Command}} to a \mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} using the add() method contains a parameter to pass the name of the \mbox{\hyperlink{classcore_1_1Command}{Command}}. + + +\begin{DoxyParams}{Parameters} +{\em name} & Specify the name of this command for default parsing. \\ +\hline +\end{DoxyParams} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Command.\+h\item +Command.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1CommandList.tex b/latex/classcore_1_1CommandList.tex new file mode 100644 index 0000000..ebdaec6 --- /dev/null +++ b/latex/classcore_1_1CommandList.tex @@ -0,0 +1,115 @@ +\hypertarget{classcore_1_1CommandList}{}\doxysection{core\+::Command\+List Class Reference} +\label{classcore_1_1CommandList}\index{core::CommandList@{core::CommandList}} + + +{\ttfamily \#include $<$Command\+List.\+h$>$} + + + +Inheritance diagram for core\+::Command\+List\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=191pt]{classcore_1_1CommandList__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Command\+List\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=191pt]{classcore_1_1CommandList__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classcore_1_1CommandList_a7a45e75e3d21a25fd3f7e887acf395e9}{add}} (\mbox{\hyperlink{classcore_1_1Command}{Command}} \&command, std\+::string name=\char`\"{}\char`\"{}) +\item +void \mbox{\hyperlink{classcore_1_1CommandList_aaac684effb9ecf5238d23ca60d3fffaa}{remove}} (\mbox{\hyperlink{classcore_1_1Command}{Command}} \&command) +\item +bool \mbox{\hyperlink{classcore_1_1CommandList_a589f3eba55beebad94a5978970e0650d}{process\+Request}} (std\+::string request, \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, std\+::stringstream \&data) +\item +bool \mbox{\hyperlink{classcore_1_1CommandList_a40211d843807cd65f6614c17efcb00e4}{grab\+Input}} (\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, \mbox{\hyperlink{classcore_1_1Command}{Command}} \&command) +\item +\mbox{\Hypertarget{classcore_1_1CommandList_a2bf14022331b23e0878aa9d676a90110}\label{classcore_1_1CommandList_a2bf14022331b23e0878aa9d676a90110}} +void {\bfseries clear\+Grab} (\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session) +\item +int \mbox{\hyperlink{classcore_1_1CommandList_a98939555ca061b445019a841726e3ef6}{process\+Command}} (std\+::string request, \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, std\+::stringstream \&data) +\end{DoxyCompactItemize} +\doxysubsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +std\+::vector$<$ \mbox{\hyperlink{classcore_1_1Command}{Command}} $\ast$ $>$ \mbox{\hyperlink{classcore_1_1CommandList_a435f09d15c78dad43e7bca4977d6bdf1}{commands}} +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} + +This object organizes \mbox{\hyperlink{classcore_1_1Command}{Command}} objects into a list that is used to parse an input and run the process associated with the selected command. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1CommandList_a7a45e75e3d21a25fd3f7e887acf395e9}\label{classcore_1_1CommandList_a7a45e75e3d21a25fd3f7e887acf395e9}} +\index{core::CommandList@{core::CommandList}!add@{add}} +\index{add@{add}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{add()}{add()}} +{\footnotesize\ttfamily void core\+::\+Command\+List\+::add (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1Command}{Command}} \&}]{command, }\item[{std\+::string}]{name = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})} + +Add a new command to the command list and assign a default search value. \mbox{\Hypertarget{classcore_1_1CommandList_a40211d843807cd65f6614c17efcb00e4}\label{classcore_1_1CommandList_a40211d843807cd65f6614c17efcb00e4}} +\index{core::CommandList@{core::CommandList}!grabInput@{grabInput}} +\index{grabInput@{grabInput}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{grabInput()}{grabInput()}} +{\footnotesize\ttfamily bool core\+::\+Command\+List\+::grab\+Input (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{\mbox{\hyperlink{classcore_1_1Command}{Command}} \&}]{command }\end{DoxyParamCaption})} + +Use \mbox{\hyperlink{classcore_1_1CommandList_a40211d843807cd65f6614c17efcb00e4}{grab\+Input()}} within a \mbox{\hyperlink{classcore_1_1Command}{Command}} object to force the requesting handler to receive all further input from the socket. Use release\+Grab() method to release the session back to normal command processing. \mbox{\Hypertarget{classcore_1_1CommandList_a98939555ca061b445019a841726e3ef6}\label{classcore_1_1CommandList_a98939555ca061b445019a841726e3ef6}} +\index{core::CommandList@{core::CommandList}!processCommand@{processCommand}} +\index{processCommand@{processCommand}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{processCommand()}{processCommand()}} +{\footnotesize\ttfamily int core\+::\+Command\+List\+::process\+Command (\begin{DoxyParamCaption}\item[{std\+::string}]{request, }\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{std\+::stringstream \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object. + + +\begin{DoxyParams}{Parameters} +{\em request} & The request that was entered by the user to invoke this command. \\ +\hline +{\em session} & Specify the requesting session so that the execution of the command process can return its output to the session. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Returns 0 if execution of the command was successful. Otherwise returns a non-\/zero value indicating an error condition. +\end{DoxyReturn} + + +Reimplemented from \mbox{\hyperlink{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}{core\+::\+Command}}. + +\mbox{\Hypertarget{classcore_1_1CommandList_a589f3eba55beebad94a5978970e0650d}\label{classcore_1_1CommandList_a589f3eba55beebad94a5978970e0650d}} +\index{core::CommandList@{core::CommandList}!processRequest@{processRequest}} +\index{processRequest@{processRequest}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{processRequest()}{processRequest()}} +{\footnotesize\ttfamily bool core\+::\+Command\+List\+::process\+Request (\begin{DoxyParamCaption}\item[{std\+::string}]{request, }\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{std\+::stringstream \&}]{data }\end{DoxyParamCaption})} + +Use this method to apply a parsed P\+String to the command set and execute the matching parameter. The selected command will return a true on a call to \mbox{\hyperlink{classcore_1_1Command_abdc0d7a4693a7f7940bbae20c4a667c0}{check()}}. If there is a handler that has a grab on the process handler then control is given to the process handler holding the grab on the input. \mbox{\Hypertarget{classcore_1_1CommandList_aaac684effb9ecf5238d23ca60d3fffaa}\label{classcore_1_1CommandList_aaac684effb9ecf5238d23ca60d3fffaa}} +\index{core::CommandList@{core::CommandList}!remove@{remove}} +\index{remove@{remove}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{remove()}{remove()}} +{\footnotesize\ttfamily void core\+::\+Command\+List\+::remove (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1Command}{Command}} \&}]{command }\end{DoxyParamCaption})} + +Remove a command object from the command list. + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classcore_1_1CommandList_a435f09d15c78dad43e7bca4977d6bdf1}\label{classcore_1_1CommandList_a435f09d15c78dad43e7bca4977d6bdf1}} +\index{core::CommandList@{core::CommandList}!commands@{commands}} +\index{commands@{commands}!core::CommandList@{core::CommandList}} +\doxysubsubsection{\texorpdfstring{commands}{commands}} +{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{classcore_1_1Command}{Command}} $\ast$$>$ core\+::\+Command\+List\+::commands\hspace{0.3cm}{\ttfamily [protected]}} + +The vector of all registered commands. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Command\+List.\+h\item +Command\+List.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1CommandList__coll__graph.md5 b/latex/classcore_1_1CommandList__coll__graph.md5 new file mode 100644 index 0000000..ff264eb --- /dev/null +++ b/latex/classcore_1_1CommandList__coll__graph.md5 @@ -0,0 +1 @@ +95346e4570bcf3dd3c88ed5e9d7073cd \ No newline at end of file diff --git a/latex/classcore_1_1CommandList__coll__graph.pdf b/latex/classcore_1_1CommandList__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d098e3fb4f70d8448ecb9f082028a657e8eddb20 GIT binary patch literal 7415 zcmb_>2{@G9`+r%&ScuDi4T^Ay6n(219VA;K)GjilyK*arPt!97I(W;z1$f zutbPYQbF7)LmK$Lu!WUlAKo1Hn*QwK&9YQv8%1aL`Z@33s}X4r+4ZR#2K3yYFUQ5; zvy&;RBlCz5j5)?m@=TK4;vP{MWxmLouMG#3?1Otn5)1R&OoXZX9HFE9k4VC=#ty~2 zVD}3?;CeXbY77teSIdHxOan98srGXr6&&4u)tV9KmuL1U?!D8J$=1Kuy+Cwm&uU&v zUZ~gUcP@~blT~&&zoE)LVs8{O)~~1YVU3X!ohQz@0xL7tqpxYvx%UxC&y}&| zk;$hQ@?{jS-zc8>I_B`2_Oz5^VnwPFvY-&8&09qh=AY@<-fQFEl2gku4@^5Un(A4sw zXq!*~B%#X6pa3W`SQyZO%4nQ`!l5$uSl}1H7Z}+7mBEnQD8FdqrC?GpD0(M9043n_ z)0o2F#-K8$zV0}v%n3I)5@pM>iKiW9OQcV5bJ>pu8*n&kdkAb;Z%s4C*;BSAKtUN?4gpTv9y;;M)_-ovoSn7%R)ghQ2plpPuY&@|B?HKcFsU>|7-8z zKfON-xPk!M;29#fRa@^wNcN8a8DSl9P!Z_1`#*mhWk0oES5Gr%uRSrJk2wyrc z>zq$u_lCNRF3wmtL_%H`hK(4^$>gZG`o5qQ zS?;*2ze`J-XxO3>sn_UIlVvEf`?3r@Q-o&nxq9!|GAo`LM2lL`2eAheoN+8I9ga$c zv~LGHOOho7bW6vh&C??tK1yg=bcvkKenMS)r*c=*wkUl;(5o4@kL`>qw`uX}rA!37@ak|m{)1H(Pwb4!mr`W=FJ1CJu{D=9<}DPUX|`#PV_hs z8Qp_Er18qQDaz9-XLkf^x=FZgQ~s34c_P6VIkkR9z9wPdm?~aJ-=oby;W@VcY9x`! ztsV7-o4d))mJ9EAr`RDqb4H|4_<7VmNN<3^-OGn)L~8;x5=Y#UqrDux5(~0dX3{X3 z`mW|aya|M(rJR+JfYAFdE%A9U3(KSVoMn)#_VY(ZI3LBt1w$U(ILwurH#1O}W%`X$ z_r1dqDW}}mFgvb0P(IH0U@Y{yNw(tmwUL hm(P5h+{96(97akUlV7&Bddeyo!%*4cb=J_samF)7|0pU|rQi+1_@IZnSIEgs?V7>_OOXy= zT0Ol(91*=452A<5#P&5SS4umW(xHZK_D?(y|BFhi6^X9-5DyvZ+AS@<)DRRu{gCqM z=?boqR@6&U()Q~;lx9UzTxV`DZ``}PhuA5`h`Hf~9Iv;Wc@~8^d21Xcf_j3Vgw&#D zBPP$pG(66fbi5UL7O7W$uVpSP+(+Q!aXx>F}V_ArFqaF|F8qI$=#J@eI@2%5_~ zWj)#KJ^2P2Cgji6VdX2Ie-o|2`;tvw%o3>hHAz? z8qrszZph47_A;bL4)Wwri(7qJ6&m**KVjZLepvm1x$B*8I9fuLJvAcUd)OC0V_Ft0 zh1DCpE)o2u8)KYrXB$LHY<#r0n^$9%%SXX@<4uDQr% zU;m!!#H40^Zv)foVq%J7qGHv;m#iJ0R4L{SnH+j9jkos?@V9t&(S2qt^99rTJT=GP z@Dk-(m2h6Y35WIcqo};krkL=*Hc$22bTu9=o<53X)jOghDy69MQJU!2ZT4!3nRPF> z8sFkZ$=!bW(l6iZGgZzm-)Oh?_kWREnOU0tI5aC2CE7U~;A3<8#kFM8GhCsM>+76= zr6m>GrCZD`76Ku4?yqUB5+4kuubn!zM|9fu)=X*(8?yc=LBz!Uo>K6AV!QYEk=*gc zK<4xJ16OA{Sc7WoEi6);V!d+T4;5Rpa)%NwyqBjECqcLF7TEeh`O>f5x|n+-*5&S<*lkCd?BaF02%nTo*1}u|J(daGZDYPgkwQJ|75=YaH3`Eo0~kh7&PAw zbWVzYz#D{zT|Sa}c=7_oO*UEG`CvEG=9~QI%+AhSs>yxSSE*`e7CWuAr088xk|PUm zf3$NSIe=_E!@$Aup>y?AWEo3f8UAhTn>Q2F(<_c$%}Z7jsKUXKu`uXVw8*Qq>!fUc zsIXNBikwQ$zUEKt)(^}*;rDTNsv;^Xp{@{pCqh#_Xq-njMWK&h z#Pos0>?L#2{toegiD(a{hY#1imb{3hfR6kECDpiPmqFIeb6F|0sjn2$M!4;!tBVHN z?wvBs`x@%*axhGZI1_Mxs%D;95c4ja$pL)$2$f0n4#XUM{tC* z&y_P(f;t|z7Q9%J>niS1oLf~-w5xg};AUU-Mmn-QK%rHZhJxd%}?+>p|2MDeh z4Ng~A_u|53X?IKbLg}*V&>D|Aj`!QD^1gt?`?F(om~Typ5|M$l zclEEKrVRPwz5oJ;1Sl|Aly=BGk zULO@)g2cVn3&$SH7j99?zu9+ENBHe2`A&q~mR+>cd9J}30Bv+qnedR7zb93Q=813lISxUcFP^$H1V|2uAIP1Mh zoyYXjwtVx!dZm#EN6m9Wt&K31XiK>1N!%;`xTHy9(M@OgYB{@ZSB#hTpcR^-D^2oL z=-e#-U>`)S)+*_k**@s2Ou<(_gbVsGE9L6BEL48Pt1m&~g$jsa!J|^POG+DMI zo3r#U2jp@1gF4x7M}ukIdE$!LoC#TJ&+isf8SXwk^*zq@5$=Yb+HpREE1KeQg)xQG zqiI41r8DYnGn>4OmJN<6f4ryCwK78em>K&cW4f52!XPk}=6kbgbl^6^&}(U(!MFaz z=NY!vkvB4dk5<|;V-e&JzHDFch6gQ?N`V|Ly%aIqym9iw>=?|eJ>?uP5W+R4bj1UYKEH8+uAcLx0SL?(Az2y?%H ztaIeoPP?1Vhj50>NuOuP8ZvkGKF(WScX~bze(Zfh!fvri_Q|)FJP+?MWeKYt#eELI zxHQzhTjZjibnH9$B`87gNm@ur5nXC*cB|Pk;cz2qZh&dl9Rcsrv=h7L)2clRRa!T` z*|ce#Rk$D)^p1@h$sMTQpf>P+FBkRvm|0NZ^0+q_wT!Lm*;+@2{4$B|d~RLgr=k+R zAHYXr>@R)lgy!tNwQ$pCuT$D&`mjo@u3Zh0HXuvA8BVp!n0>r9P;36xo+4I+B_RQ7ck zGP`G2QImBpI2#kE!RBb?DSoE7?ans5I#PNI{RY7%)Z z&QW1$d%sqTh8rT;Tu*g-Ru|$+L)u?)e2nV5N417;ig$59tD_H`7Y>t6PEc})rt%cemCyl|1hW|Q_r*ZR{seyXiuI)40j zB80*&u3uH>PjQ;6d!Fdj6yhUeSiwH=9Nq3RS(pD2X_r)M83Z?v5>?8W`zTSL<3@>R znpcmKv#0Zgsi!^U3pc2DcMf4@IaY79Y?@OmAV)ZfR-{*?3u7$p-Boow)YVKhy@0#B;jpc#VC{)O`1M z6R!0?LTP@u(qAgp{LY#FZ5|JjCco2sTLi&Ro=*;jMC{NiaFAvJ<-f4F@P8PJ{}+vG zefkus4$AU;<(U60n^_!+D95CAw^EO7qxooB04T>lYv1`H2C(+)}oW$3dx^z=uflzp1U2=J2oeo88Q=mMK9u* zYf8I+Bg5`peP`u(l51)|e3Eg!LCm%1uoN|XFA%)KBIS^kZo`|Yaw`*T+ zFFoB8V(lw0snfORcA6aKFBx$M>#xv)IeNbpnSP4C!r9G&^q3}(4 z#C|UaVpDqbYD`PVNM$Q=YIArhw-EkHyp5xcW#w~H(?&`izwE;#8}lEx8vX^99i9~+ zXb`Y}K>3wg-=-fyI#me~dG6da9!O35OSP`E5w z9;zUV{>dTgP_V89`x9=CuDG96>Erx+;tG#9HBB61h*4z9)umi);tS> z1H}ns_drha|Mx*4Kr_ETC2TlL&o7DAm0pu{av6aBocUe@X((!lsp(A zut42*WN;0=t4q&(cD?QX7Hc+y_yZxVYQNYgrQ-((VF&7R8|5m{A ziyv}-?iqD?= wACQs?TbLP>NI+tNxEgQub=>ek{(#A~m98EXESa)}AWA__0U{!zWr%_N59`hMY5)KL literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1CommandList__inherit__graph.md5 b/latex/classcore_1_1CommandList__inherit__graph.md5 new file mode 100644 index 0000000..ff264eb --- /dev/null +++ b/latex/classcore_1_1CommandList__inherit__graph.md5 @@ -0,0 +1 @@ +95346e4570bcf3dd3c88ed5e9d7073cd \ No newline at end of file diff --git a/latex/classcore_1_1CommandList__inherit__graph.pdf b/latex/classcore_1_1CommandList__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d098e3fb4f70d8448ecb9f082028a657e8eddb20 GIT binary patch literal 7415 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Command__coll__graph.md5 b/latex/classcore_1_1Command__coll__graph.md5 new file mode 100644 index 0000000..b1d441f --- /dev/null +++ b/latex/classcore_1_1Command__coll__graph.md5 @@ -0,0 +1 @@ +a6101fc959b5d2ef84a8a6db1830dc39 \ No newline at end of file diff --git a/latex/classcore_1_1Command__coll__graph.pdf b/latex/classcore_1_1Command__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..489ed6795438777b5b37b5b94ac45c2321039284 GIT binary patch literal 6589 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Command__inherit__graph.md5 b/latex/classcore_1_1Command__inherit__graph.md5 new file mode 100644 index 0000000..feab6bc --- /dev/null +++ b/latex/classcore_1_1Command__inherit__graph.md5 @@ -0,0 +1 @@ +2abf51e9c484a58dcf854d92c5055b65 \ No newline at end of file diff --git a/latex/classcore_1_1Command__inherit__graph.pdf b/latex/classcore_1_1Command__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8e47b68d79939ac442e56732d2de143004408f16 GIT binary patch literal 10788 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1ConsoleServer.tex b/latex/classcore_1_1ConsoleServer.tex new file mode 100644 index 0000000..11f99d6 --- /dev/null +++ b/latex/classcore_1_1ConsoleServer.tex @@ -0,0 +1,51 @@ +\hypertarget{classcore_1_1ConsoleServer}{}\doxysection{core\+::Console\+Server Class Reference} +\label{classcore_1_1ConsoleServer}\index{core::ConsoleServer@{core::ConsoleServer}} + + +Inheritance diagram for core\+::Console\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1ConsoleServer__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Console\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1ConsoleServer__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1ConsoleServer_a938c93207ced5bfa3e15e9f4a1cbf3f0}\label{classcore_1_1ConsoleServer_a938c93207ced5bfa3e15e9f4a1cbf3f0}} +{\bfseries Console\+Server} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} address) +\item +\mbox{\Hypertarget{classcore_1_1ConsoleServer_ace482706881fd6cbec4e01534c091391}\label{classcore_1_1ConsoleServer_ace482706881fd6cbec4e01534c091391}} +void {\bfseries log\+Send} (std\+::string out) override +\item +\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ \mbox{\hyperlink{classcore_1_1ConsoleServer_a80d9ea7f3fc5e07c50d5b9e0d4943ca8}{get\+Socket\+Accept}} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll) override +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1ConsoleServer_a80d9ea7f3fc5e07c50d5b9e0d4943ca8}\label{classcore_1_1ConsoleServer_a80d9ea7f3fc5e07c50d5b9e0d4943ca8}} +\index{core::ConsoleServer@{core::ConsoleServer}!getSocketAccept@{getSocketAccept}} +\index{getSocketAccept@{getSocketAccept}!core::ConsoleServer@{core::ConsoleServer}} +\doxysubsubsection{\texorpdfstring{getSocketAccept()}{getSocketAccept()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ core\+::\+Console\+Server\+::get\+Socket\+Accept (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&}]{epoll }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}} + +get\+Socket\+Accept 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 \mbox{\hyperlink{classcore_1_1TCPServer_a841f02799ad8529aad7cea132f4de8a9}{core\+::\+T\+C\+P\+Server}}. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Console\+Server.\+h\item +Console\+Server.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1ConsoleServer__coll__graph.md5 b/latex/classcore_1_1ConsoleServer__coll__graph.md5 new file mode 100644 index 0000000..8ac769b --- /dev/null +++ b/latex/classcore_1_1ConsoleServer__coll__graph.md5 @@ -0,0 +1 @@ +23a9f7a7fad5f99c7a211cd84e8f2a11 \ No newline at end of file diff --git a/latex/classcore_1_1ConsoleServer__coll__graph.pdf b/latex/classcore_1_1ConsoleServer__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6276595fea8252c3d957b73e026cebc457b75298 GIT binary patch literal 13146 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1ConsoleServer__inherit__graph.md5 b/latex/classcore_1_1ConsoleServer__inherit__graph.md5 new file mode 100644 index 0000000..8d04451 --- /dev/null +++ b/latex/classcore_1_1ConsoleServer__inherit__graph.md5 @@ -0,0 +1 @@ +0cbbd9531a1296f08dbc3e54fad6f694 \ No newline at end of file diff --git a/latex/classcore_1_1ConsoleServer__inherit__graph.pdf b/latex/classcore_1_1ConsoleServer__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..74fba9431e4eb74b057d7eaf52b2a1130267a36b GIT binary patch literal 10064 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 + + + +Inheritance diagram for core\+::Console\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=203pt]{classcore_1_1ConsoleSession__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Console\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1ConsoleSession__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1ConsoleSession_ae735e9739fb4cfd2ef983cc56f9982c7}\label{classcore_1_1ConsoleSession_ae735e9739fb4cfd2ef983cc56f9982c7}} +{\bfseries Console\+Session} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} \&server) +\item +\mbox{\Hypertarget{classcore_1_1ConsoleSession_a6e6b56503966f1cae5bdff8b3814e2b9}\label{classcore_1_1ConsoleSession_a6e6b56503966f1cae5bdff8b3814e2b9}} +void {\bfseries write\+Log} (std\+::string data) +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classcore_1_1ConsoleSession_a830cc1e1e0c3fe3b066f0a9f7f469490}{protocol}} (std\+::string data) override +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1ConsoleSession}{Console\+Session}} + +Extends the session parameters for this \mbox{\hyperlink{classcore_1_1TCPSocket}{T\+C\+P\+Socket}} derived object. Extend the \mbox{\hyperlink{classcore_1_1ConsoleSession_a830cc1e1e0c3fe3b066f0a9f7f469490}{protocol()}} method in order to define the behavior and protocol interaction for this socket which is a console session. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1ConsoleSession_a830cc1e1e0c3fe3b066f0a9f7f469490}\label{classcore_1_1ConsoleSession_a830cc1e1e0c3fe3b066f0a9f7f469490}} +\index{core::ConsoleSession@{core::ConsoleSession}!protocol@{protocol}} +\index{protocol@{protocol}!core::ConsoleSession@{core::ConsoleSession}} +\doxysubsubsection{\texorpdfstring{protocol()}{protocol()}} +{\footnotesize\ttfamily void core\+::\+Console\+Session\+::protocol (\begin{DoxyParamCaption}\item[{std\+::string}]{data = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +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 \textquotesingle{}commands\textquotesingle{} added to the server object using the process\+Request method on the session input. + +When data is received within the session two modes are available to pass the data through the protocol method\+: L\+I\+NE or B\+L\+O\+CK. + +Reimplemented from \mbox{\hyperlink{classcore_1_1TCPSession_ae90dc64e2d3c4b3239117923145edb3f}{core\+::\+T\+C\+P\+Session}}. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Console\+Session.\+h\item +Console\+Session.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1ConsoleSession__coll__graph.md5 b/latex/classcore_1_1ConsoleSession__coll__graph.md5 new file mode 100644 index 0000000..1587eb3 --- /dev/null +++ b/latex/classcore_1_1ConsoleSession__coll__graph.md5 @@ -0,0 +1 @@ +e3a5c5da26e73687babd96ad5f9b9573 \ No newline at end of file diff --git a/latex/classcore_1_1ConsoleSession__coll__graph.pdf b/latex/classcore_1_1ConsoleSession__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..25cb17951cff9dd46dc8174a78f015bb33b133a3 GIT binary patch literal 13960 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 fyd43w>(sm3#Dj=+C+>O$} + + + +Inheritance diagram for core\+::E\+Poll\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=174pt]{classcore_1_1EPoll__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::E\+Poll\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=174pt]{classcore_1_1EPoll__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classcore_1_1EPoll_a2fd5cc4336b5f72990ecc0e7ea3d7641}{E\+Poll}} () +\item +\mbox{\hyperlink{classcore_1_1EPoll_a8e7a2496d684b745a6410f9bd3e88534}{$\sim$\+E\+Poll}} () +\item +bool \mbox{\hyperlink{classcore_1_1EPoll_aaefe2caef75eb538af90cb34682d277b}{start}} (int number\+Of\+Threads, int \mbox{\hyperlink{classcore_1_1EPoll_acfcef2513d94f7b9a191fed3dc744d90}{max\+Sockets}}) +\begin{DoxyCompactList}\small\item\em Start the B\+M\+A\+E\+Poll processing. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classcore_1_1EPoll_a0c2865acd31d14fbf19dbc42cc084ddc}{stop}} () +\begin{DoxyCompactList}\small\item\em Stop and shut down the B\+M\+A\+E\+Poll processing. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classcore_1_1EPoll_a301b46b71ac7ac61a687ff723fe269b3}{is\+Stopping}} () +\begin{DoxyCompactList}\small\item\em Returns a true if the stop command has been requested. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classcore_1_1EPoll_a3d813c7bbf0da70ebc8e3cb6aeeacfb4}{register\+Socket}} (\mbox{\hyperlink{classcore_1_1Socket}{Socket}} $\ast$socket) +\begin{DoxyCompactList}\small\item\em Register a B\+M\+A\+Socket for monitoring by B\+M\+A\+E\+Poll. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classcore_1_1EPoll_a5ab5e82ab51e0952fc8fbcc128f52900}{unregister\+Socket}} (\mbox{\hyperlink{classcore_1_1Socket}{Socket}} $\ast$socket) +\begin{DoxyCompactList}\small\item\em Unregister a B\+M\+A\+Socket from monitoring by B\+M\+A\+E\+Poll. \end{DoxyCompactList}\item +int \mbox{\hyperlink{classcore_1_1EPoll_a1e52017e1deae15c1c87c6b6a099e1ed}{get\+Descriptor}} () +\begin{DoxyCompactList}\small\item\em Return the descriptor for the e\+Poll socket. \end{DoxyCompactList}\item +void \mbox{\hyperlink{classcore_1_1EPoll_a3238b150b5d0a57eb2e1b17daa236d3b}{event\+Received}} (struct epoll\+\_\+event event) +\begin{DoxyCompactList}\small\item\em Dispatch event to appropriate socket. \end{DoxyCompactList}\item +int \mbox{\hyperlink{classcore_1_1EPoll_a0c2d7fdaec43d0a15abab0399d5727df}{process\+Command}} (std\+::string command, \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, std\+::stringstream \&data) override +\begin{DoxyCompactList}\small\item\em Output the threads array to the console. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1EPoll_a033633714311f3edc4127ddd1c37f299}\label{classcore_1_1EPoll_a033633714311f3edc4127ddd1c37f299}} +void {\bfseries reset\+Socket} (\mbox{\hyperlink{classcore_1_1Socket}{Socket}} $\ast$socket) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{classcore_1_1EPoll_acfcef2513d94f7b9a191fed3dc744d90}{max\+Sockets}} +\begin{DoxyCompactList}\small\item\em The maximum number of socket allowed. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} + +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. \mbox{\hyperlink{classcore_1_1Socket}{Socket}} objects can register with \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} 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. + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classcore_1_1EPoll_a2fd5cc4336b5f72990ecc0e7ea3d7641}\label{classcore_1_1EPoll_a2fd5cc4336b5f72990ecc0e7ea3d7641}} +\index{core::EPoll@{core::EPoll}!EPoll@{EPoll}} +\index{EPoll@{EPoll}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{EPoll()}{EPoll()}} +{\footnotesize\ttfamily core\+::\+E\+Poll\+::\+E\+Poll (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +The constructor for the B\+M\+A\+E\+Poll object. \mbox{\Hypertarget{classcore_1_1EPoll_a8e7a2496d684b745a6410f9bd3e88534}\label{classcore_1_1EPoll_a8e7a2496d684b745a6410f9bd3e88534}} +\index{core::EPoll@{core::EPoll}!````~EPoll@{$\sim$EPoll}} +\index{````~EPoll@{$\sim$EPoll}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{$\sim$EPoll()}{~EPoll()}} +{\footnotesize\ttfamily core\+::\+E\+Poll\+::$\sim$\+E\+Poll (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +The destructor for the B\+M\+A\+E\+Poll object. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1EPoll_a3238b150b5d0a57eb2e1b17daa236d3b}\label{classcore_1_1EPoll_a3238b150b5d0a57eb2e1b17daa236d3b}} +\index{core::EPoll@{core::EPoll}!eventReceived@{eventReceived}} +\index{eventReceived@{eventReceived}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{eventReceived()}{eventReceived()}} +{\footnotesize\ttfamily void core\+::\+E\+Poll\+::event\+Received (\begin{DoxyParamCaption}\item[{struct epoll\+\_\+event}]{event }\end{DoxyParamCaption})} + + + +Dispatch event to appropriate socket. + +Receive the epoll events and dispatch the event to the socket making the request. \mbox{\Hypertarget{classcore_1_1EPoll_a1e52017e1deae15c1c87c6b6a099e1ed}\label{classcore_1_1EPoll_a1e52017e1deae15c1c87c6b6a099e1ed}} +\index{core::EPoll@{core::EPoll}!getDescriptor@{getDescriptor}} +\index{getDescriptor@{getDescriptor}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{getDescriptor()}{getDescriptor()}} +{\footnotesize\ttfamily int core\+::\+E\+Poll\+::get\+Descriptor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Return the descriptor for the e\+Poll socket. + +Use this method to obtain the current descriptor socket number for the epoll function call. \mbox{\Hypertarget{classcore_1_1EPoll_a301b46b71ac7ac61a687ff723fe269b3}\label{classcore_1_1EPoll_a301b46b71ac7ac61a687ff723fe269b3}} +\index{core::EPoll@{core::EPoll}!isStopping@{isStopping}} +\index{isStopping@{isStopping}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{isStopping()}{isStopping()}} +{\footnotesize\ttfamily bool core\+::\+E\+Poll\+::is\+Stopping (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Returns a true if the stop command has been requested. + +This method returns a true if the \mbox{\hyperlink{classcore_1_1EPoll_a0c2865acd31d14fbf19dbc42cc084ddc}{stop()}} method has been called and the epoll system is shutting. \mbox{\Hypertarget{classcore_1_1EPoll_a0c2d7fdaec43d0a15abab0399d5727df}\label{classcore_1_1EPoll_a0c2d7fdaec43d0a15abab0399d5727df}} +\index{core::EPoll@{core::EPoll}!processCommand@{processCommand}} +\index{processCommand@{processCommand}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{processCommand()}{processCommand()}} +{\footnotesize\ttfamily int core\+::\+E\+Poll\+::process\+Command (\begin{DoxyParamCaption}\item[{std\+::string}]{command, }\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{std\+::stringstream \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Output the threads array to the console. + +The \mbox{\hyperlink{classcore_1_1EPoll_a0c2d7fdaec43d0a15abab0399d5727df}{process\+Command()}} method displays the thread array to the requesting console via the session passed as parameter. + + +\begin{DoxyParams}{Parameters} +{\em session} & the session to write the requested data to. \\ +\hline +\end{DoxyParams} + + +Reimplemented from \mbox{\hyperlink{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}{core\+::\+Command}}. + +\mbox{\Hypertarget{classcore_1_1EPoll_a3d813c7bbf0da70ebc8e3cb6aeeacfb4}\label{classcore_1_1EPoll_a3d813c7bbf0da70ebc8e3cb6aeeacfb4}} +\index{core::EPoll@{core::EPoll}!registerSocket@{registerSocket}} +\index{registerSocket@{registerSocket}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{registerSocket()}{registerSocket()}} +{\footnotesize\ttfamily bool core\+::\+E\+Poll\+::register\+Socket (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1Socket}{Socket}} $\ast$}]{socket }\end{DoxyParamCaption})} + + + +Register a B\+M\+A\+Socket for monitoring by B\+M\+A\+E\+Poll. + +Use register\+Socket to add a new socket to the e\+Poll event watch list. This enables a new B\+M\+A\+Socket object to receive events when data is received as well as to write data output to the socket. + + +\begin{DoxyParams}{Parameters} +{\em socket} & a pointer to a B\+M\+A\+Socket object. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +a booelean that indicates the socket was registered or not. +\end{DoxyReturn} +\mbox{\Hypertarget{classcore_1_1EPoll_aaefe2caef75eb538af90cb34682d277b}\label{classcore_1_1EPoll_aaefe2caef75eb538af90cb34682d277b}} +\index{core::EPoll@{core::EPoll}!start@{start}} +\index{start@{start}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{start()}{start()}} +{\footnotesize\ttfamily bool core\+::\+E\+Poll\+::start (\begin{DoxyParamCaption}\item[{int}]{number\+Of\+Threads, }\item[{int}]{max\+Sockets }\end{DoxyParamCaption})} + + + +Start the B\+M\+A\+E\+Poll processing. + +Use the \mbox{\hyperlink{classcore_1_1EPoll_aaefe2caef75eb538af90cb34682d277b}{start()}} method to initiate the threads and begin epoll queue processing. + + +\begin{DoxyParams}{Parameters} +{\em number\+Of\+Threads} & the number of threads to start for processing epoll entries. \\ +\hline +{\em max\+Sockets} & the maximum number of open sockets that epoll will manage. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{classcore_1_1EPoll_a0c2865acd31d14fbf19dbc42cc084ddc}\label{classcore_1_1EPoll_a0c2865acd31d14fbf19dbc42cc084ddc}} +\index{core::EPoll@{core::EPoll}!stop@{stop}} +\index{stop@{stop}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{stop()}{stop()}} +{\footnotesize\ttfamily bool core\+::\+E\+Poll\+::stop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Stop and shut down the B\+M\+A\+E\+Poll processing. + +Use the \mbox{\hyperlink{classcore_1_1EPoll_a0c2865acd31d14fbf19dbc42cc084ddc}{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. \mbox{\Hypertarget{classcore_1_1EPoll_a5ab5e82ab51e0952fc8fbcc128f52900}\label{classcore_1_1EPoll_a5ab5e82ab51e0952fc8fbcc128f52900}} +\index{core::EPoll@{core::EPoll}!unregisterSocket@{unregisterSocket}} +\index{unregisterSocket@{unregisterSocket}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{unregisterSocket()}{unregisterSocket()}} +{\footnotesize\ttfamily bool core\+::\+E\+Poll\+::unregister\+Socket (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1Socket}{Socket}} $\ast$}]{socket }\end{DoxyParamCaption})} + + + +Unregister a B\+M\+A\+Socket from monitoring by B\+M\+A\+E\+Poll. + +Use this method to remove a socket from receiving events from the epoll system. + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classcore_1_1EPoll_acfcef2513d94f7b9a191fed3dc744d90}\label{classcore_1_1EPoll_acfcef2513d94f7b9a191fed3dc744d90}} +\index{core::EPoll@{core::EPoll}!maxSockets@{maxSockets}} +\index{maxSockets@{maxSockets}!core::EPoll@{core::EPoll}} +\doxysubsubsection{\texorpdfstring{maxSockets}{maxSockets}} +{\footnotesize\ttfamily int core\+::\+E\+Poll\+::max\+Sockets} + + + +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\+:\begin{DoxyCompactItemize} +\item +E\+Poll.\+h\item +E\+Poll.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1EPoll__coll__graph.md5 b/latex/classcore_1_1EPoll__coll__graph.md5 new file mode 100644 index 0000000..51b77a8 --- /dev/null +++ b/latex/classcore_1_1EPoll__coll__graph.md5 @@ -0,0 +1 @@ +65b06e5175304b2aa128b1dfbbdb661f \ No newline at end of file diff --git a/latex/classcore_1_1EPoll__coll__graph.pdf b/latex/classcore_1_1EPoll__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..620b21db654961d2c104955d94ac5979465a2b1a GIT binary patch literal 7233 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1INotify__inherit__graph.md5 b/latex/classcore_1_1INotify__inherit__graph.md5 new file mode 100644 index 0000000..155cf05 --- /dev/null +++ b/latex/classcore_1_1INotify__inherit__graph.md5 @@ -0,0 +1 @@ +807497635409383358ebc5447fd98333 \ No newline at end of file diff --git a/latex/classcore_1_1INotify__inherit__graph.pdf b/latex/classcore_1_1INotify__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36a642c348a84420809251d4ad62c260aa584d12 GIT binary patch literal 7507 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 TNLvWXLuFwQAt6m8Ey#ZXG`ScE literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1IPAddress.tex b/latex/classcore_1_1IPAddress.tex new file mode 100644 index 0000000..eb2a5b5 --- /dev/null +++ b/latex/classcore_1_1IPAddress.tex @@ -0,0 +1,56 @@ +\hypertarget{classcore_1_1IPAddress}{}\doxysection{core\+::I\+P\+Address Class Reference} +\label{classcore_1_1IPAddress}\index{core::IPAddress@{core::IPAddress}} + + +Inheritance diagram for core\+::I\+P\+Address\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=172pt]{classcore_1_1IPAddress__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::I\+P\+Address\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=172pt]{classcore_1_1IPAddress__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_a31fb55b1b979f0e8a07446285f9a99f8}\label{classcore_1_1IPAddress_a31fb55b1b979f0e8a07446285f9a99f8}} +{\bfseries I\+P\+Address} (std\+::string address) +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_a37d942b8fae09010adbda33f714808c0}\label{classcore_1_1IPAddress_a37d942b8fae09010adbda33f714808c0}} +{\bfseries I\+P\+Address} (std\+::string address, int port) +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_a095a5ab48cc72161c1614ddfa89ac3ee}\label{classcore_1_1IPAddress_a095a5ab48cc72161c1614ddfa89ac3ee}} +struct sockaddr $\ast$ {\bfseries get\+Pointer} () +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_ae5e7e28589d026bbbc6c3423d418b008}\label{classcore_1_1IPAddress_ae5e7e28589d026bbbc6c3423d418b008}} +std\+::string \mbox{\hyperlink{classcore_1_1IPAddress_ae5e7e28589d026bbbc6c3423d418b008}{get\+Client\+Address}} () +\begin{DoxyCompactList}\small\item\em Get the client network address as xxx.\+xxx.\+xxx.\+xxx. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1IPAddress_abea870f1a048cb7bba1d2bad98558232}\label{classcore_1_1IPAddress_abea870f1a048cb7bba1d2bad98558232}} +std\+::string \mbox{\hyperlink{classcore_1_1IPAddress_abea870f1a048cb7bba1d2bad98558232}{get\+Client\+Address\+And\+Port}} () +\begin{DoxyCompactList}\small\item\em Get the client network address and port as xxx.\+xxx.\+xxx.\+xxx\+:ppppp. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1IPAddress_a39f706f2d43d7d001296ecead4b587e8}\label{classcore_1_1IPAddress_a39f706f2d43d7d001296ecead4b587e8}} +int \mbox{\hyperlink{classcore_1_1IPAddress_a39f706f2d43d7d001296ecead4b587e8}{get\+Client\+Port}} () +\begin{DoxyCompactList}\small\item\em Get the client network port number. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_ac1291bdc515fc5b2c9ba177ddec06454}\label{classcore_1_1IPAddress_ac1291bdc515fc5b2c9ba177ddec06454}} +struct sockaddr\+\_\+in {\bfseries addr} +\item +\mbox{\Hypertarget{classcore_1_1IPAddress_a00856ef1b1deccd0341cd7ea6d1bc8e5}\label{classcore_1_1IPAddress_a00856ef1b1deccd0341cd7ea6d1bc8e5}} +socklen\+\_\+t {\bfseries address\+Length} +\end{DoxyCompactItemize} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +I\+P\+Address.\+h\item +I\+P\+Address.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1IPAddressList.tex b/latex/classcore_1_1IPAddressList.tex new file mode 100644 index 0000000..6922343 --- /dev/null +++ b/latex/classcore_1_1IPAddressList.tex @@ -0,0 +1,23 @@ +\hypertarget{classcore_1_1IPAddressList}{}\doxysection{core\+::I\+P\+Address\+List Class Reference} +\label{classcore_1_1IPAddressList}\index{core::IPAddressList@{core::IPAddressList}} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1IPAddressList_a740cf5f7e2633836b7a741b9f048036f}\label{classcore_1_1IPAddressList_a740cf5f7e2633836b7a741b9f048036f}} +std\+::map$<$ std\+::string, \mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} $>$ {\bfseries get\+List} () +\item +\mbox{\Hypertarget{classcore_1_1IPAddressList_ab98c5a502d8f5cfb4e8c451c48dbc131}\label{classcore_1_1IPAddressList_ab98c5a502d8f5cfb4e8c451c48dbc131}} +void {\bfseries add} (\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} ip\+Address) +\item +\mbox{\Hypertarget{classcore_1_1IPAddressList_a86e9890e15e8e0d87e34f36b637d5c40}\label{classcore_1_1IPAddressList_a86e9890e15e8e0d87e34f36b637d5c40}} +bool {\bfseries remove} (\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} ip\+Address) +\item +\mbox{\Hypertarget{classcore_1_1IPAddressList_add254c996687fd8f9ada0b5335e477cd}\label{classcore_1_1IPAddressList_add254c996687fd8f9ada0b5335e477cd}} +bool {\bfseries contains} (std\+::string ip\+Address) +\end{DoxyCompactItemize} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +I\+P\+Address\+List.\+h\item +I\+P\+Address\+List.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1IPAddress__coll__graph.md5 b/latex/classcore_1_1IPAddress__coll__graph.md5 new file mode 100644 index 0000000..36b9e9f --- /dev/null +++ b/latex/classcore_1_1IPAddress__coll__graph.md5 @@ -0,0 +1 @@ +7f7ac9b55c8d17116ebd1c299b44c348 \ No newline at end of file diff --git a/latex/classcore_1_1IPAddress__coll__graph.pdf b/latex/classcore_1_1IPAddress__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7837edf8b1b79e93cad1a520c2ce593b4864a6f9 GIT binary patch literal 6660 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1IPAddress__inherit__graph.md5 b/latex/classcore_1_1IPAddress__inherit__graph.md5 new file mode 100644 index 0000000..36b9e9f --- /dev/null +++ b/latex/classcore_1_1IPAddress__inherit__graph.md5 @@ -0,0 +1 @@ +7f7ac9b55c8d17116ebd1c299b44c348 \ No newline at end of file diff --git a/latex/classcore_1_1IPAddress__inherit__graph.pdf b/latex/classcore_1_1IPAddress__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f03a26b5c527e06d0be2bbae73dcb435c9feb2d GIT binary patch literal 6660 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Object.tex b/latex/classcore_1_1Object.tex new file mode 100644 index 0000000..0893207 --- /dev/null +++ b/latex/classcore_1_1Object.tex @@ -0,0 +1,25 @@ +\hypertarget{classcore_1_1Object}{}\doxysection{core\+::Object Class Reference} +\label{classcore_1_1Object}\index{core::Object@{core::Object}} + + +Inheritance diagram for core\+::Object\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1Object__inherit__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Object_aa096b2bab35f1019c91077ef3ec106ce}\label{classcore_1_1Object_aa096b2bab35f1019c91077ef3ec106ce}} +std\+::string {\bfseries name} +\item +\mbox{\Hypertarget{classcore_1_1Object_ad503c264c529c41c25528c34421c83df}\label{classcore_1_1Object_ad503c264c529c41c25528c34421c83df}} +std\+::string {\bfseries tag} +\end{DoxyCompactItemize} + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +Object.\+h\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1Object__inherit__graph.md5 b/latex/classcore_1_1Object__inherit__graph.md5 new file mode 100644 index 0000000..680b4ea --- /dev/null +++ b/latex/classcore_1_1Object__inherit__graph.md5 @@ -0,0 +1 @@ +b4f9f6052ab76f7912389463eff07b50 \ No newline at end of file diff --git a/latex/classcore_1_1Object__inherit__graph.pdf b/latex/classcore_1_1Object__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9daceaa09c45acc2633acdd0c908a96ca1560d64 GIT binary patch literal 17063 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 Ukf{u1P;e-MLrO~Tgg(dr0Hxl5TmS$7 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1SessionFilter__inherit__graph.md5 b/latex/classcore_1_1SessionFilter__inherit__graph.md5 new file mode 100644 index 0000000..f79d473 --- /dev/null +++ b/latex/classcore_1_1SessionFilter__inherit__graph.md5 @@ -0,0 +1 @@ +18bd2019d4b8e217560cd8e7622ec59f \ No newline at end of file diff --git a/latex/classcore_1_1SessionFilter__inherit__graph.pdf b/latex/classcore_1_1SessionFilter__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fdbb22f86e8d2e98a96e6c6db8cb9fff43d122bc GIT binary patch literal 6629 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Socket.tex b/latex/classcore_1_1Socket.tex new file mode 100644 index 0000000..0867043 --- /dev/null +++ b/latex/classcore_1_1Socket.tex @@ -0,0 +1,229 @@ +\hypertarget{classcore_1_1Socket}{}\doxysection{core\+::Socket Class Reference} +\label{classcore_1_1Socket}\index{core::Socket@{core::Socket}} + + +{\ttfamily \#include $<$Socket.\+h$>$} + + + +Inheritance diagram for core\+::Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1Socket__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=228pt]{classcore_1_1Socket__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classcore_1_1Socket_a4c3f87fd1de3c9eab4bf5efbb30ce87d}{Socket}} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, std\+::string text=\char`\"{}\char`\"{}) +\item +\mbox{\hyperlink{classcore_1_1Socket_aa5003845f8ae464ad2fa206176381be0}{$\sim$\+Socket}} () +\item +void \mbox{\hyperlink{classcore_1_1Socket_af2d1b6de7a64a9d446b0305b6ec47b31}{shutdown}} (std\+::string text=\char`\"{}unknown\char`\"{}) +\item +void \mbox{\hyperlink{classcore_1_1Socket_ac44f6ae3196a8a3e09a6a85fcf495762}{set\+Descriptor}} (int descriptor) +\begin{DoxyCompactList}\small\item\em Set the descriptor for the socket. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1Socket_a06ba54744530439d4131e6aba4623d08}\label{classcore_1_1Socket_a06ba54744530439d4131e6aba4623d08}} +int \mbox{\hyperlink{classcore_1_1Socket_a06ba54744530439d4131e6aba4623d08}{get\+Descriptor}} () +\begin{DoxyCompactList}\small\item\em Get the descriptor for the socket. ~\newline + \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classcore_1_1Socket_a4c9a3396693ff919eb827729f9e72b03}{event\+Received}} (struct epoll\+\_\+event event) +\begin{DoxyCompactList}\small\item\em Parse epoll event and call specified callbacks. \end{DoxyCompactList}\item +int \mbox{\hyperlink{classcore_1_1Socket_a1413c826307ef0f29d7457770af675e3}{write}} (std\+::string data) +\item +\mbox{\Hypertarget{classcore_1_1Socket_a4855594af113428eacdaa7448d661121}\label{classcore_1_1Socket_a4855594af113428eacdaa7448d661121}} +void {\bfseries write} (char $\ast$buffer, int length) +\item +\mbox{\Hypertarget{classcore_1_1Socket_ad67b0f95127bd987b98323120f40f6ed}\label{classcore_1_1Socket_ad67b0f95127bd987b98323120f40f6ed}} +void {\bfseries output} (std\+::stringstream \&out) +\item +virtual void \mbox{\hyperlink{classcore_1_1Socket_a81e5ee3e17834166d97c6e8b7dfe0da0}{on\+Register}} () +\begin{DoxyCompactList}\small\item\em Called before the socket has registered with the epoll processing. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1Socket_a23b9824653bbe4652a716acb828665b1}\label{classcore_1_1Socket_a23b9824653bbe4652a716acb828665b1}} +virtual void \mbox{\hyperlink{classcore_1_1Socket_a23b9824653bbe4652a716acb828665b1}{on\+Registered}} () +\begin{DoxyCompactList}\small\item\em Called after the socket has been registered with epoll processing. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1Socket_aa1d380db54a5b2efbc859e3744bd898b}\label{classcore_1_1Socket_aa1d380db54a5b2efbc859e3744bd898b}} +virtual void {\bfseries on\+Unregister} () +\item +virtual void \mbox{\hyperlink{classcore_1_1Socket_ae9be59697c2b2e5efb19aaae3ba943d2}{on\+Unregistered}} () +\begin{DoxyCompactList}\small\item\em Called when the socket has finished unregistering for the epoll processing. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1Socket_a43247bfe43c2be5ab3863d9057d46b7c}\label{classcore_1_1Socket_a43247bfe43c2be5ab3863d9057d46b7c}} +bool {\bfseries needs\+To\+Write} () +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Socket_a9f9a89f5caab42f77b3759ceb54a0a78}\label{classcore_1_1Socket_a9f9a89f5caab42f77b3759ceb54a0a78}} +bool {\bfseries reset} = false +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Socket_a71c77a162698b9c074a7497beab7b5d8}\label{classcore_1_1Socket_a71c77a162698b9c074a7497beab7b5d8}} +void {\bfseries set\+Buffer\+Size} (int length) +\item +\mbox{\Hypertarget{classcore_1_1Socket_aa9195676bb7ecbec167ecf5336921cbb}\label{classcore_1_1Socket_aa9195676bb7ecbec167ecf5336921cbb}} +int {\bfseries get\+Buffer\+Size} () +\item +virtual void \mbox{\hyperlink{classcore_1_1Socket_ac8d6a2c54696eb6fc2024cf6bcf6b4e5}{on\+Data\+Received}} (std\+::string data) +\begin{DoxyCompactList}\small\item\em Called when data is received from the socket. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1Socket_af6c06db2441633ae9979affe72930abc}\label{classcore_1_1Socket_af6c06db2441633ae9979affe72930abc}} +virtual void {\bfseries on\+Data\+Received} (char $\ast$buffer, int len) +\item +virtual void \mbox{\hyperlink{classcore_1_1Socket_af455ec6f793473f529507af26aa54695}{receive\+Data}} (char $\ast$buffer, int buffer\+Length) +\end{DoxyCompactItemize} +\doxysubsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Socket_a3b0b139ac7da581f0d969f6ae9a0c97c}\label{classcore_1_1Socket_a3b0b139ac7da581f0d969f6ae9a0c97c}} +\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \& {\bfseries e\+Poll} +\item +\mbox{\Hypertarget{classcore_1_1Socket_aa09db6c6298d20ea76c6e65f8bffd3dc}\label{classcore_1_1Socket_aa09db6c6298d20ea76c6e65f8bffd3dc}} +bool {\bfseries shut\+Down} = false +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1Socket}{Socket}} + +The core component to managing a socket. + +Hooks into the \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} 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 \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} object and also provides buffering for output data requests to the socket. ~\newline + + +A program using a socket object can request to open a socket (network or device) and communicate through the streambuffer interface of the socket object. + +The socket side of the \mbox{\hyperlink{classcore_1_1Socket}{Socket}} accepts E\+P\+O\+L\+L\+IN event and will maintain the data in a buffer for the stream readers to read. A on\+Data\+Received event is then sent with the data received in the buffer that can be read through the stream. Only sockets that send events to epoll can be used with this object. + +When writing to the stream the data is written into a buffer and a E\+P\+O\+L\+L\+O\+UT is scheduled. Upon receiving the E\+P\+O\+L\+L\+O\+UT event then the buffer is written to the socket output. + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classcore_1_1Socket_a4c3f87fd1de3c9eab4bf5efbb30ce87d}\label{classcore_1_1Socket_a4c3f87fd1de3c9eab4bf5efbb30ce87d}} +\index{core::Socket@{core::Socket}!Socket@{Socket}} +\index{Socket@{Socket}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{Socket()}{Socket()}} +{\footnotesize\ttfamily core\+::\+Socket\+::\+Socket (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&}]{e\+Poll, }\item[{std\+::string}]{text = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})} + +Constructor + + +\begin{DoxyParams}{Parameters} +{\em e\+Poll} & The \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} socket descriptor. \\ +\hline +{\em text} & A title for this socket. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{classcore_1_1Socket_aa5003845f8ae464ad2fa206176381be0}\label{classcore_1_1Socket_aa5003845f8ae464ad2fa206176381be0}} +\index{core::Socket@{core::Socket}!````~Socket@{$\sim$Socket}} +\index{````~Socket@{$\sim$Socket}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{$\sim$Socket()}{~Socket()}} +{\footnotesize\ttfamily core\+::\+Socket\+::$\sim$\+Socket (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Destructor + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1Socket_a4c9a3396693ff919eb827729f9e72b03}\label{classcore_1_1Socket_a4c9a3396693ff919eb827729f9e72b03}} +\index{core::Socket@{core::Socket}!eventReceived@{eventReceived}} +\index{eventReceived@{eventReceived}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{eventReceived()}{eventReceived()}} +{\footnotesize\ttfamily bool core\+::\+Socket\+::event\+Received (\begin{DoxyParamCaption}\item[{struct epoll\+\_\+event}]{event }\end{DoxyParamCaption})} + + + +Parse epoll event and call specified callbacks. + +The event received from epoll is sent through the event\+Received method which will parse the event and call the read and write callbacks on the socket. + +This method is called by the B\+M\+A\+E\+Poll object and should not be called from any user extended classes unless an epoll event is being simulated. \mbox{\Hypertarget{classcore_1_1Socket_ac8d6a2c54696eb6fc2024cf6bcf6b4e5}\label{classcore_1_1Socket_ac8d6a2c54696eb6fc2024cf6bcf6b4e5}} +\index{core::Socket@{core::Socket}!onDataReceived@{onDataReceived}} +\index{onDataReceived@{onDataReceived}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{onDataReceived()}{onDataReceived()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::on\+Data\+Received (\begin{DoxyParamCaption}\item[{std\+::string}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + + + +Called when data is received from the socket. + +The on\+Connected 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. The on\+Data\+Received 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. E\+P\+O\+L\+L\+IN + + +\begin{DoxyParams}{Parameters} +{\em data} & the data that has been received from the socket. \\ +\hline +\end{DoxyParams} + + +Reimplemented in \mbox{\hyperlink{classcore_1_1TCPServer_a276ccbc8cb9b4380ebd78807b97f0159}{core\+::\+T\+C\+P\+Server}}, and \mbox{\hyperlink{classcore_1_1UDPServerSocket_a41933ca153c854a800e3d047ab18313e}{core\+::\+U\+D\+P\+Server\+Socket}}. + +\mbox{\Hypertarget{classcore_1_1Socket_a81e5ee3e17834166d97c6e8b7dfe0da0}\label{classcore_1_1Socket_a81e5ee3e17834166d97c6e8b7dfe0da0}} +\index{core::Socket@{core::Socket}!onRegister@{onRegister}} +\index{onRegister@{onRegister}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{onRegister()}{onRegister()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::on\+Register (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + + +Called before the socket has registered with the epoll processing. + +The on\+Register method is called before the socket is registered with e\+Poll so objects extending the \mbox{\hyperlink{classcore_1_1Socket}{Socket}} definition can initialize the socket before receiving events. Evoked when the descriptor is set using set\+Descriptor for the socket. + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_a76cec7cf4851eb27abe77a2339344c6d}{core\+::\+T\+L\+S\+Session}}. + +\mbox{\Hypertarget{classcore_1_1Socket_ae9be59697c2b2e5efb19aaae3ba943d2}\label{classcore_1_1Socket_ae9be59697c2b2e5efb19aaae3ba943d2}} +\index{core::Socket@{core::Socket}!onUnregistered@{onUnregistered}} +\index{onUnregistered@{onUnregistered}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{onUnregistered()}{onUnregistered()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::on\+Unregistered (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + + +Called when the socket has finished unregistering for the epoll processing. + +The on\+Unregistered method is called whenever the socket is unregistered with e\+Poll 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. \mbox{\Hypertarget{classcore_1_1Socket_af455ec6f793473f529507af26aa54695}\label{classcore_1_1Socket_af455ec6f793473f529507af26aa54695}} +\index{core::Socket@{core::Socket}!receiveData@{receiveData}} +\index{receiveData@{receiveData}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{receiveData()}{receiveData()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::receive\+Data (\begin{DoxyParamCaption}\item[{char $\ast$}]{buffer, }\item[{int}]{buffer\+Length }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +receive\+Data will read the data from the socket and place it in the socket buffer. T\+LS layer overrides this to be able to read from S\+SL. + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_a1822cb21de545dc1a183ec0bac6cc4f0}{core\+::\+T\+L\+S\+Session}}. + +\mbox{\Hypertarget{classcore_1_1Socket_ac44f6ae3196a8a3e09a6a85fcf495762}\label{classcore_1_1Socket_ac44f6ae3196a8a3e09a6a85fcf495762}} +\index{core::Socket@{core::Socket}!setDescriptor@{setDescriptor}} +\index{setDescriptor@{setDescriptor}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{setDescriptor()}{setDescriptor()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::set\+Descriptor (\begin{DoxyParamCaption}\item[{int}]{descriptor }\end{DoxyParamCaption})} + + + +Set the descriptor for the socket. + +set\+Descriptor establishes the file descriptor for the socket and registers the socket on the \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} controller. set\+Descriptor will invoke the \mbox{\hyperlink{classcore_1_1Socket_a81e5ee3e17834166d97c6e8b7dfe0da0}{on\+Register()}} event. \mbox{\Hypertarget{classcore_1_1Socket_af2d1b6de7a64a9d446b0305b6ec47b31}\label{classcore_1_1Socket_af2d1b6de7a64a9d446b0305b6ec47b31}} +\index{core::Socket@{core::Socket}!shutdown@{shutdown}} +\index{shutdown@{shutdown}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{shutdown()}{shutdown()}} +{\footnotesize\ttfamily void core\+::\+Socket\+::shutdown (\begin{DoxyParamCaption}\item[{std\+::string}]{text = {\ttfamily \char`\"{}unknown\char`\"{}} }\end{DoxyParamCaption})} + +Use the \mbox{\hyperlink{classcore_1_1Socket_af2d1b6de7a64a9d446b0305b6ec47b31}{shutdown()}} method to terminate the socket connection and remove resources. This method is provided to ensure that all destructors are called for all inherited objects without a virtual destructor. \mbox{\Hypertarget{classcore_1_1Socket_a1413c826307ef0f29d7457770af675e3}\label{classcore_1_1Socket_a1413c826307ef0f29d7457770af675e3}} +\index{core::Socket@{core::Socket}!write@{write}} +\index{write@{write}!core::Socket@{core::Socket}} +\doxysubsubsection{\texorpdfstring{write()}{write()}} +{\footnotesize\ttfamily int core\+::\+Socket\+::write (\begin{DoxyParamCaption}\item[{std\+::string}]{data }\end{DoxyParamCaption})} + +Write data to the socket. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Socket.\+h\item +Socket.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1Socket__coll__graph.md5 b/latex/classcore_1_1Socket__coll__graph.md5 new file mode 100644 index 0000000..7805edf --- /dev/null +++ b/latex/classcore_1_1Socket__coll__graph.md5 @@ -0,0 +1 @@ +8972ad3d81c6154d568a5e7384a0c2ba \ No newline at end of file diff --git a/latex/classcore_1_1Socket__coll__graph.pdf b/latex/classcore_1_1Socket__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5388a3ca37e92a60a12457707c16b2392ebb3468 GIT binary patch literal 8268 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Socket__inherit__graph.md5 b/latex/classcore_1_1Socket__inherit__graph.md5 new file mode 100644 index 0000000..5f8ac40 --- /dev/null +++ b/latex/classcore_1_1Socket__inherit__graph.md5 @@ -0,0 +1 @@ +140b9c232187e83dc49f10083bb844ae \ No newline at end of file diff --git a/latex/classcore_1_1Socket__inherit__graph.pdf b/latex/classcore_1_1Socket__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..46b2ea4b824435b6de068b3d7cc84be1cb1a374c GIT binary patch literal 13728 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TCPServer.tex b/latex/classcore_1_1TCPServer.tex new file mode 100644 index 0000000..9d5ac0f --- /dev/null +++ b/latex/classcore_1_1TCPServer.tex @@ -0,0 +1,183 @@ +\hypertarget{classcore_1_1TCPServer}{}\doxysection{core\+::T\+C\+P\+Server Class Reference} +\label{classcore_1_1TCPServer}\index{core::TCPServer@{core::TCPServer}} + + +{\ttfamily \#include $<$T\+C\+P\+Server.\+h$>$} + + + +Inheritance diagram for core\+::T\+C\+P\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=304pt]{classcore_1_1TCPServer__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::T\+C\+P\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TCPServer__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classcore_1_1TCPServer_a418924164fd6e59800272fbd6f069bb9}{T\+C\+P\+Server}} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} address, std\+::string text=\char`\"{}\char`\"{}) +\item +\mbox{\hyperlink{classcore_1_1TCPServer_a7ccdc057c9eee8504fce796301f82088}{$\sim$\+T\+C\+P\+Server}} () +\item +\mbox{\Hypertarget{classcore_1_1TCPServer_a88c603cd5df9dbc1632fd4b5e164d75b}\label{classcore_1_1TCPServer_a88c603cd5df9dbc1632fd4b5e164d75b}} +void {\bfseries remove\+From\+Session\+List} (\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session) +\item +\mbox{\Hypertarget{classcore_1_1TCPServer_a554ec6e67d368e7bb545d95635c0a0df}\label{classcore_1_1TCPServer_a554ec6e67d368e7bb545d95635c0a0df}} +virtual void {\bfseries session\+Error\+Handler} (std\+::string error\+String, std\+::stringstream \&out) +\item +virtual \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ \mbox{\hyperlink{classcore_1_1TCPServer_a841f02799ad8529aad7cea132f4de8a9}{get\+Socket\+Accept}} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&epoll) +\item +\mbox{\Hypertarget{classcore_1_1TCPServer_a120d5031360cc62251bdc43fa2d9813a}\label{classcore_1_1TCPServer_a120d5031360cc62251bdc43fa2d9813a}} +void \mbox{\hyperlink{classcore_1_1TCPServer_a120d5031360cc62251bdc43fa2d9813a}{output}} (\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session) +\begin{DoxyCompactList}\small\item\em Output the consoles array to the console. \end{DoxyCompactList}\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classcore_1_1IPAddressList}{I\+P\+Address\+List}} $\ast$ \mbox{\hyperlink{classcore_1_1TCPServer_a82f6bf16e4ab20d8b30da09e034fffff}{black\+List}} +\item +\mbox{\hyperlink{classcore_1_1IPAddressList}{I\+P\+Address\+List}} $\ast$ \mbox{\hyperlink{classcore_1_1TCPServer_abad6300b6234ca8b69cef9128755342e}{white\+List}} +\item +std\+::vector$<$ \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ $>$ \mbox{\hyperlink{classcore_1_1TCPServer_aeed1bc55d099667ccda51cd682bfc633}{sessions}} +\item +\mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} \mbox{\hyperlink{classcore_1_1TCPServer_afcc44802b988e2f4292504e804dccf8b}{commands}} +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classcore_1_1TCPServer_a276ccbc8cb9b4380ebd78807b97f0159}{on\+Data\+Received}} (std\+::string data) override +\item +int \mbox{\hyperlink{classcore_1_1TCPServer_a93f64f81bc63f145799af91138a064dc}{process\+Command}} (std\+::string command, \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$session, std\+::stringstream \&data) override +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} + +Manage a socket connection as a T\+CP 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 B\+M\+A\+Command object as well so it can be added to a Console object and process commands to display status information. + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classcore_1_1TCPServer_a418924164fd6e59800272fbd6f069bb9}\label{classcore_1_1TCPServer_a418924164fd6e59800272fbd6f069bb9}} +\index{core::TCPServer@{core::TCPServer}!TCPServer@{TCPServer}} +\index{TCPServer@{TCPServer}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{TCPServer()}{TCPServer()}} +{\footnotesize\ttfamily core\+::\+T\+C\+P\+Server\+::\+T\+C\+P\+Server (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&}]{e\+Poll, }\item[{\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}}}]{address, }\item[{std\+::string}]{text = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})} + +The constructor for the B\+M\+A\+T\+C\+P\+Socket object. + + +\begin{DoxyParams}{Parameters} +{\em e\+Poll} & the \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} instance that manages the socket. \\ +\hline +{\em url} & the IP address for the socket to receive connection requests. \\ +\hline +{\em port} & the port number that the socket will listen on. \\ +\hline +{\em command\+Name} & the name of the command used to invoke the status display for this object. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +the instance of the B\+M\+A\+T\+C\+P\+Server\+Socket. +\end{DoxyReturn} +\mbox{\Hypertarget{classcore_1_1TCPServer_a7ccdc057c9eee8504fce796301f82088}\label{classcore_1_1TCPServer_a7ccdc057c9eee8504fce796301f82088}} +\index{core::TCPServer@{core::TCPServer}!````~TCPServer@{$\sim$TCPServer}} +\index{````~TCPServer@{$\sim$TCPServer}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{$\sim$TCPServer()}{~TCPServer()}} +{\footnotesize\ttfamily core\+::\+T\+C\+P\+Server\+::$\sim$\+T\+C\+P\+Server (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +The destructor for this object. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1TCPServer_a841f02799ad8529aad7cea132f4de8a9}\label{classcore_1_1TCPServer_a841f02799ad8529aad7cea132f4de8a9}} +\index{core::TCPServer@{core::TCPServer}!getSocketAccept@{getSocketAccept}} +\index{getSocketAccept@{getSocketAccept}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{getSocketAccept()}{getSocketAccept()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ core\+::\+T\+C\+P\+Server\+::get\+Socket\+Accept (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&}]{epoll }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +get\+Socket\+Accept 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 \mbox{\hyperlink{classcore_1_1ConsoleServer_a80d9ea7f3fc5e07c50d5b9e0d4943ca8}{core\+::\+Console\+Server}}. + +\mbox{\Hypertarget{classcore_1_1TCPServer_a276ccbc8cb9b4380ebd78807b97f0159}\label{classcore_1_1TCPServer_a276ccbc8cb9b4380ebd78807b97f0159}} +\index{core::TCPServer@{core::TCPServer}!onDataReceived@{onDataReceived}} +\index{onDataReceived@{onDataReceived}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{onDataReceived()}{onDataReceived()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Server\+::on\+Data\+Received (\begin{DoxyParamCaption}\item[{std\+::string}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +Override the virtual data\+Received 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 + + +\begin{DoxyParams}{Parameters} +{\em data} & the pointer to the buffer containing the received data. \\ +\hline +{\em length} & the length of the associated data buffer. \\ +\hline +\end{DoxyParams} + + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket_ac8d6a2c54696eb6fc2024cf6bcf6b4e5}{core\+::\+Socket}}. + +\mbox{\Hypertarget{classcore_1_1TCPServer_a93f64f81bc63f145799af91138a064dc}\label{classcore_1_1TCPServer_a93f64f81bc63f145799af91138a064dc}} +\index{core::TCPServer@{core::TCPServer}!processCommand@{processCommand}} +\index{processCommand@{processCommand}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{processCommand()}{processCommand()}} +{\footnotesize\ttfamily int core\+::\+T\+C\+P\+Server\+::process\+Command (\begin{DoxyParamCaption}\item[{std\+::string}]{command, }\item[{\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$}]{session, }\item[{std\+::stringstream \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +This method is called when the \mbox{\hyperlink{classcore_1_1Command}{Command}} associated with this object is requested because a user has typed in the associated command name on a command entry line. + + +\begin{DoxyParams}{Parameters} +{\em the} & session object to write the output to. \\ +\hline +\end{DoxyParams} + + +Reimplemented from \mbox{\hyperlink{classcore_1_1Command_a068ebc22f7a067cf23ed2c17f95b06e9}{core\+::\+Command}}. + + + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classcore_1_1TCPServer_a82f6bf16e4ab20d8b30da09e034fffff}\label{classcore_1_1TCPServer_a82f6bf16e4ab20d8b30da09e034fffff}} +\index{core::TCPServer@{core::TCPServer}!blackList@{blackList}} +\index{blackList@{blackList}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{blackList}{blackList}} +{\footnotesize\ttfamily \mbox{\hyperlink{classcore_1_1IPAddressList}{I\+P\+Address\+List}}$\ast$ core\+::\+T\+C\+P\+Server\+::black\+List} + +If not N\+U\+LL 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. \mbox{\Hypertarget{classcore_1_1TCPServer_afcc44802b988e2f4292504e804dccf8b}\label{classcore_1_1TCPServer_afcc44802b988e2f4292504e804dccf8b}} +\index{core::TCPServer@{core::TCPServer}!commands@{commands}} +\index{commands@{commands}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{commands}{commands}} +{\footnotesize\ttfamily \mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} core\+::\+T\+C\+P\+Server\+::commands} + +The commands object is a \mbox{\hyperlink{classcore_1_1CommandList}{Command\+List}} and is used to store \mbox{\hyperlink{classcore_1_1Command}{Command}} objects to be parsed and run as data comes into the session. \mbox{\Hypertarget{classcore_1_1TCPServer_aeed1bc55d099667ccda51cd682bfc633}\label{classcore_1_1TCPServer_aeed1bc55d099667ccda51cd682bfc633}} +\index{core::TCPServer@{core::TCPServer}!sessions@{sessions}} +\index{sessions@{sessions}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{sessions}{sessions}} +{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$$>$ core\+::\+T\+C\+P\+Server\+::sessions} + +The list of sessions that are currently open and being maintained by this object. \mbox{\Hypertarget{classcore_1_1TCPServer_abad6300b6234ca8b69cef9128755342e}\label{classcore_1_1TCPServer_abad6300b6234ca8b69cef9128755342e}} +\index{core::TCPServer@{core::TCPServer}!whiteList@{whiteList}} +\index{whiteList@{whiteList}!core::TCPServer@{core::TCPServer}} +\doxysubsubsection{\texorpdfstring{whiteList}{whiteList}} +{\footnotesize\ttfamily \mbox{\hyperlink{classcore_1_1IPAddressList}{I\+P\+Address\+List}}$\ast$ core\+::\+T\+C\+P\+Server\+::white\+List} + +If not N\+U\+LL 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\+:\begin{DoxyCompactItemize} +\item +T\+C\+P\+Server.\+h\item +T\+C\+P\+Server.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TCPServer__coll__graph.md5 b/latex/classcore_1_1TCPServer__coll__graph.md5 new file mode 100644 index 0000000..a2b9455 --- /dev/null +++ b/latex/classcore_1_1TCPServer__coll__graph.md5 @@ -0,0 +1 @@ +c2f920e944c957d37b6ae81996f8f831 \ No newline at end of file diff --git a/latex/classcore_1_1TCPServer__coll__graph.pdf b/latex/classcore_1_1TCPServer__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..34667a09e04b71bba04a0029f4dad5546c3b1df1 GIT binary patch literal 12384 zcmd6Nby$>J_qL>jgfvJDUBWOk%n*WfN_XP`L+3E0gwoy8AyT4%AW}+5gOVa5Eg*s@ zfnJJ)suvLZL|S?!hML&xgt1GyW6qs{x#)F%Rf;0(s0r^2b88sb=gK`R?;Muq!%|K8I0E0iP0x?cEK_H- zr(2l{s|u5Ijf<4WC)dUwZ>;hK>`XZNTy#}Vot(ba_{Hb`6+Qz{-rms zJ3T#M`BFh&KLj`X23a~ckA4@MO3wDNJl&73c& zYZUnpRxcz=3=>*|ZE;VvDZRzt{2EHk%g?Gbe5xM*65*cu3ywt}^&Ww}N=FL12|LR$ zctI&#@yu5Bh0N#Yr6`i`hLWWFme5NYcDLyl<~GxpjcP;oqvt{%AEc{{b z@(SLE@ri{oh%V_CXGT(XDVdVLgr~5?nT+UXy*^myh8eeLX@>je=ooAZY6+Y=qdDR1 zCv(XVY!sdU|2%IB$*ys^DupibgU#Le-LKfu?tC+^}!!saw4-P_02S4g`?g-(qzn(ZS@ zA$_)#nT&RCq>;Maf2I76IrQ9oOV4!#vy6w9osI7dVM4wg+e@(_qFa;%J2itt!o# zJJD=ywX`d$f;e$gIGKu~=J_qSbdDp0^R_+29Nsiz*=?^-6GKl3H_zeF>*7V?!3Xks z-y3+1n>|#%QoEX`SmO`3Q*76GMfDXe;kl=*e|jYHJ)Wb!SF2*B2v{TGGnES|mrMt) zbrHV7`Pa%CiE+8t?2EH*d}P37hZ0*F-f-mb&XU`^fKfCQIsKB;e~iylwCq*oB=Khv zacL6p}FAD`#@h(j%%}HIdY=&U&AGpQ{hlcq(s|${Ny8 z`e(~OffpV~Kb(*w!)XC^hj!2^lh2LJrkBu>Q20ddJ0x9hYtU!L$F6R=zC7g}v zSrFm2=L-s={zp{pgr~0Otn6*>uHT%KrBB@HVO79Yq=P6|jMEYv*oGx^D?A-EziXLt z6xjK4l_so)qtVry>nwGg(g()Vr$|B%u{P325Oa@*jA|4+t3WiUuy9SdULv4y1tNyK~@f7NML)`x7UOK8g%g?xz3OBu;_$=KL zlyg(MBs}gJ!HVAIm?g|xIxTR zs!`u301vpYt!?oyAZr7q!%Zu*?%L;K52P7qh6#ySFQUpkVzzT982ncM81pWhd2*~*UAFS-*j`>B~UPwep1OyTN zX~+OA;O}R1@IRUZfeivYQ6R9KySoSGq-}j48_bDF!^z#{y99&wvBl^h(I}t^krR=w z57JJ@!^s`v4KfEoA#hV0{qSP*3e=3W$RExNKdK-rlwzXp}X?8e*WJqwitsg2D(pV%%K$ zv6?>slGi`M&lni`Md0%X7Kr~H3&_cU{)z<%A`S;ZC4gc52%#cC8Up-)@NXELWd2b8 zmoWG*0TBD&0f7D;00;yMECHB=C@_4n-(sS`YW$vyjr|4$AO@XeivtS+DEcn}p>5*~ zEVh5V62$*^AYlIi2w?VMFfkBROybWFE_SjiU_kgg09a)}_*3~`0zkpT%?;^p_m2^f z_}>u_{W}7pBEU9~0CqX_j}Qit00Clb@Z0!*$bPE+OT$;wk+ZWyqrAQUDF9HB{~ZAM z-vNL^5FjW50)mQ*{uzn`X{;Owe}mws@Tc;>gn^QdhpX#99{-_oDw24nMYnhLiU{J`kY4J{ta)W>W0$XuuHI z^AKw$Ma2-m$FO$rd+uM&Bp^O9lcHik2o(L7(D-9#{8xBjAB(Zq6?0&4KOd2Q-Y~FN z3hW~@)|_HPtX08=*h3W?VviPV2*GYKJrc{G_V@1?>mVIaAa2li?`h1fcQTZI7{ z>F(``z2evg{1mH!fQt|6XG#IkQbhSW*`oARFdl+eRh!c=s&cuZmf`L@Oyqf(*u% zU-KQ5Fn^r7g}TX+s~?+FSuB?cDk(3!k;9*pQ^}Y+tu%gK4d$~^hLD*4tT5z6n8@V9 z6ftbRhHLaGH=tss)_T0!t=^3j#*hAFef2I1leN*F(<>~h6|Sj+wjg%~+ckD&rl zp2$w|>6KaSetT-F=judmLIQ;$i)C$#qLfr0@J7rKM+*c>b+$YF`)%ndV|QTXn!<;# zJ`8VBQyqvm?&Mq}OX}RPshYBtcIpeJ7_n~TdL{K-ru$3R6$i}%sq@Y~Y{an-NZ%fR zNgLKLK69=ZtP@S#)D3X5UI7By0~dchK9h~Cdg0$N$bQ$#E69&~-h(*SS20WJZd^?)9frea zuY5tVca!AF(E7xbTR+J-3l}@*8R0~K#J9;373<+p-=0mdhHE<8Q!4|;`W%N%4b3*s zjc1Y1o^7hBeYSV5(8^s=qRWw^FN(*Qs){qdrZC*dFCAg>6iybAPRvMRu{^!UT+8L< zXtzqw4n?Jc>#Q-iya}tG*xsDi@OH5i_l`P~L`+hN1gFUKCMhBW%>Z|M!lYUwj;?$*~o z(#h`|FP|S_jjA`L4am@!>7ncxV|HLNKj*bOS)PEAY<(^jI45`WtPCqNtJc@0kif-| zm80UGSM1~)msux~AM@fg^EAq1Q(kI4DpAwfpK>$Sx^H>bp{XgKwz4m0)TslMrUaY0 z#1@*dDe+a<`?^*U=R<$P{q(37#TnHHPp-Xw`V1u;6&MoA9qgfcpEuVhS1l+Sb*Px_ z$ivaH{&d-wBd;<%tv4&q-YUeR{XARwD#qXd1zCMp`fwF;kSfKSJTLv`a|%0#x9zKNx5e7)oN|@li>Rrrl+JnKLUkXorI2xzb%*?J$(BWlL8Ep0R^0u@y~5jkq0Vn3 zlVuKWx}AGmhU?=Ed(539waj+89{Mn{H(*(mT7P(GCH9IrrGj-2SArDuUGzDf`K;uK5rhQm;&BEQ6l`!UpBLa2hc%a= z<-!yib>8=%N=wTQB?&^7qohQWI7o?O=hN!LZpR0e6)&OYvm*%mqlY9U-b5O&xdrdX z%M570D$B9Xx-KfcjSlYpk_KKVTUwm|q*AxK*&h6uHCJ+&Iw#P5v1Rn>!~$D>)92K$ z^no0KEDK)u>+*^z#ER!G1>or3nkYIWNuU2FgLs8Nqtm{C5(UEh7^QqLuZvYsy3%8 z;`%+bQD32*dA9vK4_s=$k~=YBd<%(~68@B~m4@?aO5UL83YP$`Wb(*jDeW`5hchP7 z%%tcKQr3bTN}pMqqqXT_8Mto30V$cX#6^OvMwuzx_o)N|%J__LtHCXwJnxol*QzpX zjHSPBwpqJd`MhRcDpljmu;{qPM%x>rw!DR4#f8Z(QZtqA5f`Fc1;^H$ z+UNDMf8J#Ry>zy6#>A+n+{OEaR9&`V9Pj)wng$3yW;4G*5aqQJf>ZzW*%dc(2ZRl-zQJoOq&m+%s8^n6nSsIoF1m7 zwJ8a5L78i=#_Z%>yi6eYW|(W8?M#Oc`R2qUeekl=^>hQ%BGGM8C>J%yJUO1Wd1#M* z?u$3eA9CiFio>*3FM?i*-eF$)`EC zGS02?1n|zwS6mKYSA7!lnbv%JPKc{71^=0;f`-r8_p9vJ)*DiL-n7EIZaeA*)b*)3 zFfbH7f9Bs%Jm~dV{Y!gT^S$O=aapw+=^MD-&a$`k{X{a`X4v6o_pUSMER0nDl^pIzx!3i_4n33(_u{UFA7z8_8;J5h1|-B=x!)Rfggc+URV&2&!bOwaU!R+^e;(>wd< z(c^4Ma8$;U5f%AaM7sTltFM{n$fm^u2r0}c1cDS+CZFHw(=Ab~-*M&CYLSsfNDI%W zvlbPm6lUkWOWx@}kUsVg4U>V$AY_CW)7grOQi`&REb?2q8aZmZ^v_zS)^d3nqBYUp zXp5<5HENdBB+DdH1Rn^9d%b!Km-m+=?lnWTO@mD3dwPl#W5veX9c`5PW`*ANUCbdi zmGi1JmD8d1*>nS@Z0$-SI}setSv!B(?}cUv&1~OzPAlt>|AYF(8y6%X81Tr+T}BLijaYj zQfj7+;Qij5GV_N^(Z&oW&9%-Bmh+E{*V+Rz+#pFV6Ur;i+u7x`A@ht1TCyyDm={(C zEOiezA{ysdZ@92C2U9*Y^fM#uC&cSdNO;>gwGEq{fL-YA!bDSxm0LpKPx12buI0~@ zYTs`vGHHIe$-uPK=;jzxn>>G%T<#W`{st76luw>}e!ig3aR6_H{sGepJ!txFx-ml{ zd;SHp@J0`O4{|*607`O+Omgwhvri+fU&Z6r>A6zHA>9{Nw%P?p8cPXx#*weont2ow z=e9Zsf`#75)7{SN)W9g8YHJs6wh_(6h`1>C%i=oIMyi~p7d2cWn(g5l$`qbs9rG_A zJmAFmbtN^EzqGuX#7D!XSe#D@O_EZK8$@#$+=dW9BodVG)nS;QG}+Mfzn+MGA@6^6 zRDaEd7Q-)CUt_DS0H;u)fsf-JU+J?^>WEerTrWR2d|? zu40e8=yzsEAje`OpfLBXy~ZyXz3{Hn55EPcA|Rg{@(q~ z+1%Ia-g`uES*PaHsfyB4GA!JMn=;IwxM_vs_0iPZ;0V5WM9%*5s%lJ_W6V-r`K$XG za~W#ncR05^x-c1_%&9N)>N_>)* zRcp`;`L`sWqN8?4@aX(x+t>B+<6`1nR&8VV7i&ALj~_FI_HPGStLjZICtg^Qw4vi1 zv5JyJv9}$$m&Ki9j5g}EMvyw|LAG8#Puef-9GkoRuBg4=R$(xL>Ct=uTl7pLpKp~= z-qBbfjE5fTab-4gvvX&$C;FP4ER{8{OU~I37EO2^!{e1(y*Ewy%NxK0#))fC_aih*0+Sy!hM9k(1^-=QT!^rJ@)&XW)BSo&cKbiUP7UM9C6u~Z%X;?w!9 zvC%Rv;H!3R;c>&0H#$%{g-_=b=BpFFM8`qmL~=BP5~lHOhv;DE6moiPj4+1!1j?nk zr79__KiYvpAZA$fKLp+*iqw;ER^}H7MzSn&TbYZE3;iYw`UrX%eR+&~K zw&1mGvx*NyaMsMr*&d{l(&sYYN?fJwpGi2IlytUJ@sWMPJJ0ydu*f=*RL2o01xi7w zaN46ieV)HB`_u4V{a2;b0304-QpL(!m$mDCY!X`vC*v3EZMO?!Xov7gnuzM{Axlp- z>{BWGN)+$YxuH$xjMzTtf-gnkzo(8>zqv7yrm6NCKYl8gEZCn-Xg1e<)K&qM{PjR~ z$@uWL^*K8xJ65|7vq!$1Z46I79(v15Px)^AIHe0cFUCFzk zpr-xL`}z9?#Ic*3ecz%>qmoJqUUb~5m!bJue|PWO+xTVHwKsteuDSQdyznqx` zhK?V_?aI~2OkFV$c)q^&8;$cDr&4#B;Dmhcw^!@g?Kq|5g9<>4>HU{Q1(hNP?37f$ zK`h?Vj96>G_T(7RgQcFQolOaxb5Y-BByH=NzU-tdD9BziNJqeKyt6DE)zkQt^S+v? zrt^SPGpT)dKZbbkqgxP>=`=eIA4t$^bEl8FEJj#%AyLn!YUK3?+y@0gy`<0hn|Egk zRhrkV5L6NZ96SD_`pg6Rp%3r{QuRv2GV}GKKZxch3*L%Pagn!|qsxi4=C-4sRtS`X zo5l(f92kCy+wyu%cr5X;HLd3IV!FOaOlb;72mvbbb>m&UHq}vo6`@aLLRCA95aHv3 z55#SO$NKPv;=ZZ0L$leiec3Blj>TDp`ljNt&9#+-ugp8JzdFuH$LY>`r0Llkgeip7;URkkp|lq@9chN4;)S-a+Ipoo=F} zXD&0nuwLieLCqkTb8*&ZLw8Q^S~r;|?%zzLuXzinQY~?Pt#d;>B<%--$P3l&i7!Zu z+#AeuW#s6dOY*QSyqAyw?^`*JeHDVvK9sE(>&3|Eo3LIXC3(ro+P5Vie4uycY^dJN z3=Y(FXQRD4q2md6q7iy`AS}=Z{FVX?|kF0b%4Z!6_CkKtOEcCJxfOy71QJRBq_GUyHbF~}@Gb6ZaIFgjw7yOnook4nq1dyv{|xio^>YulZWIm;6h zE1cB#XcjpJT8fEi;%enzs*MoiVovkak#CE@quPC|WBi`lhYI&DXV@kG;6=p`UvT`} z61J`k^X_VXZtA`$6FPkQ3U{j+*%hvLnL2_?w8RfdmQWYo%`H)1AVv23R=ijW-_-Ia zjt!|KXjJpp?J^<;izDMB*2HFeKQY!$laJEMlaW_eMrl$ZF1pa31VE6iRF8lLV+r!uO}=QCot zYKRJ2rM_5)=BWDoi8rWLzUw2Ztrt!FB(QrcWq5HO_xdHFn@)EQzX*i+4}BPzEoQ|%HZj-)DA&*ng) z$!YFCnm5YkThbz?=1O35pj$D&oX;3SO~)USj$_N6&{@!bCSu&3L5ao206ziK$0XxoLD)7>xTES0<8BR8rj+fh&A?kLHgS{()^7it9-ksiV(^?^H4os%M}U3X2u zAMVgG_@8oTBo85Op>l5@s0cJU(l z_!L3#z4JGd@$Q}Xv}LxN0j&_m52Sd86Fi+b&oNKvM7KWwge&mEjV$6ods%0SB2}RX zR(`GV?$i8Q>xJ*A=RL03v0*-$DmGDWn}XEBjOA^JxIjh3S}|aJZPFfgQm;r#mvDxR z%Lx(dbTLdssV1=*l)6Mqe3hQWNOAu2RC81oRPx;7URU+Ql3F+LI_rq!Njil)?a8PS z#74|+WO(uT^>`XoqRi!LI+izRaQn5Am|haP62!irV>bccAO}%7UZoQ@mDB$Qws;kq zcQy1%?=dfTs>@9*b@01i#mSp*?AvhQ9XDKDi?+Q zKi@KK)ID6}Oy5>O9P>j3r5o&~WkgOJ!pyrWZ+B0nWRp8Z@QvYlbcokTI-MR!2Jh0J zs}OG(t!6W}YVDscM6PzPTSlPTl}THppRAjjdWp^K>|S5=-M|&p`xszulx-$6G{j&P zR62}GJhv#_(h_~TPXfGfGhF-&>0)rf2v@;f_QOZ`A**38rqBuVQ&(O*`MiONGdGWhR#Y=QX7*xvck=jcY$2q>CS zQS|VSuM2parCFt0@m|E_Omt}o!73sd)h<#6JIg(gnHRvRL8>mr1XYtS$j5s(^;hFwk~Jm*{`nA ztCuw-{f9~Y>6idaD(p{R8R*|>daUn@BFftq?c|B^K%bB;SdkXe4e)HyQ8m-kHW8F} z!hD}sBNQ5`50E`VdL95b{)e(M(#^>=0L1r)9tf)l!fKv)kzhSQ9lSv>=pQBIzq3$6 z5P+~0g2Di54=OGOk^uVmoupI4AYGko<=h=yQ9rz9aMl1ri~Yd? ze-CUZAqLb1$PoZ7h%F-mc(_17aDdr^NnrUrINb_5hoQR@*1Z_;6aaGd ze&PDCJ^xAdeV%U`u#7oOJwT2!IpY??d%RqwGnr{vjkH ze|$g)I2_nr_Mq=F2t-sAzz_QYx&M%fz$Ac8_!pUo2$pF5UGM)V8RTSr{=fSNK_CDq zf764ANQeQe`Zt*fL=5nl_=^lGg7_OQP#Bh7{=F;|4mcqFRVEI2Vf;k~IQadoEDQz* zR_yQf!4TM0{1=%xb|?NW6Fu3Dzsay`>aS&i752A2LqrgWzxElB0Ul((w*i5`MSz|D zdm9i0_SF0-!=RDCNs2z<()FDJQP}l|Wy|$EJTRb>b^QJGQggTW0M3t}Yt|csL}N}? REChlO6C>f~R?=1``9BbuMsWZD literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TCPServer__inherit__graph.md5 b/latex/classcore_1_1TCPServer__inherit__graph.md5 new file mode 100644 index 0000000..31050b6 --- /dev/null +++ b/latex/classcore_1_1TCPServer__inherit__graph.md5 @@ -0,0 +1 @@ +c139f1cfe9d80689faf32cee0d8e8b8b \ No newline at end of file diff --git a/latex/classcore_1_1TCPServer__inherit__graph.pdf b/latex/classcore_1_1TCPServer__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eb09c8b3b2a050483738e2dc6d8ddc70724b4b74 GIT binary patch literal 10033 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 + + + +Inheritance diagram for core\+::T\+C\+P\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=320pt]{classcore_1_1TCPSession__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::T\+C\+P\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TCPSession__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TCPSession_a7e1192babcdeb688f463d3e9e85d0979}\label{classcore_1_1TCPSession_a7e1192babcdeb688f463d3e9e85d0979}} +{\bfseries T\+C\+P\+Session} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} \&server, std\+::string text=\char`\"{}\char`\"{}) +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_a50037cbfc515650e04054e5481785981}{output}} (std\+::stringstream \&data) +\item +void \mbox{\hyperlink{classcore_1_1TCPSession_a2b09eeafef5e44009a77d9da43e3b889}{send}} () +\item +void \mbox{\hyperlink{classcore_1_1TCPSession_afdfe135694c6689f5365fac6c090ec33}{send\+To\+All}} () +\item +void \mbox{\hyperlink{classcore_1_1TCPSession_a05c489dcd2ebd74f527864759929e351}{send\+To\+All}} (\mbox{\hyperlink{classcore_1_1SessionFilter}{Session\+Filter}} filter) +\item +void \mbox{\hyperlink{classcore_1_1TCPSession_a34936745e8d7669d5400e78d353a56d3}{terminate}} () +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TCPSession_a2c39191d695d79891989ea628f42c0a8}\label{classcore_1_1TCPSession_a2c39191d695d79891989ea628f42c0a8}} +\mbox{\hyperlink{classcore_1_1Command}{Command}} $\ast$ {\bfseries grab} = N\+U\+LL +\item +std\+::stringstream \mbox{\hyperlink{classcore_1_1TCPSession_abb302bbb3d7e7bc75490c736364f0d4d}{out}} +\item +\mbox{\Hypertarget{classcore_1_1TCPSession_a265d9493fa544e601b5ad5fb1663340c}\label{classcore_1_1TCPSession_a265d9493fa544e601b5ad5fb1663340c}} +\mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} \& {\bfseries server} +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_aed4ed499b978bcea57a8efefe929fc98}{on\+Registered}} () override +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_ac2c3ffef9ded12a8867e3d27902b001a}{on\+Data\+Received}} (char $\ast$data, int len) override +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_a0f209620e9f11e70bfde54852b5c5460}{on\+Line\+Received}} (std\+::string line) +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_a4403ef0a92b119dfa2e74667788e4ba1}{on\+Block\+Received}} (std\+::string block) +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_a8719952f7bb00bf7239ec40aa2868626}{on\+Connected}} () +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSession_ae90dc64e2d3c4b3239117923145edb3f}{protocol}} (std\+::string data) +\item +void \mbox{\hyperlink{classcore_1_1TCPSession_afde7a264edac9e91b509f13eb4192038}{set\+Mode}} (core\+::\+Mode mode, int size=0) +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} + +\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} defines the nature of the interaction with the client and stores persistent data for a defined session. \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} objects are not sockets but instead provide a communications control mechanism. Protocol conversations are provided through extensions from this object. ~\newline + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1TCPSession_a4403ef0a92b119dfa2e74667788e4ba1}\label{classcore_1_1TCPSession_a4403ef0a92b119dfa2e74667788e4ba1}} +\index{core::TCPSession@{core::TCPSession}!onBlockReceived@{onBlockReceived}} +\index{onBlockReceived@{onBlockReceived}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{onBlockReceived()}{onBlockReceived()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::on\+Block\+Received (\begin{DoxyParamCaption}\item[{std\+::string}]{block }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +Override the on\+Block\+Received method to receive a string of characters that represents a single block of data of length determined by the block length value. If on\+Data\+Received was overriden this method will not be called unless the on\+Data\+Received calls this method explicitly using the class and member name. \mbox{\Hypertarget{classcore_1_1TCPSession_a8719952f7bb00bf7239ec40aa2868626}\label{classcore_1_1TCPSession_a8719952f7bb00bf7239ec40aa2868626}} +\index{core::TCPSession@{core::TCPSession}!onConnected@{onConnected}} +\index{onConnected@{onConnected}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{onConnected()}{onConnected()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::on\+Connected (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +This method is called from within the protocol method when protocol is called on the initial connection where the data is an empty string. Use this method to deliver a message to the connection upon connection. \mbox{\Hypertarget{classcore_1_1TCPSession_ac2c3ffef9ded12a8867e3d27902b001a}\label{classcore_1_1TCPSession_ac2c3ffef9ded12a8867e3d27902b001a}} +\index{core::TCPSession@{core::TCPSession}!onDataReceived@{onDataReceived}} +\index{onDataReceived@{onDataReceived}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{onDataReceived()}{onDataReceived()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::on\+Data\+Received (\begin{DoxyParamCaption}\item[{char $\ast$}]{data, }\item[{int}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +Override this method to receive data directly from the socket as data is received. If you need data split by line termination characters then override the on\+Line\+Received method instead. + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket}{core\+::\+Socket}}. + +\mbox{\Hypertarget{classcore_1_1TCPSession_a0f209620e9f11e70bfde54852b5c5460}\label{classcore_1_1TCPSession_a0f209620e9f11e70bfde54852b5c5460}} +\index{core::TCPSession@{core::TCPSession}!onLineReceived@{onLineReceived}} +\index{onLineReceived@{onLineReceived}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{onLineReceived()}{onLineReceived()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::on\+Line\+Received (\begin{DoxyParamCaption}\item[{std\+::string}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +Override the on\+Line\+Received method to receive a string of characters that represents a single line of data terminated by a LF or C\+R\+LF. If on\+Data\+Received was overriden this method will not be called unless the on\+Data\+Received calls this method explicitly using the class and member name. \mbox{\Hypertarget{classcore_1_1TCPSession_aed4ed499b978bcea57a8efefe929fc98}\label{classcore_1_1TCPSession_aed4ed499b978bcea57a8efefe929fc98}} +\index{core::TCPSession@{core::TCPSession}!onRegistered@{onRegistered}} +\index{onRegistered@{onRegistered}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{onRegistered()}{onRegistered()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::on\+Registered (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +Set this value to control the next read event coming from this socket. + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket_a23b9824653bbe4652a716acb828665b1}{core\+::\+Socket}}. + + + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_a8e26fdc9e8a6c573b5a504a1f1b137a9}{core\+::\+T\+L\+S\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TCPSession_a50037cbfc515650e04054e5481785981}\label{classcore_1_1TCPSession_a50037cbfc515650e04054e5481785981}} +\index{core::TCPSession@{core::TCPSession}!output@{output}} +\index{output@{output}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{output()}{output()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::output (\begin{DoxyParamCaption}\item[{std\+::stringstream \&}]{out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +The output method is called by a socket session (B\+M\+A\+Session) and will output the detail information for the client socket. When extending B\+M\+A\+T\+C\+P\+Socket or B\+M\+A\+Session you can override the method to add attributes to the list. + +Reimplemented from \mbox{\hyperlink{classcore_1_1TCPSocket_afacf7528ff3c9ac077d7b5a49e2116fd}{core\+::\+T\+C\+P\+Socket}}. + + + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_ae55de8a035d1ddc560cf619b2030af43}{core\+::\+T\+L\+S\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TCPSession_ae90dc64e2d3c4b3239117923145edb3f}\label{classcore_1_1TCPSession_ae90dc64e2d3c4b3239117923145edb3f}} +\index{core::TCPSession@{core::TCPSession}!protocol@{protocol}} +\index{protocol@{protocol}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{protocol()}{protocol()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::protocol (\begin{DoxyParamCaption}\item[{std\+::string}]{data = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +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 \textquotesingle{}commands\textquotesingle{} added to the server object using the process\+Request method on the session input. + +When data is received within the session two modes are available to pass the data through the protocol method\+: L\+I\+NE or B\+L\+O\+CK. + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_a547c436ab69f75307f065eca8cfcd109}{core\+::\+T\+L\+S\+Session}}, and \mbox{\hyperlink{classcore_1_1ConsoleSession_a830cc1e1e0c3fe3b066f0a9f7f469490}{core\+::\+Console\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TCPSession_a2b09eeafef5e44009a77d9da43e3b889}\label{classcore_1_1TCPSession_a2b09eeafef5e44009a77d9da43e3b889}} +\index{core::TCPSession@{core::TCPSession}!send@{send}} +\index{send@{send}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{send()}{send()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::send (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +The send method is used to output the contents of the out stream to the session containing the stream. \mbox{\Hypertarget{classcore_1_1TCPSession_afdfe135694c6689f5365fac6c090ec33}\label{classcore_1_1TCPSession_afdfe135694c6689f5365fac6c090ec33}} +\index{core::TCPSession@{core::TCPSession}!sendToAll@{sendToAll}} +\index{sendToAll@{sendToAll}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{sendToAll()}{sendToAll()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::send\+To\+All (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Use this send\+To\+All method to output the contents of the out stream to all the connections on the server excluding the sender session. \mbox{\Hypertarget{classcore_1_1TCPSession_a05c489dcd2ebd74f527864759929e351}\label{classcore_1_1TCPSession_a05c489dcd2ebd74f527864759929e351}} +\index{core::TCPSession@{core::TCPSession}!sendToAll@{sendToAll}} +\index{sendToAll@{sendToAll}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{sendToAll()}{sendToAll()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::send\+To\+All (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1SessionFilter}{Session\+Filter}}}]{filter }\end{DoxyParamCaption})} + +Use this send\+To\+All 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. \mbox{\Hypertarget{classcore_1_1TCPSession_afde7a264edac9e91b509f13eb4192038}\label{classcore_1_1TCPSession_afde7a264edac9e91b509f13eb4192038}} +\index{core::TCPSession@{core::TCPSession}!setMode@{setMode}} +\index{setMode@{setMode}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{setMode()}{setMode()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::set\+Mode (\begin{DoxyParamCaption}\item[{core\+::\+Mode}]{mode, }\item[{int}]{size = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}} + +Use the set\+Mode method to set the receiving mode for the data on this socket. Data can be received in L\+I\+NE mode, which will receive data from the socket one line at a time, or B\+L\+O\+CK mode where a certain specified data block is received before calling the on\+Block\+Received method. \mbox{\Hypertarget{classcore_1_1TCPSession_a34936745e8d7669d5400e78d353a56d3}\label{classcore_1_1TCPSession_a34936745e8d7669d5400e78d353a56d3}} +\index{core::TCPSession@{core::TCPSession}!terminate@{terminate}} +\index{terminate@{terminate}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{terminate()}{terminate()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Session\+::terminate (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Use this method to terminate this \mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}}. + +\doxysubsection{Member Data Documentation} +\mbox{\Hypertarget{classcore_1_1TCPSession_abb302bbb3d7e7bc75490c736364f0d4d}\label{classcore_1_1TCPSession_abb302bbb3d7e7bc75490c736364f0d4d}} +\index{core::TCPSession@{core::TCPSession}!out@{out}} +\index{out@{out}!core::TCPSession@{core::TCPSession}} +\doxysubsubsection{\texorpdfstring{out}{out}} +{\footnotesize\ttfamily std\+::stringstream core\+::\+T\+C\+P\+Session\+::out} + +Use out to send data to the session socket or other session sockets. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +T\+C\+P\+Session.\+h\item +T\+C\+P\+Session.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TCPSession__coll__graph.md5 b/latex/classcore_1_1TCPSession__coll__graph.md5 new file mode 100644 index 0000000..543fb34 --- /dev/null +++ b/latex/classcore_1_1TCPSession__coll__graph.md5 @@ -0,0 +1 @@ +711c00bd88cb953a5c6ecf80fdbce559 \ No newline at end of file diff --git a/latex/classcore_1_1TCPSession__coll__graph.pdf b/latex/classcore_1_1TCPSession__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fc2009658d6b47b9261c091569ab65c97413df93 GIT binary patch literal 13154 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 SBO3yRfw>778O0RD3H}dPd)4j$ literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TCPSession__inherit__graph.md5 b/latex/classcore_1_1TCPSession__inherit__graph.md5 new file mode 100644 index 0000000..9504775 --- /dev/null +++ b/latex/classcore_1_1TCPSession__inherit__graph.md5 @@ -0,0 +1 @@ +afc73337bd4329c988a68aaf0b512757 \ No newline at end of file diff --git a/latex/classcore_1_1TCPSession__inherit__graph.pdf b/latex/classcore_1_1TCPSession__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4cbbe47ef355929bc248f95db8688af4e4a23e9e GIT binary patch literal 9592 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TCPSocket.tex b/latex/classcore_1_1TCPSocket.tex new file mode 100644 index 0000000..f942aca --- /dev/null +++ b/latex/classcore_1_1TCPSocket.tex @@ -0,0 +1,71 @@ +\hypertarget{classcore_1_1TCPSocket}{}\doxysection{core\+::T\+C\+P\+Socket Class Reference} +\label{classcore_1_1TCPSocket}\index{core::TCPSocket@{core::TCPSocket}} + + +{\ttfamily \#include $<$T\+C\+P\+Socket.\+h$>$} + + + +Inheritance diagram for core\+::T\+C\+P\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TCPSocket__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::T\+C\+P\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=260pt]{classcore_1_1TCPSocket__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TCPSocket_a09089f0bc701edcf6c148958fd29d374}\label{classcore_1_1TCPSocket_a09089f0bc701edcf6c148958fd29d374}} +{\bfseries T\+C\+P\+Socket} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll) +\item +\mbox{\Hypertarget{classcore_1_1TCPSocket_aa7ffbbd17827ffe769684fa8345862d6}\label{classcore_1_1TCPSocket_aa7ffbbd17827ffe769684fa8345862d6}} +{\bfseries T\+C\+P\+Socket} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, std\+::string text) +\item +\mbox{\Hypertarget{classcore_1_1TCPSocket_a22dae8f5b7989d206fab918297e0df94}\label{classcore_1_1TCPSocket_a22dae8f5b7989d206fab918297e0df94}} +void {\bfseries connect} (\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} \&address) +\item +virtual void \mbox{\hyperlink{classcore_1_1TCPSocket_afacf7528ff3c9ac077d7b5a49e2116fd}{output}} (std\+::stringstream \&out) +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TCPSocket_abe7d0a740dc0c19c058661270a6fb630}\label{classcore_1_1TCPSocket_abe7d0a740dc0c19c058661270a6fb630}} +\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} {\bfseries ip\+Address} +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1TCPSocket}{T\+C\+P\+Socket}} + +Provides a network T\+CP socket. + +For accessing T\+CP network functions use this object. The connection oriented nature of T\+CP provides a single client persistent connection with data error correction and a durable synchronous data connection. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1TCPSocket_afacf7528ff3c9ac077d7b5a49e2116fd}\label{classcore_1_1TCPSocket_afacf7528ff3c9ac077d7b5a49e2116fd}} +\index{core::TCPSocket@{core::TCPSocket}!output@{output}} +\index{output@{output}!core::TCPSocket@{core::TCPSocket}} +\doxysubsubsection{\texorpdfstring{output()}{output()}} +{\footnotesize\ttfamily void core\+::\+T\+C\+P\+Socket\+::output (\begin{DoxyParamCaption}\item[{std\+::stringstream \&}]{out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +The output method is called by a socket session (B\+M\+A\+Session) and will output the detail information for the client socket. When extending B\+M\+A\+T\+C\+P\+Socket or B\+M\+A\+Session you can override the method to add attributes to the list. + +Reimplemented in \mbox{\hyperlink{classcore_1_1TLSSession_ae55de8a035d1ddc560cf619b2030af43}{core\+::\+T\+L\+S\+Session}}, and \mbox{\hyperlink{classcore_1_1TCPSession_a50037cbfc515650e04054e5481785981}{core\+::\+T\+C\+P\+Session}}. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +T\+C\+P\+Socket.\+h\item +T\+C\+P\+Socket.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TCPSocket__coll__graph.md5 b/latex/classcore_1_1TCPSocket__coll__graph.md5 new file mode 100644 index 0000000..4f14e61 --- /dev/null +++ b/latex/classcore_1_1TCPSocket__coll__graph.md5 @@ -0,0 +1 @@ +45d94885a61efc762ddc3c8e590a48e6 \ No newline at end of file diff --git a/latex/classcore_1_1TCPSocket__coll__graph.pdf b/latex/classcore_1_1TCPSocket__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dfa88d0dcd8d28c9ccbf5647d856cdbaa102a821 GIT binary patch literal 10153 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 XB4dbT%FKpA;fe@G5fSZUI*k7ZG;5g{ literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TLSServer.tex b/latex/classcore_1_1TLSServer.tex new file mode 100644 index 0000000..791e8f0 --- /dev/null +++ b/latex/classcore_1_1TLSServer.tex @@ -0,0 +1,83 @@ +\hypertarget{classcore_1_1TLSServer}{}\doxysection{core\+::T\+L\+S\+Server Class Reference} +\label{classcore_1_1TLSServer}\index{core::TLSServer@{core::TLSServer}} + + +{\ttfamily \#include $<$T\+L\+S\+Server.\+h$>$} + + + +Inheritance diagram for core\+::T\+L\+S\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=288pt]{classcore_1_1TLSServer__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::T\+L\+S\+Server\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TLSServer__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classcore_1_1TLSServer_a6460f9872936015efdfd0b8de04aa2fe}{T\+L\+S\+Server}} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}} address) +\item +\mbox{\hyperlink{classcore_1_1TLSServer_ac71db77c796a1bf65357409cb96054c7}{$\sim$\+T\+L\+S\+Server}} () +\item +\mbox{\Hypertarget{classcore_1_1TLSServer_a984dfd9faaa792e29f905e860d2e4a9e}\label{classcore_1_1TLSServer_a984dfd9faaa792e29f905e860d2e4a9e}} +\mbox{\hyperlink{classcore_1_1TCPSession}{T\+C\+P\+Session}} $\ast$ {\bfseries get\+Socket\+Accept} () +\end{DoxyCompactItemize} +\doxysubsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TLSServer_ab4e788350bda508fa44604d146e7537f}\label{classcore_1_1TLSServer_ab4e788350bda508fa44604d146e7537f}} +S\+S\+L\+\_\+\+C\+TX $\ast$ {\bfseries ctx} +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1TLSServer}{T\+L\+S\+Server}} + +Manage a socket connection as a T\+LS server type. Connections to the socket are processed through the accept functionality. + +\doxysubsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classcore_1_1TLSServer_a6460f9872936015efdfd0b8de04aa2fe}\label{classcore_1_1TLSServer_a6460f9872936015efdfd0b8de04aa2fe}} +\index{core::TLSServer@{core::TLSServer}!TLSServer@{TLSServer}} +\index{TLSServer@{TLSServer}!core::TLSServer@{core::TLSServer}} +\doxysubsubsection{\texorpdfstring{TLSServer()}{TLSServer()}} +{\footnotesize\ttfamily core\+::\+T\+L\+S\+Server\+::\+T\+L\+S\+Server (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&}]{e\+Poll, }\item[{\mbox{\hyperlink{classcore_1_1IPAddress}{I\+P\+Address}}}]{address }\end{DoxyParamCaption})} + +The constructor. + + +\begin{DoxyParams}{Parameters} +{\em e\+Poll} & the B\+M\+A\+E\+Poll instance that manages the socket. \\ +\hline +{\em url} & the IP address for the socket to receive connection requests. \\ +\hline +{\em port} & the port number that the socket will listen on. \\ +\hline +{\em command\+Name} & the name of the command used to invoke the status display for this object. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +the instance of the B\+M\+A\+T\+L\+S\+Server\+Socket. +\end{DoxyReturn} +\mbox{\Hypertarget{classcore_1_1TLSServer_ac71db77c796a1bf65357409cb96054c7}\label{classcore_1_1TLSServer_ac71db77c796a1bf65357409cb96054c7}} +\index{core::TLSServer@{core::TLSServer}!````~TLSServer@{$\sim$TLSServer}} +\index{````~TLSServer@{$\sim$TLSServer}!core::TLSServer@{core::TLSServer}} +\doxysubsubsection{\texorpdfstring{$\sim$TLSServer()}{~TLSServer()}} +{\footnotesize\ttfamily core\+::\+T\+L\+S\+Server\+::$\sim$\+T\+L\+S\+Server (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +The destructor for this object. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +T\+L\+S\+Server.\+h\item +T\+L\+S\+Server.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TLSServer__coll__graph.md5 b/latex/classcore_1_1TLSServer__coll__graph.md5 new file mode 100644 index 0000000..215960a --- /dev/null +++ b/latex/classcore_1_1TLSServer__coll__graph.md5 @@ -0,0 +1 @@ +06dd49540bf0b9bc8d6d30dcbcd1f908 \ No newline at end of file diff --git a/latex/classcore_1_1TLSServer__coll__graph.pdf b/latex/classcore_1_1TLSServer__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..890ac9122768a4c95397cd00c31ac8898557db11 GIT binary patch literal 12787 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 F{68x%=L7%% literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TLSServer__inherit__graph.md5 b/latex/classcore_1_1TLSServer__inherit__graph.md5 new file mode 100644 index 0000000..22f1450 --- /dev/null +++ b/latex/classcore_1_1TLSServer__inherit__graph.md5 @@ -0,0 +1 @@ +b557149d33adcd0e054b6c429adc0078 \ No newline at end of file diff --git a/latex/classcore_1_1TLSServer__inherit__graph.pdf b/latex/classcore_1_1TLSServer__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1ef957785724193a074fa034c46f4fb4b1ea0dac GIT binary patch literal 9305 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TLSSession.tex b/latex/classcore_1_1TLSSession.tex new file mode 100644 index 0000000..336cac9 --- /dev/null +++ b/latex/classcore_1_1TLSSession.tex @@ -0,0 +1,116 @@ +\hypertarget{classcore_1_1TLSSession}{}\doxysection{core\+::T\+L\+S\+Session Class Reference} +\label{classcore_1_1TLSSession}\index{core::TLSSession@{core::TLSSession}} + + +{\ttfamily \#include $<$T\+L\+S\+Session.\+h$>$} + + + +Inheritance diagram for core\+::T\+L\+S\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=180pt]{classcore_1_1TLSSession__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::T\+L\+S\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TLSSession__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TLSSession_ac2bd48a18a46a3b6827cd689775e3552}\label{classcore_1_1TLSSession_ac2bd48a18a46a3b6827cd689775e3552}} +{\bfseries T\+L\+S\+Session} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} \&server) +\item +virtual void \mbox{\hyperlink{classcore_1_1TLSSession_ae55de8a035d1ddc560cf619b2030af43}{output}} (std\+::stringstream \&\mbox{\hyperlink{classcore_1_1TCPSession_abb302bbb3d7e7bc75490c736364f0d4d}{out}}) +\item +virtual void \mbox{\hyperlink{classcore_1_1TLSSession_a547c436ab69f75307f065eca8cfcd109}{protocol}} (std\+::string data) override +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classcore_1_1TLSSession_a1822cb21de545dc1a183ec0bac6cc4f0}{receive\+Data}} (char $\ast$buffer, int buffer\+Length) override +\item +void \mbox{\hyperlink{classcore_1_1TLSSession_a76cec7cf4851eb27abe77a2339344c6d}{on\+Register}} () +\begin{DoxyCompactList}\small\item\em Called before the socket has registered with the epoll processing. \end{DoxyCompactList}\item +void \mbox{\hyperlink{classcore_1_1TLSSession_a8e26fdc9e8a6c573b5a504a1f1b137a9}{on\+Registered}} () +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1TLSSession}{T\+L\+S\+Session}} + +Provides a network T\+LS socket. + +For accessing T\+LS network functions use this object. The connection oriented nature of T\+LS provides a single client persistent connection with data error correction and a durable synchronous data connection. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1TLSSession_a76cec7cf4851eb27abe77a2339344c6d}\label{classcore_1_1TLSSession_a76cec7cf4851eb27abe77a2339344c6d}} +\index{core::TLSSession@{core::TLSSession}!onRegister@{onRegister}} +\index{onRegister@{onRegister}!core::TLSSession@{core::TLSSession}} +\doxysubsubsection{\texorpdfstring{onRegister()}{onRegister()}} +{\footnotesize\ttfamily void core\+::\+T\+L\+S\+Session\+::on\+Register (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + + + +Called before the socket has registered with the epoll processing. + +The on\+Register method is called before the socket is registered with e\+Poll so objects extending the \mbox{\hyperlink{classcore_1_1Socket}{Socket}} definition can initialize the socket before receiving events. Evoked when the descriptor is set using set\+Descriptor for the socket. + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket_a81e5ee3e17834166d97c6e8b7dfe0da0}{core\+::\+Socket}}. + +\mbox{\Hypertarget{classcore_1_1TLSSession_a8e26fdc9e8a6c573b5a504a1f1b137a9}\label{classcore_1_1TLSSession_a8e26fdc9e8a6c573b5a504a1f1b137a9}} +\index{core::TLSSession@{core::TLSSession}!onRegistered@{onRegistered}} +\index{onRegistered@{onRegistered}!core::TLSSession@{core::TLSSession}} +\doxysubsubsection{\texorpdfstring{onRegistered()}{onRegistered()}} +{\footnotesize\ttfamily void core\+::\+T\+L\+S\+Session\+::on\+Registered (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +Set this value to control the next read event coming from this socket. + +Reimplemented from \mbox{\hyperlink{classcore_1_1TCPSession_aed4ed499b978bcea57a8efefe929fc98}{core\+::\+T\+C\+P\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TLSSession_ae55de8a035d1ddc560cf619b2030af43}\label{classcore_1_1TLSSession_ae55de8a035d1ddc560cf619b2030af43}} +\index{core::TLSSession@{core::TLSSession}!output@{output}} +\index{output@{output}!core::TLSSession@{core::TLSSession}} +\doxysubsubsection{\texorpdfstring{output()}{output()}} +{\footnotesize\ttfamily void core\+::\+T\+L\+S\+Session\+::output (\begin{DoxyParamCaption}\item[{std\+::stringstream \&}]{out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +The output method is called by a socket session (Session) and will output the detail information for the client socket. When extending T\+L\+S\+Socket or Session you can override the method to add attributes to the list. + +Reimplemented from \mbox{\hyperlink{classcore_1_1TCPSession_a50037cbfc515650e04054e5481785981}{core\+::\+T\+C\+P\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TLSSession_a547c436ab69f75307f065eca8cfcd109}\label{classcore_1_1TLSSession_a547c436ab69f75307f065eca8cfcd109}} +\index{core::TLSSession@{core::TLSSession}!protocol@{protocol}} +\index{protocol@{protocol}!core::TLSSession@{core::TLSSession}} +\doxysubsubsection{\texorpdfstring{protocol()}{protocol()}} +{\footnotesize\ttfamily void core\+::\+T\+L\+S\+Session\+::protocol (\begin{DoxyParamCaption}\item[{std\+::string}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}} + +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 \textquotesingle{}commands\textquotesingle{} added to the server object using the process\+Request method on the session input. + +When data is received within the session two modes are available to pass the data through the protocol method\+: L\+I\+NE or B\+L\+O\+CK. + +Reimplemented from \mbox{\hyperlink{classcore_1_1TCPSession_ae90dc64e2d3c4b3239117923145edb3f}{core\+::\+T\+C\+P\+Session}}. + +\mbox{\Hypertarget{classcore_1_1TLSSession_a1822cb21de545dc1a183ec0bac6cc4f0}\label{classcore_1_1TLSSession_a1822cb21de545dc1a183ec0bac6cc4f0}} +\index{core::TLSSession@{core::TLSSession}!receiveData@{receiveData}} +\index{receiveData@{receiveData}!core::TLSSession@{core::TLSSession}} +\doxysubsubsection{\texorpdfstring{receiveData()}{receiveData()}} +{\footnotesize\ttfamily void core\+::\+T\+L\+S\+Session\+::receive\+Data (\begin{DoxyParamCaption}\item[{char $\ast$}]{buffer, }\item[{int}]{buffer\+Length }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + +receive\+Data will read the data from the socket and place it in the socket buffer. T\+LS layer overrides this to be able to read from S\+SL. + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket_af455ec6f793473f529507af26aa54695}{core\+::\+Socket}}. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +T\+L\+S\+Session.\+h\item +T\+L\+S\+Session.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TLSSession__coll__graph.md5 b/latex/classcore_1_1TLSSession__coll__graph.md5 new file mode 100644 index 0000000..6514b49 --- /dev/null +++ b/latex/classcore_1_1TLSSession__coll__graph.md5 @@ -0,0 +1 @@ +4b4e04eef98ed454cb8bb0eb211081b4 \ No newline at end of file diff --git a/latex/classcore_1_1TLSSession__coll__graph.pdf b/latex/classcore_1_1TLSSession__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4e1fe45191647eb66800352e921ba1d239b02748 GIT binary patch literal 13550 zcmdUWcRbbKAAd?#nOUJ+A|%|+wdW;!Z`pgh*B&LJY!WgvQiMcC31yX#y;nr`&Pc}Z zeU;DW)2H9#@%wzfkIz59_w~5voacF+bKd89*2{UlF1xBUng_y*AYm_CD*8?WfrG#x zXEQqzVPO!TqNS5H)&>MY0GK)n2n6Co+d5z^-GI=+6l*DMY3^)cNg^srg2B33nmUqr zr55V8I5Ejmz24U8iS0EptB}hFFcGc-` zxyS5jn+R^{jcy4K*Lj){KCayvzWuZ}oLQTT?uJ2OTYc{px3xAqpS2~s2cb~oZ~mjx z-aEFVdAu9vYKz8={Hukl^wa$|x}Vhsw~L-pNf+CnS16d?Xs@46R7tdM&)}un3EdoX z(k%-%Jl%3HUU@k2_Q>M7?Met4sC9kJ2ut-Ov5}+H%TqY-FZa$Z%6k#Gh`A_xphF zJ^OOt<@*7;%5N3o%@x1vQD7YWdid;{F>gZMQB>Tv?3W$ix<$RD9l#T43}MtV*CI}4 zn=dwzGHdd0M3-8K6I6tU2@S&Kjc(CKo?=N*2%~`%(lB2c_17;*J8gkybE?#!2-5pu zx}2J4+eG^WTMP||hj^=v!I$dYuFC-4(5|kFSy=2{cTpas{rkLhKIH!BVPRDO#v9&s z;lSz?GRfr)c0gsNp+@>XF#@kt*zBCNO`W&vld?v&)5@J@7lL#zIf%~_SaSsrjaWBf zvr0ju_HebUO=ixMa^`xvQJ0K}3P4`xauG#EiaF#V7eJ2Wm(ny;=^qAbtKc#4K2aXy znA{UT%S^m@B9y8yL1fQ_GcZul?^(q_K0&i>lh>8!<`MBsN@=goUKS+OKV{s+AwlRu zSQ5beT&GxONmueTJSaikdQQ|z^Ws^-n^(jn-`>T0@StS|;0<*B6N^1bx z4lY{66c_zY0Sl66djqerzf9G}Krc@^6&F8C)RpsP9&3JW1XF3Z{Q7KKQ!3JFSUQ^?DZFL^b&M?cP-FgDCO9VB)u&9hjJW`1vRNGkDm1LN=rq zGC6q7RZMf>0(J1|o52xXb`J9IFw9<=myLt6Ux>|~c(exfB^J`=R*BCp-HMkoAp%*^uIzOdZ+&5Kq%MiqK3 zuTP*~j)-7_4|dn_M3*Sd9KZ!S_?tN-#6!e)D^kfiV6?LM?_q;N+N1(wS!%YV$x>*g zq*G;YUk8=d+$`1V@qDsO?YDfDfW$$Q^K~ruNkTtTym@jf-3JPac)fX$+iGPb<2UE) zyH8&(pIgS@?jEpqE-fG-dY@S@IajG{0qAISB zraRV#XH039%MPx`PwXVIyqh-r7@A8|+B)BFcEwH9L9sWSuIVeN^Ffjj1-rUq1OlTo znYMT!=|C28;qi$)&nEvjuV1oX%{dZq*KV;bU|XdHZaE>v%c!Syc(>v(1Rh-LUk25E#$6}y))tsE6|wNK3(Ok z#>T)hyJ~Ntz>ZO?{~W%P&pm8adT^^H)mj!?=18OUS|!lkRHx?B$B*fFP3mHwF9b2~ zM3FUJaKYS=p77$h1?u#1i~BHlm2HLiP^B9s;AP&zDAM|{>Rfz*WO&>Jg<5Br6pHPn zXfYpEeu>D*yzVLti#tooMVkJR8XsHlsHSMgr#8y6{nss$dfQN;Qm9n#+vVMbhoxeR z>t44kuJsQ37jR~_tonU~xVUq!6^&+hui`tcD2LlGC+Cs8tR`K_Dc(cpm*_ptlWk6V z_OT$L;?B)}t}I3Q&91jpiW4l)o+r1d7fotdn=2P_!IGc9otsfDE7I2!aSPJq8T>5y za7$x8#buD$Gj;V-0<)Zbx5%NC=f2tfuau--!)3yH*kYACd7+-Qdml`c7CYJ{YO5o? zm%DZ&=4|aH=9Shy-MiyB-P>2vld@1jxWX*UuxF#ZP2U%}wbs-%mzAlu#d$I?v)w|- zHt_AtK6?jU%E_j);MdF6LbqOgltY>K$<~NVyq88@8jg^^Jt`1yU!dt-FGv?|+-A@> z&g>EI&%$+4?mK_M)$gwjmJQwcZbXD`gw9ni31v@-u-_iFB z$-a8Q_I~vTVWzirTZFX6xdSXW<2MP?S)}UvZho#S+9P z;pF6uJ!)IS-3)sKDcU;O|3I*A?&erkQ#VVX3Gfl5=5A`C>TK(T#efVzP$&X~;s?S0 z3?LBxBNP`J9TiZwG{^oF#eqL%f8KFcd%@ zQ1n0I;pb9Nw8i}M4FRV>{f}&*erE&N{Q(Yehdms2tTFtI0gAxS+`sDyxFZ9nC%|Dq z_}}RXf2@pu#mBMcXaIB$w^iWos&Fd?7areT9V?wUSsaejwQwO$&%lKc++lkZ!JRut z5!}A3PGWSdp8dWJtD0I{g4jVnbg!SP=y7QfpOU48t*NB57ocI{>PEnzAOtXne#{#w zKr;q3R}ARr!VT9Ph)>qd+1=$gwetwY<>N#Ety9y@)CuE)(|gUmkKt<|KpVC^PDue$ z(v}{!=9cQRk~r|E+No}dadvkzw*(qJW(lbAFM2eP@k5h7QoM0mG@um&8~|J8kKl+b z(2-uE4jdRqAfQpg+8HjV-Wp#Yg)Ybg#=)D4vZi4(nl zf*;#<^DZYbB?UeeEhXzoGx4)`21xN-?_51Of6gTYPxdyb9%hE^aFtZ|p7Ee+7#!QK zzA?64qjTTaxj&$997Q8Z%z{>zzA3HZ>mYw{pWA@r++^xCB1SRCgL|EAbgWP!;(V51 z76L-Fm@wX_35_iYnpGl4!J&UQ#;;=YxR&>fz3BDvIqZ znE|0<_1aXdR#fP93sn0#p&0%9!LQo(c-5BGm8hZ0>UO++BH{&f3%q@g2nNg?is%g# zFLFd;SPIrcuIliJ`5y+yNpn8v_PgM;ev(SEWW+QliFYQ!tacjxEYdefxcq)*{%G`B z?AJ48$iCb;p}w)a(houvg<>Ph?kRiq1*S5l_H|e4@YCed(rgS1Cb9S)$_qnnwr>fZ z>s?dS2aPaoxosJ6sMOrwUoQ^zP$dBk*O%vkvuHV;i0qGy~j{^HL6S7L0*&Mnmj5b6?9;o4*u|S3PzZ9jjiL&ode; zI#do&a9sV?2D5fL`1Uo=z+lQ&kE1sBu?+#~L$aX@wmDN^7BIc-i&)JHDM(&})h(*< zcdCU9G?6y@OMOkruU-(!k;Lg@)>7NjV|~CvCI%;@1obT}!%N*gwsOHBcqeH+|H)>rnV(eC@XeD~}oz1H;1{{rP@iei_YLsiP(*D8kS@q!ImZ;J? zX+ngI0t5^Gc)4`W0Xd8kY6ZJS6^$jy4do8n7+Ixt-pghK7t4yTeU46>@3J)hPWD0wk+m1VF7|ZL#bsPO?XeH_6!FEG(g~Le z8SjJ@)^?~w;60PJp@D7=u_=}^1MA1U1(myJbaSR$)%ztdr&#t9DubUAezwy_r%&{d zPBieq7aE6}^bP$V^YYv$%Y#NS_{Q5bM21OC!KSk-MO!?7jK8CB>fiR zNKh|*$F=F9of-9kWA{?2QbpsV4-MbKGfhbVBhmL5X!#yWC&pFQ|`( zXd(=FZn1uxYq4C$3M7YSO4C%QBDYa`{*J_n-eK$mgq17J;y=y2} zklW5Xzklg;B)nQdn1O>?V0&aL&6#Ilv!`slrG2VRZ=9B3!CC>eaL2>(ueihG^sA3$q z%_o{%G%8=7WAG%@AjFVMk(-like6~LOLu!E*eJrw$mLvf1cnJOqc5Y`WjGoeIH(!J zl^Va8iB&l{MsT4U@vT-*o!JSZkpxlKfl_7Zsnp|2;x2R0T&7_!yp}JQuR@Y8*Wq}e z{6>C6jHHsAgkJmXut?1d?EG#)a@vjk`kiypU(!-bu+v{fmPHtAcfc#4_MyZi0lRo# z)rd#?xm`S=lao=89!E2ZvJFo&8<%4j#^fgJL$_lZWWwra6q;vA-|YmbN7m%Hb{(ek z^&+!wCu0rTky8(=&tydI8ZL;C)23r8Bwa`B8u`=1cS%4-qbw#MlT7)$jb9)-j9lIC z!D2yH^DE-@D&2tskF1x{k_A(W0)tQ=qf-SxOwZ}#!yens$b|+ z-T%~g!sVUyRvzJgeO8^WJ!hEHUD0hk+7Q;*7*C8XEOxU;zPT&KyR^nzxrQYps}XCl z#&0(NsQKO$*Ed3Mz4T=Gx4JihSjIF7>n_Jre(SydH)wWiLa3UtgxyeXE|{=+1p^|Y zlC^=a1zkrv!V%LX2p4AFGVEzwT8VJ8LU9O3(}J}UWEv?rbe_kU5IJ&{h&#?q@gjulbxu;l5M!lp?SW|y4uUF_4 zLTbnU`Z8JG%F~Se8@GLSxS!2ro|~Z<9kH=K6)9Ct?)zY2A=iJgVpHky>#*!KN}uXE z28CywFKsRgPEJU-9r>AU762GgZQZiN09y-R1JA1wBq`A9bgr3TnvPk?nJ!(BlVjCGA&=&=!yeKn|l>2k4MUUBBK9`l* z8+T{q(m}WBQth2Yb&AEh7c9A~oyUa3$r)pXWVBl{inUdmM~)=bOp?%b(G*Ef%YD%%`e%BKg`9eF^@ zs&TfjqIh^r4(5mVnY}EYkay|?`1rNNE6Gn5mcQ1D6gP}!|2(=xUBxnx!AY6lZAe8) znqE9l!EIG?keq8V3_o04HKA5XCGTdS>|GRPl6bQH?E%@=^39%|#htw!#2St6c;umQ z4QlKrbR)BR1d6ReL+!^hqb)V9FT9GnBdAjz)iR6p)*9Wr* z3Ci8SE3DMapP_)|@;W_#ezM12cIvI1;hhj-7PVYZ(Cyb3bG&%UXD6T3PmBpDUbxlD zMs#aafaY{^wy}`K=Mfpr7j1;Jh%!%xmDzmsU8@1;*VLW0o;yA7d!F>n_9XQT6ySRX z3w2$Xj`Da{XYa_@zM#>_oWjXu7(@kQ;k*4pcpKF;ixuz zEA@TqlhoPNq`mihPxfZ_lCs`sJ;|EQO8RtndsNP+(}_rBw=6F$ow_0Cd&8sL@6wG? z{x#bV22);NRMFmCueMHER^J*5NtMdZWoA4~^yx!AGnpT0A-orY6w!FVKV7{f8$EnR z2RpC%Af{u$!HEl%sQN%(&RbfP}DRs}oNuxU{25vVQj7n+@ zxi-b)nW@e{Bz)I5b5;{^yF^3j{Nm%LF|Uc(eeRSZo!zZN)UycxPzMtqZC4c)Co%h{ zqU$o%s`_!)6xnFrjnDg)bG%z!tMT{>XytB_t4=5RzkhO_U(l0Uq#Q6%CDRq_Dm=o ze~IxQRE~}()z~6qu5oV|CWMh)Jt%&@R^Lbn6)xzXd#a<7@ych@-dkxb?2g}4sqfh< z%1KC?dQw$o*kk3VUmGc>%n8>szpFZX>ZXu;U*(=tdlDsnc>dEy&UeU;1nX++%LZlv6GPr0N9CD4e)wraITydu2Y z83v{&^?T8IB0KW(B}SzO%@&#t`MD&m=5VE64SE=4fh*!=G^GambT|DyE9807WL9i9 ze_lho&zfQQ^d%vQLwM%PZAX~DaR4mm1JbT8=1SE8Nr&-eWBt!F7z?q2ZMTcCkDJ}r zx&~G|RLo-jR^d|wvG-L{>-WvMtfIMtq%D- z(yaP6fXV%NNXd zQJr0DqSr`8oqDxiq#uIn?aCkxJ{W2HPE;|eJ*sakWo&MIZ+NnNcCLp$p)E9=@&ggV zfYFxTlF2a{?KX!+p2^+NGfRLf_>X`a;q}79(CF6e@Bu2__lYLST2F)@(Pp*qL8%!? zA~uv1TG<_5>N*aJBRe)7E;vl^-HrT!cE9&UnTy}Kbdj}cmaP2L)~d*)`?R}zbb0+= z?zCe$bJY5!I&-gn^?KzusDnV=DTTJWCkL{h72!@1Gfx>4YhO*o>hRv!-nUfj`e2%H zFj9DPy-9Cs>;k#J&`s>O=?l*FVzr-p%SPA8rd~|-Z-=@M-@w#sFew>qa;L9YfOZe% z+k#6?cOs?RPnxmZ&Up}(qcJPF3pZ*}E_vFyl%E z6G(S;-ZQ2Pvo?H`GDrK0#$Lu=fsKZh?YURtR=6PCTaWcI~ zU+2DlPH!ybdQtyLf6wxpGad47;WJM(TvxW;qgGpk9Pr)ZW%Jkc9_q$EzKA^^&-!TB z1|Ri|>i)MuT!%K;7d4R#XWZ`i#G+n4(& zWgI8HzT+5=c-5SlFe@V{ZSXY7Ue)Qo@6Nz%_h&OfkDV&37g~`;tbpXinERpqjgb$#6<@O4bi z;4XTh<+Ha1S*^sEHzsaL{jn&U;mtiC%&837k3@uA6U`RL7SIZ@5bElOPF~&^n4gfo z1(UuLV(!sdc8u$oX+o!;j7Yfe2;1p_^!kfUo8fn~bl;!%7cmF~hwkqhTAn_iy%Gv< zhlMZ`3^{e#p8_+yM8`Qo!pbI9%8uHL@~+=N@c^ zwF#_6{BO#rchu|Xs6qIf>>qg#*`=7iCFTD)*BvYbZVG8sN+sUjjn(UDFgfY2oR2aFa z))`E@h}Q)WYf+8G7xU4L6~7r1;eF0ex1~AMc#%$XXu_Rscava%X97W7#kTmOo{adJ zQ^g&fZj-9h*PCyXq^hft4YN7;4_+;o_ZmEFaGiwGz-{7DoA#PIkwbai#cFglt1NRbN3mXCG4_LdI|N4DWLv)&h?WI>Tc5 zx(_sI4f4d?f^Rq8f7u|HoO8R!>Hfy;T)c_wHD2oMoG_!}R)Y3xULJW$!rZ2Lr0KD$ zY?-RJs=m#!D>QUdC0q?`e5nflz(r!X8Xqh}MXPTTc>W8cX?idRqlwcg;m#8n29R-` z197y17n~q~+ccptItf8_F&2y=ZheDJ51ylPV^_Qf)~btFd~bX6npF~~>8;>3s-{Rp zm@6r`kEoXTEM@JrAP5!ub946hH=G<1Ioc2?JzBtI=hF#@p=3F60FUW_lr}`MPD-2p ziYZal*;uewjMiDQn-Y`(W-&AbyKher@3&+cqrTo>s#V$C*#;>kG zM;Gxp%Mx(qjzGat$EFY1Up*0iUfRR{v~>Kxyn>C?TbzQx6tBN?`zexBM$=ctUd_2u z?J_H+^c~NHk4qi$KIYVoaUaTof*&%AdMv_?& zCbHbgiVtvESmLf89r(y9wc%}`O`p=CQm6mG|I=hilhShfUeDX07PAR53ndKT~ z>)en1-Uoq{byqNI{asSgOV@|Km0ggqYJTl3TtvQ5E<2ntiAj-2n5+6E=d@njS{O7C za)u~nrtF2k@fo6n@u3N;IiKxOwCN_^Bk!owuI==ZeeuNR5;bNul72SlnphnkQ8lp^ zxB*bQuXay27@2n%`<;pSlsSmcp4v7)wHjqB*oW;2-G;tM?2JHoqe`<{lVJ<-4={Eg z@@Rk! zI^D=gX_4JISluhR~NJc1m6S>qzZ@}+yi`0hrRm}W8u190_b6jD_KZo^qlNQcn zOWG1+?q=(Pb$0tEZ711!-{0e%n)uoeBVmR-Y| zI@p>^I9WSb{`B>dz?kD4zW|Y=N^q}?OXCV30aB(ea+bE%Hh+p}U@aZBK>|MvT)2eX zaRS$8UxRKf z*_gT=lc8w(GYx_Ku+;uK9)Q>%mNFS9!290T$r{9`W9ua0gt0vaj$T8@)&gsTv*5vw zOnA8U`)@ul7|wF{=LZS+NP$5}6pkO{(QLxyK~XpqFl{1mWyHhkqqFc0K^c0 zB@%|hQG!4Lrom&sKEOumtmR~j`*8x`=>+7e|Hb}@+qHfjP@EMPb3~egt;Lb+Ag;(C zc3O8}T0#C&0q_=o)}ZR&FU^0)8)n^CpzWxl?jV3qrwAFa!)iK?EQ`j0eom0S0sZwNV_=zrMDV zDX=JPf=m!*x0A|iF{e?imfWyPD7#Iox{Am7;;oOM+j`0KY_3s#p z|2GWqIsC0Y7%(7zFAL*`|2}SDz<1|wZNQ;`tJmK#1a1Z6p1+K_0B+s>iXou5?dBH@ z0>Q1uzhf})-|GY1X@Pb9cR7Ck-|B-RP=9Y1Xacuy9Jh;gGX?f$w19rZl*^!)LBzrXLj+;h(7e9k%d^FE*RnfrQwgpJfSC1Fwsdg1b!;xF`Q z2oyrFKS!^q2$9yqxjT`aA##AogdPHcNNeI<$v7fVx?;#UbsU!9fTLGdrYDh!IE)*; z&y9QSx`bXRwg$qyD)!-#%a;t$fA=4 zKaj3UMe?9Kbavt*E2M6crqC-*&$J^-*YS$-!zpjUCKZ_0>1wn0y^*OLRyj}2EgDo4 zrGuPv?epA3-DNk2ZdR1Kor|@+;iB7+S0ROZ%H;c&wG+AKr<&U%ma*a$m~Y^MP| zbSXzL<+T%^frCU-lhMtW?Gpj{2Ns2UXIi{ynuWS~xMT_osntjMiqi094I*x9hr$Al zYoEWcd`%8)d%>h86`IGGuH(Sm>Nt>Hk5J;%t*wyo8^P?pUNzSGtu154ghrTKxACD( zd`}JQeI7;skhyabl|4smmDI2K2Ds-vIjE`p#g63g&9-2{xs12m+pSjm-gX}?>xy!7 zi$#jyCb% zt~BO-yL=?RlPeO%L42|wf3WiQyy7*wEw1e7yX|3{RQg9k(&=&T4&OH)sDW++`U+SA z-Xbf92K&Jl>QASlxRHhr`J^csa3P4IA}9bZX$%x-K%~`9KwuDQECzT2js0^XfWf}DZKLLqWU2<)!{219~Eu&}16o8YkI9Ys*~U2~`F z#7{5%{Z+7JJi#3t2VByo5NUH0?H?_m3K12;x?)HqEP;r#h1tT))Qn7VBoZ)0%9-ru zDh8^4$3)eX0+|J1tuk=^X+HeFHy=i^=U4OLQV0kP0f)e3P`}ntaEL6W6R7+O1fUGa zU@~aR!2cl<1gr~={I7wK`R{>%{|*EI0UQcg1V{f>0(DRf6u$uQUG_uue*}Q(e`dYx ze{a3aKUoiKJ{&0v*blnFPc^hGfB`51D!-us$S5cP1OG=T7}}o$j@!TX0mOF{&HyHX z{s8`vfyjU**awzKN@@M$0R4V`j4)0(h%jX5bbOB#V2}X^L!|X_4tR_z!3PKdU_gSQ zp%5AP4|~;szy$;r5(NBV-O)cuBzSrJ78fW|a6WKKAS{>>G43P}Fe+hve~7gqK&-<3 zXsH2O>bUcGEY9SlDk%IO7ff&@f)^2sBSFBpyR)Y0PeG0Zkp;DPf+85Ei(Q*BbxybpWoj^BDnyAkawYFP{rD7XFsz9Tj|}Sh+QS z!iS#eSO~$B;WFLDJ6R2{+XHaRMMKt9PoQ@fVkKasFth(dDfB zSLt@S?JCEP>IV~*`3PD$t6$r%qu>Al7<6*K*?a>U{ z6IW-M!c{9m6zFFpj+t|nOd1#5o5quSFxOnv4a=)x+P0;oR&vr(+qM zvwgLu=bIX=3rn6IVt@3&n{b|i1QpSZ7GPzwmfl8B;KF#JjZ=g>MAf8w?;gY7OfOe4 z+?+jl@ti+tiYZnr_0DpZVzbN$_mcj`Xn^ihL|ZbU&3oj_=c0|%84m>R2x|!n6GT(s zS%&0D}!;%i?30Dy?FSK_ndFZW=2XWh$6zUY&%=RCrW=5AMMkuTo!rh7n|qWy1tYpq|!5a^~Y+vmC$Jb5jUw zHiE0)_|}`KH-@TbR5j#tACQGV-Q+#C$;qm>Z!{?RNHa!G=Zbd6gzbo~_c*l;f}@^*pN zi=5oq(AUUaK^n4ereU&Y#KN4=OZId=VcJUXyZW>qoJmh)>F%mdeqq{2#p?6IbL7VB zHCmTY8pD;%P`M*!`Qn3`9n*+56akqo1AWJ%T^uPpKgH8&aQ-YSlR__-`iyO*i5AspD0o4Jq3*q;wYp+KF@f1()RcA;HhmGw;>a&eR#4&bho* zsqs)n_SnMy^4>!c=KC0!Wm4I4H1;twb32xXhmlZJYemH?7xTEJ!&Wj7JuNBFXoO-H zU3Ez4k%dNxMG41BfE&r5Byi61V>lk$zYsKxply8i ztf;s&?uzw(&sVUherM;&3V)MF-HEk9uypjDlq&j94HxBUeZ{}w*Xr#O>zs)zTnBT; zI#O-B^>deR8tA;X?G3DRy?pdR^^)o_{tpMv1k=w3eF&=HALUQx|Ge8|>w)9;~JRE_=pY^IrUmE&eGI)8g;_`DH` ztm^7F{jh7RE2OKVl&w^<^dhGUeu=P)J3EMBUS$tQCf~E+zM&z`srN3AzRqt{^C{o3 zMg>l^SXDi#ve{Z}>!$VD%t%RjkyxE0$P;KQ-sb}qpY+gaX|HNDm|tI!vi<|_&9S~d zNLNtVJh1rLJ?MH=Xci->SXeS!8T^oWJ*hzEn|ZeR^yeI z-tTjGqm_@wFZ2!LxLvqF#3_7HDYSulc*Zf&D>r)2acz;IOSfY0mA^`xy-1Zh8}~`R z_3a;2n_Fq)KBqpvH@rSuT*y`NZ9&kh<-?UPN&4w1p1vMqbu*O2l>AJ3udlYcX%O|> zr%E#=@~f6Qh*k0F!91l8<0nn7@~~K+GYlM_rON7HUyY>Q3aJZCn#~c-o?6~uug%WU zQg=d0&QN#Pn$hT{myOv3o_Z>lX&>flGH4FV!Sqlqrfi+fNNVCuIq%mlT9Nw7k<>NX z8@N9C_*oROU;T2fFO^jRecq_kjlu?Xkz%^C+b##}N0n82(#7TjK9V#edfRwr4ZICW z&pv-(*16aE)i|SB$UvL@B(&6vXzsfqE|L@jzBMZGflPi>)dYFb)rber%_;u=O{Z2<`(s1n7 zfJJQKc+k4J&cTlS+s(4YmU_E&98*)&x44=Xml+*1k7{7Z_tHu2vh&mTObhGI zvV3bFQ{&7lIK=3wS>m?eu_ww?PWo^Wqi`efqus~IlIYOJoW{18<8}<&&(HX@#q7(rqdg4=wt7;(S3)Irb4thv&s<9`&qX3FN_^(CQQWF^hF5 z6)YlOAUer1G*sJ5etDhyv~IArJnI{6*tIKXB@qbE{xk0R*n6grCG6-(rjvQj#$pdQ zRFg%n$Gr-is}7gc(6CS3%F4~j_6gV+HB5TRa$eU$Y69kyY;W`|SpDtSoc4Wr6^PBR zg3Z#Lp&tu_zBzvz`x?43smwCL^NG#vDM~Z*IuB!8W@oiuMqa7NXL>7sRyAC;)hKFBjx+Sf>&?i2466c1Kx#PYxVWL0QaB8uNO_eNkzh%^^n4Vm+T*TOS zfZAYe<{~n*V655b(|hZJuDiFhPkT!)*g0CBu+-pSVX=-JuiAntvEEE894F`U75Qwe zl)Kn=W?o@`*Y{eXquW<}ZsuX3xbUEZ>3eOzYmrv(aj{$R=Uy$}<;i6fy*W0br2Mor zgpYA8+>%WYy}vg`V@T;vY4yD{Gfd_C*Lp~fg3Yemunuo#{3?Hb;v)m~G>h~s+_|N4 zDFGtqkY!W`pY^5X9tA;ypT~{3q*Fnw+l>>_oc6`z`?JSY-Vmmc11&zAOgS#-5URyn ziTd{MyAxgaohfP;8x!1A7t+ktn7%UI(OuA=b1OvOA+`NkWmSLXrfKlRx39I%aZ7h^ zxH+WXIYsW2FKp^wIDTW}i^i6w{g>GKasMK_wXbQ<=V_<#%6dNDt$Peq)um5G2~wUr%2tV&r7%Vx--O8SD)146SS z&l^?X+Ph!V?>*h^fL3wIeHYAFph-omoWVE1>MKkbT7h03TlC9#L9&9oA6&aUvz$9* z+@L+Chc+vdhOied&>zJz@xA7m-}_R5_BZ&v9Vn8#hVzATR&a?kNnsDoWD8c@3~Wwgn#$T^F#NT0S6k_4#i+S~ zoUB}i-7hb(oUS^XiEVa_Za!ZYMPZ#Z&r$c>?g|eJ};Z%aTx}M?aK4KgH zO4v1NQK@~{<8qj5Q0)Eu;G+Fp)F;DEJfrg}8REQI-s#_Y?eegx;P98PXJk|nn$uzX z{AZ#C#1#}o^ag9}Cv6Uvu`A_Qe`HnBWK53rjwl&*;Rk~gNgaC^LUwEO-A+wi?;nnGWhV_9A9gV*JI*M~h+E3+;)ow$-ffASJ* zp$2C|10G%T2p}?RAa&^GJXnX$xiPuZCG3iO=IY|eHj=oG=_l~L`YD&0vBKNUV@pa; z%zYYIG7oQi&@OaC?M1^lUKNqJy`$yiuUm-kwfSS!E}bEGaUf26U5ztn?)jWhh0Yd% zIcVxRq2+!Hje%u6<}nQB zI%c4|CCl;6bV!8dc=Eba25JcMhHI@Db*a}kL=(&#pb7;RNvyw9H|pI$NTcY9B-{R!+MRk;*eeVBUWa=4Fz6B zh-Wb8Y~p%FeKkveLZt{pKY3u*nzvMe!Fz@rWzG9>q8_C+f$H&ysP7bZzh3z&@{I7) ziUxig-CD{00SE>OXDtm*_vFe6HttX7=h?X31LU+^U)El4HD4eeNG@7W*lT;O^43c! zq}H(qSTTKZ$-0%PBldxe#iW5A5Ui z+}O6ys~`I^OmY|{J+fb*FA_aJNH1|XK1-B=VPAnNvsCB2Rb*@OIs4T5JT7IyQWg8B z>V&a`hUf;C$Y}QA_f{#WZplT(^=tJSEScm1Rc>WWO_Q+lhw#U4>(1O#&UG6sBq3#i zg+Z+Vt)a7SDJcs3_^zRyV6XEvE9$LS9tgd@hE^L|mVN13N9&rxzn~nsrgKBSK_I_k z@DRhc7({DJY~NhG4{9c04SHj`QCp8KagS#mf;$LW88# z6W=?TmEDnQ5nT;Ngxh@kOR;J7W|5(^kLw4JM`VrILeHY14dOI~DfSJ!F)6N1x#@QW zw1@Oh>FM2%Qdc-?SsMJrYS{wT7xOg%T3m9n9*60-ygfcuV=2<8?yvsx9>+|LGH=oN za0IW!YBGm#>2*HMgq!gOG0nB}NJc@{+A?VS75+yovXuaD>MHi+cvE@V>kf^Fh%sbzmU44GzelkGWt;Z)>dwpT3rvM+_+j;pF2 zCQgnV+U+hRrjv~^7hPyJqmI0rfRnUs7}}OTwBCPefLV9^+b)}u4J(j<`ISzlunRx< zWEf2L2So$>hcpH3-{&c;jr9qkP{!&pi}fxZac2fxl0a@jl}A@Z<0_S^{U2I_>ikOc zb7S@9A~U;!O8ZGR(?cJXykBdI_SN0>kAa?c+9S1uaK5x#`a|R=-k6Ss^DV(jV$$?1 zYf~(qlONFxVz<__hFI$8(?w*M*CD&Id>Cj#z1X_~Zu%RnSj+``sIuQWwk3LV=d-q)zDbT%%t*}K&Fe0Y3ylZ zsYmfVecrQ9nPwYb_BPy4rT>TR`HAkAfx&<54jiPxe(*#)tT)KttK&#mBHn{cAX4Zj zP-K8{1K4>ZU2}CqBMDVJd1v=e;fNShfc=s*A-G{ER5^wJ*TlHtU40>n$Og&Dy0f#^}Bsu&WEk_7ozXyJ(@vYIo7_yY_*%=b2sprB0m>wW-)Hpux=dNkaD zv>x8w2_kKQcR%4y!v7FZdM)q{WM_~w1PA=5w~P#k!>>0|4m`@g-UtLpDncPBV6%`= zkdA~xkTS9mBqibVtL|SdPy-XORJVLFyI?kp)TwV7QFj z_w)t8xf0CX@nBXHAaMZ=lb^Xyp#7^$gQPHt0*Wr)0fc0SKHZ_Y)d*gI+rWOB0RD4U z%7{pC@WKMAR8cGjPb5HKQZS?x6e8+OCVPQJe=`Zk`#gHB(~$>YCxhD zOdqL($um)Pc{mgfg+XC*Ff{N)OF~g1P^j3?i~i1Kt6>1ACpb}FoMHlyYWvkxA0p0? z9>7k99{T46K_U>q`Ei7Nm!V{lz`lSN#Qld1e2Krypipoxe%1Sb$&esR{V(Q2$o=*% zC@388g1?PL!GE7m4)B`4>A~Q#zv;nbfxO_~^-u`FbADX|4wVBS{#AyQf&POG{u@?E z6c{`HHWnrGn;j?w5Y+yrheFE!G#{CW0b&u6!rhzV{czy^g6zBrfj|Z_SQH-s+uH7q c1PH}hDeg}qV~AvmN1%YCN-r#|VW>&}e^_qR<^TWy literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TerminalSession.tex b/latex/classcore_1_1TerminalSession.tex new file mode 100644 index 0000000..008b7f5 --- /dev/null +++ b/latex/classcore_1_1TerminalSession.tex @@ -0,0 +1,84 @@ +\hypertarget{classcore_1_1TerminalSession}{}\doxysection{core\+::Terminal\+Session Class Reference} +\label{classcore_1_1TerminalSession}\index{core::TerminalSession@{core::TerminalSession}} + + +Inheritance diagram for core\+::Terminal\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=203pt]{classcore_1_1TerminalSession__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Terminal\+Session\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{classcore_1_1TerminalSession__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a6773b1897d2e417ab573b28fa127230c}\label{classcore_1_1TerminalSession_a6773b1897d2e417ab573b28fa127230c}} +{\bfseries Terminal\+Session} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, \mbox{\hyperlink{classcore_1_1TCPServer}{T\+C\+P\+Server}} \&server) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a0df0106164a7f213acf2e814e725c576}\label{classcore_1_1TerminalSession_a0df0106164a7f213acf2e814e725c576}} +int {\bfseries get\+Lines} () +\item +void \mbox{\hyperlink{classcore_1_1TerminalSession_a42bb06857891220a831da04248233935}{clear}} () +\item +void \mbox{\hyperlink{classcore_1_1TerminalSession_aa660768eed03b0b996a749e8a146446c}{clear\+E\+OL}} () +\item +void \mbox{\hyperlink{classcore_1_1TerminalSession_aa9939cbe36c08e1a0b8413a96ca251fa}{set\+Cursor\+Location}} (int x, int y) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_abb104a3743f52c8237afc25c9abd3815}\label{classcore_1_1TerminalSession_abb104a3743f52c8237afc25c9abd3815}} +void {\bfseries set\+Color} (int color) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a96c909e28a87f2e5b64fe2ca7ab79ca7}\label{classcore_1_1TerminalSession_a96c909e28a87f2e5b64fe2ca7ab79ca7}} +void {\bfseries set\+Back\+Color} (int color) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a930de98aea34eca4723a1efbc0272223}\label{classcore_1_1TerminalSession_a930de98aea34eca4723a1efbc0272223}} +void {\bfseries save\+Cursor} () +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_afc89dc99e1b104bee7717b0cda2f9b37}\label{classcore_1_1TerminalSession_afc89dc99e1b104bee7717b0cda2f9b37}} +void {\bfseries restore\+Cursor} () +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a21f8ec433bcb4c7f55807cdcbc929134}\label{classcore_1_1TerminalSession_a21f8ec433bcb4c7f55807cdcbc929134}} +void {\bfseries Next\+Line} (int lines) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_aea2f243e65074cb174ddf8844c9126ff}\label{classcore_1_1TerminalSession_aea2f243e65074cb174ddf8844c9126ff}} +void {\bfseries Previous\+Line} (int lines) +\item +\mbox{\Hypertarget{classcore_1_1TerminalSession_a2305ddd73d1ccb8a303abd718cd6e7b0}\label{classcore_1_1TerminalSession_a2305ddd73d1ccb8a303abd718cd6e7b0}} +void {\bfseries scroll\+Area} (int start, int end) +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1TerminalSession_a42bb06857891220a831da04248233935}\label{classcore_1_1TerminalSession_a42bb06857891220a831da04248233935}} +\index{core::TerminalSession@{core::TerminalSession}!clear@{clear}} +\index{clear@{clear}!core::TerminalSession@{core::TerminalSession}} +\doxysubsubsection{\texorpdfstring{clear()}{clear()}} +{\footnotesize\ttfamily void core\+::\+Terminal\+Session\+::clear (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Clear the display. \mbox{\Hypertarget{classcore_1_1TerminalSession_aa660768eed03b0b996a749e8a146446c}\label{classcore_1_1TerminalSession_aa660768eed03b0b996a749e8a146446c}} +\index{core::TerminalSession@{core::TerminalSession}!clearEOL@{clearEOL}} +\index{clearEOL@{clearEOL}!core::TerminalSession@{core::TerminalSession}} +\doxysubsubsection{\texorpdfstring{clearEOL()}{clearEOL()}} +{\footnotesize\ttfamily void core\+::\+Terminal\+Session\+::clear\+E\+OL (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Clear the display from the cursor to the end of line. \mbox{\Hypertarget{classcore_1_1TerminalSession_aa9939cbe36c08e1a0b8413a96ca251fa}\label{classcore_1_1TerminalSession_aa9939cbe36c08e1a0b8413a96ca251fa}} +\index{core::TerminalSession@{core::TerminalSession}!setCursorLocation@{setCursorLocation}} +\index{setCursorLocation@{setCursorLocation}!core::TerminalSession@{core::TerminalSession}} +\doxysubsubsection{\texorpdfstring{setCursorLocation()}{setCursorLocation()}} +{\footnotesize\ttfamily void core\+::\+Terminal\+Session\+::set\+Cursor\+Location (\begin{DoxyParamCaption}\item[{int}]{x, }\item[{int}]{y }\end{DoxyParamCaption})} + +Set the location of the cursor on the display. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Terminal\+Session.\+h\item +Terminal\+Session.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1TerminalSession__coll__graph.md5 b/latex/classcore_1_1TerminalSession__coll__graph.md5 new file mode 100644 index 0000000..0e7d464 --- /dev/null +++ b/latex/classcore_1_1TerminalSession__coll__graph.md5 @@ -0,0 +1 @@ +79a104eec9d87e5725cdcedbbd80ce2b \ No newline at end of file diff --git a/latex/classcore_1_1TerminalSession__coll__graph.pdf b/latex/classcore_1_1TerminalSession__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..21afaf93e1c888eb75adaa931e6ba30a9bcc7f7f GIT binary patch literal 13572 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 SGXS`rDDa~vZUrqx^8W*~%r=Pt literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1TerminalSession__inherit__graph.md5 b/latex/classcore_1_1TerminalSession__inherit__graph.md5 new file mode 100644 index 0000000..82c7c35 --- /dev/null +++ b/latex/classcore_1_1TerminalSession__inherit__graph.md5 @@ -0,0 +1 @@ +5d48819c89efffda2390cb97e42f0b32 \ No newline at end of file diff --git a/latex/classcore_1_1TerminalSession__inherit__graph.pdf b/latex/classcore_1_1TerminalSession__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9d14d9aec987d70d887165e717d3b8c88e647397 GIT binary patch literal 9053 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⋘oddfhXth^GPE9ygx}4{3ks!2@Aw6(spz*bo2#|!cO!vAQH(C m1fcjWR%j6Hh>&fk-aaNCWGsoi?KzStG=`3!U*)7K-Twg!#tS0= literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Thread.tex b/latex/classcore_1_1Thread.tex new file mode 100644 index 0000000..7d2ca91 --- /dev/null +++ b/latex/classcore_1_1Thread.tex @@ -0,0 +1,68 @@ +\hypertarget{classcore_1_1Thread}{}\doxysection{core\+::Thread Class Reference} +\label{classcore_1_1Thread}\index{core::Thread@{core::Thread}} + + +{\ttfamily \#include $<$Thread.\+h$>$} + + + +Inheritance diagram for core\+::Thread\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=157pt]{classcore_1_1Thread__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Thread\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=157pt]{classcore_1_1Thread__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Thread_acf8e7e682431fa6a4a3a77ce9b33aefc}\label{classcore_1_1Thread_acf8e7e682431fa6a4a3a77ce9b33aefc}} +{\bfseries Thread} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll) +\item +void \mbox{\hyperlink{classcore_1_1Thread_ae6885df9a9b9503669e5776518b19054}{start}} () +\item +\mbox{\Hypertarget{classcore_1_1Thread_a9ba3b9a5127dcfa0ee2c5f315d6a648d}\label{classcore_1_1Thread_a9ba3b9a5127dcfa0ee2c5f315d6a648d}} +void {\bfseries join} () +\item +\mbox{\Hypertarget{classcore_1_1Thread_a0b5d8efe9bf913e06a7768cb5ef75c8a}\label{classcore_1_1Thread_a0b5d8efe9bf913e06a7768cb5ef75c8a}} +std\+::string {\bfseries get\+Status} () +\item +\mbox{\Hypertarget{classcore_1_1Thread_adddf5bccd9189cbd81eeadf0311dbdd6}\label{classcore_1_1Thread_adddf5bccd9189cbd81eeadf0311dbdd6}} +pid\+\_\+t {\bfseries get\+Thread\+Id} () +\item +\mbox{\Hypertarget{classcore_1_1Thread_aca6a18a5aba7e87fe91a828f4896d654}\label{classcore_1_1Thread_aca6a18a5aba7e87fe91a828f4896d654}} +int {\bfseries get\+Count} () +\item +\mbox{\Hypertarget{classcore_1_1Thread_aa5b676aa441735c2ac60d05fd3ab02b5}\label{classcore_1_1Thread_aa5b676aa441735c2ac60d05fd3ab02b5}} +void {\bfseries output} (std\+::stringstream \&data) +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1Thread}{Thread}} + +This thread object is designed to be the thread processor for the \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} object. It wraps the thread object to allow maintaining a status value for monitoring the thread activity. \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} will instantiate a \mbox{\hyperlink{classcore_1_1Thread}{Thread}} object for each thread specified in the \mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}}\textquotesingle{}s start method. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1Thread_ae6885df9a9b9503669e5776518b19054}\label{classcore_1_1Thread_ae6885df9a9b9503669e5776518b19054}} +\index{core::Thread@{core::Thread}!start@{start}} +\index{start@{start}!core::Thread@{core::Thread}} +\doxysubsubsection{\texorpdfstring{start()}{start()}} +{\footnotesize\ttfamily void core\+::\+Thread\+::start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +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\+:\begin{DoxyCompactItemize} +\item +Thread.\+h\item +Thread.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1Thread__coll__graph.md5 b/latex/classcore_1_1Thread__coll__graph.md5 new file mode 100644 index 0000000..bbc1377 --- /dev/null +++ b/latex/classcore_1_1Thread__coll__graph.md5 @@ -0,0 +1 @@ +c6c8d331b9f919c769d46392c930a2b0 \ No newline at end of file diff --git a/latex/classcore_1_1Thread__coll__graph.pdf b/latex/classcore_1_1Thread__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b83ce2ce08fd6d6ec7680bc4cb90bc73d5065ae2 GIT binary patch literal 6406 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 + + + +Inheritance diagram for core\+::Timer\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=156pt]{classcore_1_1Timer__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::Timer\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=228pt]{classcore_1_1Timer__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1Timer_aa12f319bab9c7a350244c4d47fe59de9}\label{classcore_1_1Timer_aa12f319bab9c7a350244c4d47fe59de9}} +{\bfseries Timer} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll) +\item +\mbox{\Hypertarget{classcore_1_1Timer_a6ba8de81f8e3b26fd132e29230646024}\label{classcore_1_1Timer_a6ba8de81f8e3b26fd132e29230646024}} +{\bfseries Timer} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, double delay) +\item +void \mbox{\hyperlink{classcore_1_1Timer_ac0a642cdcb76b7f995137162050d3d0b}{set\+Timer}} (double delay) +\item +void \mbox{\hyperlink{classcore_1_1Timer_a8e063f46e89dac04364871e909ab940a}{clear\+Timer}} () +\item +double \mbox{\hyperlink{classcore_1_1Timer_a0df7f1ffc05529b45d6e13713bbc0209}{get\+Elapsed}} () +\item +\mbox{\Hypertarget{classcore_1_1Timer_afee1c871ce74e6b594bd6e64ad3cb576}\label{classcore_1_1Timer_afee1c871ce74e6b594bd6e64ad3cb576}} +double {\bfseries get\+Epoch} () +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +virtual void \mbox{\hyperlink{classcore_1_1Timer_ae51704ff08d985bbc30e3ff4c9b3c6ca}{on\+Timeout}} ()=0 +\end{DoxyCompactItemize} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1Timer}{Timer}} + +Set and trigger callback upon specified timeout. + +The \mbox{\hyperlink{classcore_1_1Timer}{Timer}} is used to establish a timer using the timer socket interface. It cannot be instantiated directly but must be extended. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1Timer_a8e063f46e89dac04364871e909ab940a}\label{classcore_1_1Timer_a8e063f46e89dac04364871e909ab940a}} +\index{core::Timer@{core::Timer}!clearTimer@{clearTimer}} +\index{clearTimer@{clearTimer}!core::Timer@{core::Timer}} +\doxysubsubsection{\texorpdfstring{clearTimer()}{clearTimer()}} +{\footnotesize\ttfamily void core\+::\+Timer\+::clear\+Timer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Use the \mbox{\hyperlink{classcore_1_1Timer_a8e063f46e89dac04364871e909ab940a}{clear\+Timer()}} to unset the timer and return the timer to an idle state. \mbox{\Hypertarget{classcore_1_1Timer_a0df7f1ffc05529b45d6e13713bbc0209}\label{classcore_1_1Timer_a0df7f1ffc05529b45d6e13713bbc0209}} +\index{core::Timer@{core::Timer}!getElapsed@{getElapsed}} +\index{getElapsed@{getElapsed}!core::Timer@{core::Timer}} +\doxysubsubsection{\texorpdfstring{getElapsed()}{getElapsed()}} +{\footnotesize\ttfamily double core\+::\+Timer\+::get\+Elapsed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Use the \mbox{\hyperlink{classcore_1_1Timer_a0df7f1ffc05529b45d6e13713bbc0209}{get\+Elapsed()}} method to obtain the amount of time that has elapsed since the timer was set. \mbox{\Hypertarget{classcore_1_1Timer_ae51704ff08d985bbc30e3ff4c9b3c6ca}\label{classcore_1_1Timer_ae51704ff08d985bbc30e3ff4c9b3c6ca}} +\index{core::Timer@{core::Timer}!onTimeout@{onTimeout}} +\index{onTimeout@{onTimeout}!core::Timer@{core::Timer}} +\doxysubsubsection{\texorpdfstring{onTimeout()}{onTimeout()}} +{\footnotesize\ttfamily virtual void core\+::\+Timer\+::on\+Timeout (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}} + +This method is called when the time out occurs. \mbox{\Hypertarget{classcore_1_1Timer_ac0a642cdcb76b7f995137162050d3d0b}\label{classcore_1_1Timer_ac0a642cdcb76b7f995137162050d3d0b}} +\index{core::Timer@{core::Timer}!setTimer@{setTimer}} +\index{setTimer@{setTimer}!core::Timer@{core::Timer}} +\doxysubsubsection{\texorpdfstring{setTimer()}{setTimer()}} +{\footnotesize\ttfamily void core\+::\+Timer\+::set\+Timer (\begin{DoxyParamCaption}\item[{double}]{delay }\end{DoxyParamCaption})} + +Use the \mbox{\hyperlink{classcore_1_1Timer_ac0a642cdcb76b7f995137162050d3d0b}{set\+Timer()}} method to set the time out value for timer. Setting the timer also starts the timer countdown. The \mbox{\hyperlink{classcore_1_1Timer_a8e063f46e89dac04364871e909ab940a}{clear\+Timer()}} method can be used to reset the timer without triggering the \mbox{\hyperlink{classcore_1_1Timer_ae51704ff08d985bbc30e3ff4c9b3c6ca}{on\+Timeout()}} callback. + + +\begin{DoxyParams}{Parameters} +{\em delay} & the amount of time in seconds to wait before trigering the on\+Timeout function. \\ +\hline +\end{DoxyParams} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +Timer.\+h\item +Timer.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1Timer__coll__graph.md5 b/latex/classcore_1_1Timer__coll__graph.md5 new file mode 100644 index 0000000..f18e4ad --- /dev/null +++ b/latex/classcore_1_1Timer__coll__graph.md5 @@ -0,0 +1 @@ +355597a5b8f73bdd4a64e5354c67cd58 \ No newline at end of file diff --git a/latex/classcore_1_1Timer__coll__graph.pdf b/latex/classcore_1_1Timer__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9263847adaba46bdefe320a3d59b04a776d14478 GIT binary patch literal 8847 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1Timer__inherit__graph.md5 b/latex/classcore_1_1Timer__inherit__graph.md5 new file mode 100644 index 0000000..b7db9d8 --- /dev/null +++ b/latex/classcore_1_1Timer__inherit__graph.md5 @@ -0,0 +1 @@ +617971adb50a1efe813581edca119552 \ No newline at end of file diff --git a/latex/classcore_1_1Timer__inherit__graph.pdf b/latex/classcore_1_1Timer__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c6074c1e808f93ee0cbbc7d87e524db69d164b12 GIT binary patch literal 6996 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 R45E+-D4VFLj)^YYe*sI``y>DW literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1UDPServerSocket.tex b/latex/classcore_1_1UDPServerSocket.tex new file mode 100644 index 0000000..1ce96ee --- /dev/null +++ b/latex/classcore_1_1UDPServerSocket.tex @@ -0,0 +1,80 @@ +\hypertarget{classcore_1_1UDPServerSocket}{}\doxysection{core\+::U\+D\+P\+Server\+Socket Class Reference} +\label{classcore_1_1UDPServerSocket}\index{core::UDPServerSocket@{core::UDPServerSocket}} + + +{\ttfamily \#include $<$U\+D\+P\+Server\+Socket.\+h$>$} + + + +Inheritance diagram for core\+::U\+D\+P\+Server\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=290pt]{classcore_1_1UDPServerSocket__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::U\+D\+P\+Server\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=255pt]{classcore_1_1UDPServerSocket__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1UDPServerSocket_a6fee7bc6dc2f94d48734c07cbc918734}\label{classcore_1_1UDPServerSocket_a6fee7bc6dc2f94d48734c07cbc918734}} +{\bfseries U\+D\+P\+Server\+Socket} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll, std\+::string url, short int port, std\+::string command\+Name) +\end{DoxyCompactItemize} +\doxysubsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classcore_1_1UDPServerSocket_a41933ca153c854a800e3d047ab18313e}{on\+Data\+Received}} (std\+::string data) override +\begin{DoxyCompactList}\small\item\em Called when data is received from the socket. \end{DoxyCompactList}\item +\mbox{\Hypertarget{classcore_1_1UDPServerSocket_aef32dee99a40a8951a708e99776539d4}\label{classcore_1_1UDPServerSocket_aef32dee99a40a8951a708e99776539d4}} +int {\bfseries process\+Command} (std\+::string request, std\+::stringstream \&data) +\end{DoxyCompactItemize} +\doxysubsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1UDPServerSocket_a83362532c66271699c4e60d1da2a41bc}\label{classcore_1_1UDPServerSocket_a83362532c66271699c4e60d1da2a41bc}} +std\+::vector$<$ Session $\ast$ $>$ {\bfseries sessions} +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +\doxysubsection{Detailed Description} +\mbox{\hyperlink{classcore_1_1UDPSocket}{U\+D\+P\+Socket}} + +Manage a socket connection as a U\+DP server type. Connections to the socket are processed through the session list functionality. A list of sessions is maintained in a vector object. + +\doxysubsection{Member Function Documentation} +\mbox{\Hypertarget{classcore_1_1UDPServerSocket_a41933ca153c854a800e3d047ab18313e}\label{classcore_1_1UDPServerSocket_a41933ca153c854a800e3d047ab18313e}} +\index{core::UDPServerSocket@{core::UDPServerSocket}!onDataReceived@{onDataReceived}} +\index{onDataReceived@{onDataReceived}!core::UDPServerSocket@{core::UDPServerSocket}} +\doxysubsubsection{\texorpdfstring{onDataReceived()}{onDataReceived()}} +{\footnotesize\ttfamily void core\+::\+U\+D\+P\+Server\+Socket\+::on\+Data\+Received (\begin{DoxyParamCaption}\item[{std\+::string}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}, {\ttfamily [virtual]}} + + + +Called when data is received from the socket. + +The on\+Connected 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. The on\+Data\+Received 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. E\+P\+O\+L\+L\+IN + + +\begin{DoxyParams}{Parameters} +{\em data} & the data that has been received from the socket. \\ +\hline +\end{DoxyParams} + + +Reimplemented from \mbox{\hyperlink{classcore_1_1Socket_ac8d6a2c54696eb6fc2024cf6bcf6b4e5}{core\+::\+Socket}}. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +U\+D\+P\+Server\+Socket.\+h\item +U\+D\+P\+Server\+Socket.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1UDPServerSocket__coll__graph.md5 b/latex/classcore_1_1UDPServerSocket__coll__graph.md5 new file mode 100644 index 0000000..6ecfcc4 --- /dev/null +++ b/latex/classcore_1_1UDPServerSocket__coll__graph.md5 @@ -0,0 +1 @@ +ee5edced35c03e5bc69a3bd5b59cb218 \ No newline at end of file diff --git a/latex/classcore_1_1UDPServerSocket__coll__graph.pdf b/latex/classcore_1_1UDPServerSocket__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7fc3a02460283aebc87a12e53ab2f4fb944909b6 GIT binary patch literal 9695 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1UDPSocket.tex b/latex/classcore_1_1UDPSocket.tex new file mode 100644 index 0000000..6532a4e --- /dev/null +++ b/latex/classcore_1_1UDPSocket.tex @@ -0,0 +1,33 @@ +\hypertarget{classcore_1_1UDPSocket}{}\doxysection{core\+::U\+D\+P\+Socket Class Reference} +\label{classcore_1_1UDPSocket}\index{core::UDPSocket@{core::UDPSocket}} + + +Inheritance diagram for core\+::U\+D\+P\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=208pt]{classcore_1_1UDPSocket__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for core\+::U\+D\+P\+Socket\+:\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=235pt]{classcore_1_1UDPSocket__coll__graph} +\end{center} +\end{figure} +\doxysubsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classcore_1_1UDPSocket_a9dcbe1203fea9c25400a391d3430e976}\label{classcore_1_1UDPSocket_a9dcbe1203fea9c25400a391d3430e976}} +{\bfseries U\+D\+P\+Socket} (\mbox{\hyperlink{classcore_1_1EPoll}{E\+Poll}} \&e\+Poll) +\end{DoxyCompactItemize} +\doxysubsection*{Additional Inherited Members} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +U\+D\+P\+Socket.\+h\item +U\+D\+P\+Socket.\+cpp\end{DoxyCompactItemize} diff --git a/latex/classcore_1_1UDPSocket__coll__graph.md5 b/latex/classcore_1_1UDPSocket__coll__graph.md5 new file mode 100644 index 0000000..28c2fe1 --- /dev/null +++ b/latex/classcore_1_1UDPSocket__coll__graph.md5 @@ -0,0 +1 @@ +b78440274322ebafec9b093976210cc0 \ No newline at end of file diff --git a/latex/classcore_1_1UDPSocket__coll__graph.pdf b/latex/classcore_1_1UDPSocket__coll__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fe81df04116ec408cbb408a966856142bcb03b03 GIT binary patch literal 8900 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 literal 0 HcmV?d00001 diff --git a/latex/classcore_1_1UDPSocket__inherit__graph.md5 b/latex/classcore_1_1UDPSocket__inherit__graph.md5 new file mode 100644 index 0000000..0aacbda --- /dev/null +++ b/latex/classcore_1_1UDPSocket__inherit__graph.md5 @@ -0,0 +1 @@ +c67a7f359a1f48f7b3e8b59b69c2ddb1 \ No newline at end of file diff --git a/latex/classcore_1_1UDPSocket__inherit__graph.pdf b/latex/classcore_1_1UDPSocket__inherit__graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..272b1313cc890551fb3b555b16579fdc76722f72 GIT binary patch literal 7633 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 literal 0 HcmV?d00001 diff --git a/latex/doxygen.sty b/latex/doxygen.sty new file mode 100644 index 0000000..78a5254 --- /dev/null +++ b/latex/doxygen.sty @@ -0,0 +1,576 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by

     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\raggedright\normalfont\normalsize\bfseries}} +\makeatother +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/latex/hierarchy.tex b/latex/hierarchy.tex new file mode 100644 index 0000000..dd606d5 --- /dev/null +++ b/latex/hierarchy.tex @@ -0,0 +1,45 @@ +\doxysection{Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList} +\item \contentsline{section}{core\+::I\+P\+Address\+List}{\pageref{classcore_1_1IPAddressList}}{} +\item Log\+Listener\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Console\+Server}{\pageref{classcore_1_1ConsoleServer}}{} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::Object}{\pageref{classcore_1_1Object}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Command}{\pageref{classcore_1_1Command}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Command\+List}{\pageref{classcore_1_1CommandList}}{} +\item \contentsline{section}{core\+::E\+Poll}{\pageref{classcore_1_1EPoll}}{} +\item \contentsline{section}{core\+::T\+C\+P\+Server}{\pageref{classcore_1_1TCPServer}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Console\+Server}{\pageref{classcore_1_1ConsoleServer}}{} +\item \contentsline{section}{core\+::T\+L\+S\+Server}{\pageref{classcore_1_1TLSServer}}{} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::U\+D\+P\+Server\+Socket}{\pageref{classcore_1_1UDPServerSocket}}{} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::I\+P\+Address}{\pageref{classcore_1_1IPAddress}}{} +\item \contentsline{section}{core\+::Session\+Filter}{\pageref{classcore_1_1SessionFilter}}{} +\item \contentsline{section}{core\+::Socket}{\pageref{classcore_1_1Socket}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::I\+Notify}{\pageref{classcore_1_1INotify}}{} +\item \contentsline{section}{core\+::T\+C\+P\+Socket}{\pageref{classcore_1_1TCPSocket}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::T\+C\+P\+Server}{\pageref{classcore_1_1TCPServer}}{} +\item \contentsline{section}{core\+::T\+C\+P\+Session}{\pageref{classcore_1_1TCPSession}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Terminal\+Session}{\pageref{classcore_1_1TerminalSession}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::Console\+Session}{\pageref{classcore_1_1ConsoleSession}}{} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::T\+L\+S\+Session}{\pageref{classcore_1_1TLSSession}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::Timer}{\pageref{classcore_1_1Timer}}{} +\item \contentsline{section}{core\+::U\+D\+P\+Socket}{\pageref{classcore_1_1UDPSocket}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{core\+::U\+D\+P\+Server\+Socket}{\pageref{classcore_1_1UDPServerSocket}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{core\+::Thread}{\pageref{classcore_1_1Thread}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} diff --git a/latex/longtable_doxygen.sty b/latex/longtable_doxygen.sty new file mode 100644 index 0000000..a0eb314 --- /dev/null +++ b/latex/longtable_doxygen.sty @@ -0,0 +1,448 @@ +%% +%% This is file `longtable.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longtable.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% The source is maintained by the LaTeX Project team and bug +%% reports for it can be opened at http://latex-project.org/bugs.html +%% (but please observe conditions on bug reports sent to that address!) +%% +%% Copyright 1993-2016 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{longtable_doxygen} + [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] +\def\LT@err{\PackageError{longtable}} +\def\LT@warn{\PackageWarning{longtable}} +\def\LT@final@warn{% + \AtEndDocument{% + \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% + \global\let\LT@final@warn\relax} +\DeclareOption{errorshow}{% + \def\LT@warn{\PackageInfo{longtable}}} +\DeclareOption{pausing}{% + \def\LT@warn#1{% + \LT@err{#1}{This is not really an error}}} +\DeclareOption{set}{} +\DeclareOption{final}{} +\ProcessOptions +\newskip\LTleft \LTleft=\fill +\newskip\LTright \LTright=\fill +\newskip\LTpre \LTpre=\bigskipamount +\newskip\LTpost \LTpost=\bigskipamount +\newcount\LTchunksize \LTchunksize=20 +\let\c@LTchunksize\LTchunksize +\newdimen\LTcapwidth \LTcapwidth=4in +\newbox\LT@head +\newbox\LT@firsthead +\newbox\LT@foot +\newbox\LT@lastfoot +\newcount\LT@cols +\newcount\LT@rows +\newcounter{LT@tables} +\newcounter{LT@chunks}[LT@tables] +\ifx\c@table\undefined + \newcounter{table} + \def\fnum@table{\tablename~\thetable} +\fi +\ifx\tablename\undefined + \def\tablename{Table} +\fi +\newtoks\LT@p@ftn +\mathchardef\LT@end@pen=30000 +\def\longtable{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LT@err{longtable not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}} +\def\LT@array[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \output{\LT@output}} +\def\endlongtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LT@nofcols#1&{% + \futurelet\@let@token\LT@n@fcols} +\def\LT@n@fcols{% + \advance\LT@cols\@ne + \ifx\@let@token\LT@nofcols + \expandafter\@gobble + \else + \expandafter\LT@nofcols + \fi} +\def\LT@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr + \LT@t@bularcr}% + {\LT@t@bularcr}} +\let\LT@crcr\crcr +\let\LT@setprevdepth\relax +\def\LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \gdef\LT@setprevdepth{% + \prevdepth\z@\global + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} +\def\LT@xtabularcr{% + \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} +\def\LT@ntabularcr{% + \ifnum0=`{}\fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \LT@bchunk} +\def\LT@echunk{% + \crcr\LT@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LT@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LT@chunks + \else + \kern#2\relax + \fi} +\def\LT@entry@chop#1#2{% + \noexpand\LT@entry + {\ifnum#1>\c@LT@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LT@entry@write{% + \noexpand\LT@entry^^J% + \@spaces} +\def\LT@kill{% + \LT@echunk + \LT@get@widths + \expandafter\LT@rebox\LT@bchunk} +\def\LT@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LT@blank@row{% + \xdef\LT@save@row{\expandafter\LT@build@blank + \romannumeral\number\LT@cols 001 }} +\def\LT@build@blank#1{% + \if#1m% + \noexpand\LT@entry{1}{0pt}% + \expandafter\LT@build@blank + \fi} +\def\LT@make@row{% + \global\expandafter\let\expandafter\LT@save@row + \csname LT@\romannumeral\c@LT@tables\endcsname + \ifx\LT@save@row\relax + \LT@blank@row + \else + {\let\LT@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LT@cols + \expandafter\@gobble\LT@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LT@blank@row + \fi}% + \fi} +\let\setlongtables\relax +\def\LT@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LT@old@row\LT@save@row + \global\let\LT@save@row\@empty + \count@\LT@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LT@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LT@@save@row\@undefined + \let\LT@@save@row\LT@save@row + \fi} +\def\LT@def@row{% + \let\LT@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LT@old@row + \else + {1}{0pt}% + \fi}% + \let\LT@entry\relax + \xdef\LT@save@row{% + \LT@entry + \expandafter\LT@max@sel\@tempa + \LT@save@row}} +\def\LT@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LT@chunks + \fi}% + {\the\wd\tw@}} +\def\LT@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LT@@hline} +\def\LT@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LT@sep}% + \multispan\LT@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LT@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} +\def\LT@c@ption#1[#2]#3{% + \LT@makecaption#1\fnum@table{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% + \fi} +\def\LT@capti@n{% + \@ifstar + {\egroup\LT@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\LT@end@hd@ft#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} +\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} +\def\endhead{\LT@end@hd@ft\LT@head} +\def\endfoot{\LT@end@hd@ft\LT@foot} +\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} +\def\LT@startpbox#1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} +\def\LT@p@ftntext#1{% + \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LT@p@ftn\expandafter{\@tempa{#1}}}% + +\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} +\endinput +%% +%% End of file `longtable.sty'. diff --git a/latex/refman.tex b/latex/refman.tex new file mode 100644 index 0000000..356bbf1 --- /dev/null +++ b/latex/refman.tex @@ -0,0 +1,210 @@ +\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book} + +%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package +\usepackage{ifthen} +\ifx\requestedLaTeXdate\undefined +\usepackage{array} +\else +\usepackage{array}[=2016-10-06] +\fi +%% +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{calc} +\usepackage{doxygen} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage[table]{xcolor} +\usepackage{ifpdf,ifxetex} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Arguments of doxygenemoji: +% 1) '::' form of the emoji, already "LaTeX"-escaped +% 2) file with the name of the emoji without the .png extension +% in case image exist use this otherwise use the '::' form +\newcommand{\doxygenemoji}[2]{% + \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% +} +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} +\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} +\doxynormalparskip +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +\makeatletter +\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +\usepackage{newunicodechar} + \newunicodechar{⁻}{${}^{-}$}% Superscript minus + \newunicodechar{²}{${}^{2}$}% Superscript two + \newunicodechar{³}{${}^{3}$}% Superscript three + +% Hyperlinks (required, but should be loaded last) +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \ifxetex + \usepackage[pagebackref=true]{hyperref} + \else + \usepackage[ps2pdf,pagebackref=true]{hyperref} + \fi +\fi + +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +\usepackage{etoc} +\etocsettocstyle{\doxytocparskip}{\doxynormalparskip} +\renewcommand{\numberline}[1]{#1~} +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large My Project }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.17}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{Hierarchical Index} +\input{hierarchy} +\chapter{Class Index} +\input{annotated} +\chapter{Class Documentation} +\input{classcore_1_1Command} +\input{classcore_1_1CommandList} +\input{classcore_1_1ConsoleServer} +\input{classcore_1_1ConsoleSession} +\input{classcore_1_1EPoll} +\input{classcore_1_1INotify} +\input{classcore_1_1IPAddress} +\input{classcore_1_1IPAddressList} +\input{classcore_1_1Object} +\input{classcore_1_1SessionFilter} +\input{classcore_1_1Socket} +\input{classcore_1_1TCPServer} +\input{classcore_1_1TCPSession} +\input{classcore_1_1TCPSocket} +\input{classcore_1_1TerminalSession} +\input{classcore_1_1Thread} +\input{classcore_1_1Timer} +\input{classcore_1_1TLSServer} +\input{classcore_1_1TLSSession} +\input{classcore_1_1UDPServerSocket} +\input{classcore_1_1UDPSocket} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{\indexname} +\printindex + +\end{document} diff --git a/latex/tabu_doxygen.sty b/latex/tabu_doxygen.sty new file mode 100644 index 0000000..60fd7e8 --- /dev/null +++ b/latex/tabu_doxygen.sty @@ -0,0 +1,2557 @@ +%% +%% This is file `tabu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabu.dtx (with options: `package') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars +%% +%% ********************************************************************************************** +%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal +%% \begin{tabu} to { preamble } => target specified +%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' +%% +%% tabu works in text and in math modes. +%% +%% X columns: automatic width adjustment + horizontal and vertical alignment +%% \begin{tabu} { X[4c] X[1c] X[-2ml] } +%% +%% Horizontal lines and / or leaders: +%% \hline\hline => double horizontal line +%% \firsthline\hline => for nested tabulars +%% \lasthline\hline => for nested tabulars +%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) +%% Automatic lines / leaders : +%% \everyrow{\hline\hline} +%% +%% Vertical lines and / or leaders: +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } +%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } +%% +%% Fixed vertical spacing adjustment: +%% \extrarowheight= \extrarowdepth= +%% or: \extrarowsep= => may be prefixed by \global +%% +%% Dynamic vertical spacing adjustment: +%% \abovetabulinesep= \belowtabulinesep= +%% or: \tabulinesep= => may be prefixed by \global +%% +%% delarray.sty shortcuts: in math and text modes +%% \begin{tabu} .... \({ preamble }\) +%% +%% Algorithms reports: +%% \tracingtabu=1 \tracingtabu=2 +%% +%% ********************************************************************************************** +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% +%% This work consists of the main source file tabu.dtx +%% and the derived files +%% tabu.sty, tabu.pdf, tabu.ins +%% +%% tabu : Flexible LaTeX tabulars +%% lppl copyright 2010-2011 by FC +%% + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] +\RequirePackage{array}[2008/09/09] +\RequirePackage{varwidth}[2009/03/30] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewriting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewriting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewriting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Compatibility with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environment}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'.