diff --git a/TCPSession.cpp b/TCPSession.cpp
index b122ac9..40c2dbd 100644
--- a/TCPSession.cpp
+++ b/TCPSession.cpp
@@ -73,7 +73,6 @@ namespace core {
void TCPSession::onLineReceived(std::string line) {
coreutils::Log(coreutils::LOG_DEBUG_3) << "[" << line << "]";
-
protocol(line);
send();
if(term)
@@ -86,6 +85,10 @@ namespace core {
shutdown("termination requested");
}
+ void TCPSession::onBlockReceived(std::string block) {
+
+ }
+
void TCPSession::sendToAll() {
for(auto session : server.sessions)
if(session != this)
diff --git a/TCPSession.h b/TCPSession.h
index aa3c0d2..6fb4e98 100644
--- a/TCPSession.h
+++ b/TCPSession.h
@@ -7,8 +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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __CommandList_h__
+
2 #define __CommandList_h__
+
+
4 #include "TCPSession.h"
+
+
+
+
+
+
+
+
+
+
+
+
26 void add (
Command &command, std::string name =
"" );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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: 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
6 #include "TCPSession.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
40 virtual bool check (std::string request);
+
+
+
+
+
+
61 virtual void output (Session *session);
+
+
+
+
+
74 std::string getName();
+
+
+
+
+
+
+
+
+
+
+Definition: TCPSession.h:26
+virtual bool check(std::string request)
Definition: Command.cpp:13
+virtual void output(Session *session)
Definition: Command.cpp:11
+
+virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:7
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __ConsoleServer_h__
+
2 #define __ConsoleServer_h__
+
+
+
+
+
+
8 #include "LogListener.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
33 void logSend(std::string out)
override ;
+
+
+
+
+
+
+
+
+
+Definition: TCPSession.h:26
+Definition: IPAddress.h:9
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __ConsoleSession_h__
+
2 #define __ConsoleSession_h__
+
+
4 #include "TerminalSession.h"
+
5 #include "TCPSession.h"
+
6 #include "CommandList.h"
+
+
+
+
+
+
+
+
+
+
+
24 void writeLog(std::string data);
+
+
+
27 void protocol (std::string data)
override ;
+
+
+
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);
+
+
+
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7 #include "TCPSession.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
115 void resetSocket(
Socket *socket);
+
+
+
+
+
+
121 std::vector<Thread> threads;
+
122 volatile bool terminateThreads;
+
123 void enableSocket(
Socket *socket);
+
124 void disableSocket(
Socket *socket);
+
+
+
+
+
+
+
+
+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
+
+bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:77
+
+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
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
15 int addWatch(std::string watch);
+
16 void removeWatch(
int wd);
+
+
18 void onDataReceived(
char *buffer,
int len)
override ;
+
+
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) {}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __IPAddressList_h__
+
2 #define __IPAddressList_h__
+
+
+
+
+
+
+
+
+
+
+
+
14 std::map<std::string, IPAddress> getList();
+
+
+
17 bool contains(std::string ipAddress);
+
+
+
20 std::map<std::string, IPAddress> list;
+
21 std::map<std::string, IPAddress>::iterator it = list.begin();
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __IPAddress_h__
+
2 #define __IPAddress_h__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
17 struct sockaddr_in addr;
+
18 socklen_t addressLength;
+
+
20 struct sockaddr * getPointer();
+
+
+
+
+
+
+
+
+
+
+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
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __SessionFilter_h__
+
2 #define __SessionFilter_h__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Definition: SessionFilter.h:10
+Definition: TCPSession.h:26
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
58 void shutdown (std::string text =
"unknown" );
+
+
+
+
+
+
+
+
+
+
+
85 int write (std::string data);
+
86 void write (
char *buffer,
int length);
+
+
88 void output(std::stringstream &out);
+
+
+
+
+
+
100 virtual void onUnregister();
+
+
+
+
+
+
+
+
+
+
+
+
+
119 bool shutDown =
false ;
+
+
121 void setBufferSize(
int length);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
156 virtual void receiveData (
char *buffer,
int bufferLength);
+
+
+
+
+
+
+
+
164 bool readHangup =
false ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
189 std::queue<std::string> fifo;
+
+
+
+
+
+
+
+
+
+int write(std::string data)
Definition: Socket.cpp:155
+
+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
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __TCPServer_h__
+
2 #define __TCPServer_h__
+
+
+
+
6 #include "IPAddressList.h"
+
+
8 #include "CommandList.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
62 void removeFromSessionList(
TCPSession *session);
+
+
64 virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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: 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
5 #include "SessionFilter.h"
+
+
+
+
+
10 enum Mode {LINE, BLOCK, PACKET};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
44 virtual void output (std::stringstream &data);
+
+
+
50 std::stringstream
out ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
145 virtual void protocol (std::string data);
+
+
+
154 void setMode (core::Mode mode,
int size = 0);
+
+
+
157 char *lineBuffer = NULL;
+
158 int lineBufferSize = 0;
+
+
+
+
+
163 core::Mode mode = LINE;
+
+
+
+
+
+
+
+
+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
+
+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: 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __TCPSocket_h__
+
2 #define __TCPSocket_h__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
39 virtual void output (std::stringstream &out);
+
+
+
+
+
+
+
+Definition: IPAddress.h:9
+
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef TLSServerSocket_h__
+
2 #define TLSServerSocket_h__
+
+
+
+
+
7 #include "TCPSession.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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" ;
+
+
+
+
+
+
+
+Definition: TCPSession.h:26
+Definition: IPAddress.h:9
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __TLSSession_h__
+
2 #define __TLSSession_h__
+
+
+
5 #include "TCPSession.h"
+
+
7 #include <openssl/ssl.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
37 virtual void output (std::stringstream &
out );
+
38 virtual void protocol (std::string data)
override ;
+
+
+
41 void receiveData (
char *buffer,
int bufferLength)
override ;
+
+
+
+
+
46 bool initialized =
false ;
+
+
+
+
+
+
+
+
+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
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
5 #include "TLSSession.h"
+
+
+
+
+
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;
+
+
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;
+
+
28 static const char esc = 0x1b;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
55 void setColor(
int color);
+
56 void setBackColor(
int color);
+
+
+
59 void NextLine(
int lines);
+
60 void PreviousLine(
int lines);
+
61 void scrollArea(
int start,
int end);
+
+
+
+
+
+
+
+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: 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
7 #include "TCPSession.h"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
33 std::string getStatus();
+
+
+
36 void output(std::stringstream &data);
+
+
+
+
+
+
+
43 void print_thread_start_log();
+
+
+
+
+
+
+
+
+
+
+
+void start()
Definition: Thread.cpp:10
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
59 void onDataReceived(std::string data)
override ;
+
+
+
+
+
+
+
+
+
+
+double getElapsed()
Definition: Timer.cpp:47
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef __UDPServerSocket_h__
+
2 #define __UDPServerSocket_h__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
33 int processCommand(std::string request, std::stringstream &data);
+
+
+
+
+
+
39 std::vector<Session *> sessions;
+
+
+
+
+
+
+
+
+
+
+Definition: UDPSocket.h:8
+
+void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Definition: UDPSocket.h:8
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+
+
+
diff --git a/html/bc_s.png b/html/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/html/bc_s.png differ
diff --git a/html/bdwn.png b/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/html/bdwn.png differ
diff --git a/html/classcore_1_1Command-members.html b/html/classcore_1_1Command-members.html
new file mode 100644
index 0000000..6a7b630
--- /dev/null
+++ b/html/classcore_1_1Command-members.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::Command , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <Command.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+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 ()
+
+
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
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.
+
+
+
◆ 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
+
+ request The 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
+
+ session The session that will receive the output.
+
+
+
+
+
+
+
+
◆ processCommand()
+
+
+
+
+
+
+
+
+ int core::Command::processCommand
+ (
+ std::string
+ request ,
+
+
+
+
+ TCPSession *
+ session ,
+
+
+
+
+ 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
+
+ request The request that was entered by the user to invoke this command.
+ session Specify 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
+
+ name Specify 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::CommandList , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <CommandList.h >
+
+
+
+
+
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
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.
+
+
+
◆ add()
+
+
+
+
+
+ void core::CommandList::add
+ (
+ Command &
+ command ,
+
+
+
+
+ std::string
+ name = ""
+
+
+
+ )
+
+
+
+
+
Add a new command to the command list and assign a default search value.
+
+
+
+
+
◆ grabInput()
+
+
+
+
+
+ bool core::CommandList::grabInput
+ (
+ TCPSession *
+ session ,
+
+
+
+
+ Command &
+ command
+
+
+
+ )
+
+
+
+
+
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 ,
+
+
+
+
+ TCPSession *
+ session ,
+
+
+
+
+ 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
+
+ request The request that was entered by the user to invoke this command.
+ session Specify 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 ,
+
+
+
+
+ TCPSession *
+ session ,
+
+
+
+
+ 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
+ (
+ Command &
+ command )
+
+
+
+
+
Remove a command object from the command list.
+
+
+
+
+
+
◆ 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 0000000..ca8d771
Binary files /dev/null and b/html/classcore_1_1CommandList__coll__graph.png differ
diff --git a/html/classcore_1_1CommandList__inherit__graph.map b/html/classcore_1_1CommandList__inherit__graph.map
new file mode 100644
index 0000000..200177c
--- /dev/null
+++ b/html/classcore_1_1CommandList__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
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 0000000..ca8d771
Binary files /dev/null and b/html/classcore_1_1CommandList__inherit__graph.png differ
diff --git a/html/classcore_1_1Command__coll__graph.map b/html/classcore_1_1Command__coll__graph.map
new file mode 100644
index 0000000..26e669e
--- /dev/null
+++ b/html/classcore_1_1Command__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
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 0000000..57336c4
Binary files /dev/null and b/html/classcore_1_1Command__coll__graph.png differ
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 0000000..e67963a
Binary files /dev/null and b/html/classcore_1_1Command__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::ConsoleServer , including all inherited members.
+
+ blackList core::TCPServer
+ check (std::string request)core::Command virtual
+ commands core::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::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ getDescriptor ()core::Socket
+ getName () (defined in core::Command )core::Command
+ getSocketAccept (EPoll &ePoll) overridecore::ConsoleServer virtual
+ 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::TCPServer protected virtual
+ onDataReceived (char *buffer, int len) (defined in core::Socket )core::Socket protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered ()core::Socket virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ output (TCPSession *session)core::TCPServer
+ core::TCPSocket::output (std::stringstream &out)core::TCPSocket virtual
+ core::Command::output (Session *session)core::Command virtual
+ processCommand (std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServer protected virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ 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::TCPServer virtual
+ sessions core::TCPServer
+ setBufferSize (int length) (defined in core::Socket )core::Socket protected
+ setDescriptor (int descriptor)core::Socket
+ setName (std::string name)core::Command
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+ whiteList core::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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ ConsoleServer (EPoll &ePoll, IPAddress address)
+
+
+void logSend (std::string out) override
+
+TCPSession * getSocketAccept (EPoll &ePoll) override
+
+
+ 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.
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+virtual void output (std::stringstream &out)
+
+
+ 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 ()
+
+
+
+
+
◆ getSocketAccept()
+
+
+
+
+
+
+
+
+ TCPSession * core::ConsoleServer::getSocketAccept
+ (
+ EPoll &
+ epoll )
+
+
+
+
+
+override 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 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 0000000..ad06b50
Binary files /dev/null and b/html/classcore_1_1ConsoleServer__coll__graph.png differ
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 0000000..4085d3c
Binary files /dev/null and b/html/classcore_1_1ConsoleServer__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ 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::TCPSession protected virtual
+ onConnected ()core::TCPSession protected virtual
+ onDataReceived (char *data, int len) overridecore::TCPSession protected virtual
+ core::TCPSocket::onDataReceived (std::string data)core::Socket protected virtual
+ onLineReceived (std::string line)core::TCPSession protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered () overridecore::TCPSession protected virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ out core::TCPSession
+ output (std::stringstream &data)core::TCPSession virtual
+ PreviousLine (int lines) (defined in core::TerminalSession )core::TerminalSession
+ protocol (std::string data) overridecore::ConsoleSession protected virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ 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::Socket protected
+ 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::TCPSession protected
+ shutdown (std::string text="unknown")core::Socket
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <ConsoleSession.h >
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ ConsoleSession (EPoll &ePoll, TCPServer &server)
+
+
+void writeLog (std::string data)
+
+
+
+ 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)
+
+
+
+ TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
+
+virtual void output (std::stringstream &data)
+
+void send ()
+
+void sendToAll ()
+
+void sendToAll (SessionFilter filter)
+
+void terminate ()
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+
+ 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 ()
+
+
+
+
+
+Command * grab = NULL
+
+std::stringstream out
+
+
+TCPServer & server
+
+
+
+IPAddress ipAddress
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
◆ protocol()
+
+
+
+
+
+
+
+
+ void core::ConsoleSession::protocol
+ (
+ std::string
+ data = ""
)
+
+
+
+
+
+override protected 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 '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 0000000..9a8daa3
Binary files /dev/null and b/html/classcore_1_1ConsoleSession__coll__graph.png differ
diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.map b/html/classcore_1_1ConsoleSession__inherit__graph.map
new file mode 100644
index 0000000..030333b
--- /dev/null
+++ b/html/classcore_1_1ConsoleSession__inherit__graph.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
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 0000000..36ff183
Binary files /dev/null and b/html/classcore_1_1ConsoleSession__inherit__graph.png differ
diff --git a/html/classcore_1_1EPoll-members.html b/html/classcore_1_1EPoll-members.html
new file mode 100644
index 0000000..b3f4c0e
--- /dev/null
+++ b/html/classcore_1_1EPoll-members.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::EPoll , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <EPoll.h >
+
+
+
+
+
+
+int maxSockets
+ The maximum number of socket allowed. More...
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
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.
+
+
+
◆ EPoll()
+
+
+
+
+
+ core::EPoll::EPoll
+ (
+ )
+
+
+
+
+
The constructor for the BMAEPoll object.
+
+
+
+
+
◆ ~EPoll()
+
+
+
+
+
+ core::EPoll::~EPoll
+ (
+ )
+
+
+
+
+
The destructor for the BMAEPoll object.
+
+
+
+
+
+
◆ 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 ,
+
+
+
+
+ TCPSession *
+ session ,
+
+
+
+
+ std::stringstream &
+ data
+
+
+
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
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
+
+ session the session to write the requested data to.
+
+
+
+
+
Reimplemented from core::Command .
+
+
+
+
+
◆ registerSocket()
+
+
+
+
+
+ bool core::EPoll::registerSocket
+ (
+ Socket *
+ socket )
+
+
+
+
+
+
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
+
+ socket a 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
+
+ numberOfThreads the number of threads to start for processing epoll entries.
+ maxSockets the 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
+ (
+ Socket *
+ socket )
+
+
+
+
+
+
Unregister a BMASocket from monitoring by BMAEPoll.
+
Use this method to remove a socket from receiving events from the epoll system.
+
+
+
+
+
+
◆ 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 0000000..061b13e
Binary files /dev/null and b/html/classcore_1_1EPoll__coll__graph.png differ
diff --git a/html/classcore_1_1EPoll__inherit__graph.map b/html/classcore_1_1EPoll__inherit__graph.map
new file mode 100644
index 0000000..affec7a
--- /dev/null
+++ b/html/classcore_1_1EPoll__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
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 0000000..061b13e
Binary files /dev/null and b/html/classcore_1_1EPoll__inherit__graph.png differ
diff --git a/html/classcore_1_1INotify-members.html b/html/classcore_1_1INotify-members.html
new file mode 100644
index 0000000..40cdcec
--- /dev/null
+++ b/html/classcore_1_1INotify-members.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::INotify , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ 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 0000000..5f894a0
Binary files /dev/null and b/html/classcore_1_1INotify__coll__graph.png differ
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 0000000..61d35b9
Binary files /dev/null and b/html/classcore_1_1INotify__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::IPAddress , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+struct sockaddr_in addr
+
+
+socklen_t addressLength
+
+
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::IPAddressList , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+std::map< std::string, IPAddress > getList ()
+
+
+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 0000000..e76df2d
Binary files /dev/null and b/html/classcore_1_1IPAddress__coll__graph.png differ
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 0000000..e76df2d
Binary files /dev/null and b/html/classcore_1_1IPAddress__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::Object , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+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 0000000..552aaee
Binary files /dev/null and b/html/classcore_1_1Object__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::SessionFilter , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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 0000000..e4d8ab9
Binary files /dev/null and b/html/classcore_1_1SessionFilter__coll__graph.png differ
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 0000000..e4d8ab9
Binary files /dev/null and b/html/classcore_1_1SessionFilter__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::Socket , including all inherited members.
+
+
+
+
+
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 >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+ 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 ()
+
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
+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)
+
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
◆ Socket()
+
+
+
+
+
+ core::Socket::Socket
+ (
+ EPoll &
+ ePoll ,
+
+
+
+
+ std::string
+ text = ""
+
+
+
+ )
+
+
+
+
+
Constructor
+
Parameters
+
+ ePoll The EPoll socket descriptor.
+ text A title for this socket.
+
+
+
+
+
+
+
+
◆ ~Socket()
+
+
+
+
+
+ core::Socket::~Socket
+ (
+ )
+
+
+
+
+
+
+
+
◆ 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 )
+
+
+
+
+
+protected virtual
+
+
+
+
+
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
+
+ data the 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
+
+
+
+ )
+
+
+
+
+
+protected virtual
+
+
+
+
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 0000000..7ab598d
Binary files /dev/null and b/html/classcore_1_1Socket__coll__graph.png differ
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 0000000..1ba81bf
Binary files /dev/null and b/html/classcore_1_1Socket__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::TCPServer , including all inherited members.
+
+ blackList core::TCPServer
+ check (std::string request)core::Command virtual
+ commands core::TCPServer
+ connect (IPAddress &address) (defined in core::TCPSocket )core::TCPSocket
+ ePoll (defined in core::Socket )core::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ getDescriptor ()core::Socket
+ getName () (defined in core::Command )core::Command
+ getSocketAccept (EPoll &epoll)core::TCPServer virtual
+ 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::TCPServer protected virtual
+ onDataReceived (char *buffer, int len) (defined in core::Socket )core::Socket protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered ()core::Socket virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ output (TCPSession *session)core::TCPServer
+ core::TCPSocket::output (std::stringstream &out)core::TCPSocket virtual
+ core::Command::output (Session *session)core::Command virtual
+ processCommand (std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServer protected virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ 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::TCPServer virtual
+ sessions core::TCPServer
+ setBufferSize (int length) (defined in core::Socket )core::Socket protected
+ setDescriptor (int descriptor)core::Socket
+ setName (std::string name)core::Command
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+ whiteList core::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 >
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+ TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
+
+ ~TCPServer ()
+
+
+void removeFromSessionList (TCPSession *session)
+
+
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
+
+virtual TCPSession * getSocketAccept (EPoll &epoll)
+
+
+void output (TCPSession *session)
+ Output the consoles array to the console.
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+virtual void output (std::stringstream &out)
+
+
+ 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 ()
+
+
+
+void onDataReceived (std::string data) override
+
+int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
+
+
+
+void setBufferSize (int length)
+
+
+int getBufferSize ()
+
+
+virtual void onDataReceived (char *buffer, int len)
+
+virtual void receiveData (char *buffer, int bufferLength)
+
+
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
◆ TCPServer()
+
+
+
+
+
+ core::TCPServer::TCPServer
+ (
+ EPoll &
+ ePoll ,
+
+
+
+
+ IPAddress
+ address ,
+
+
+
+
+ std::string
+ text = ""
+
+
+
+ )
+
+
+
+
+
The constructor for the BMATCPSocket object.
+
Parameters
+
+ ePoll the EPoll instance that manages the socket.
+ url the IP address for the socket to receive connection requests.
+ port the port number that the socket will listen on.
+ commandName the 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.
+
+
+
+
+
+
◆ getSocketAccept()
+
+
+
+
+
+
+
+
+ TCPSession * core::TCPServer::getSocketAccept
+ (
+ EPoll &
+ epoll )
+
+
+
+
+
+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 )
+
+
+
+
+
+override protected virtual
+
+
+
+
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
+
+ data the pointer to the buffer containing the received data.
+ length the length of the associated data buffer.
+
+
+
+
+
Reimplemented from core::Socket .
+
+
+
+
+
◆ processCommand()
+
+
+
+
+
+
+
+
+ int core::TCPServer::processCommand
+ (
+ std::string
+ command ,
+
+
+
+
+ TCPSession *
+ session ,
+
+
+
+
+ std::stringstream &
+ data
+
+
+
+ )
+
+
+
+
+
+override protected virtual
+
+
+
+
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
+
+ the session object to write the output to.
+
+
+
+
+
Reimplemented from core::Command .
+
+
+
+
+
+
◆ 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
+
+
+
+
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
+
+
+
+
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 0000000..4eb609a
Binary files /dev/null and b/html/classcore_1_1TCPServer__coll__graph.png differ
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 0000000..7d525fc
Binary files /dev/null and b/html/classcore_1_1TCPServer__inherit__graph.png differ
diff --git a/html/classcore_1_1TCPSession-members.html b/html/classcore_1_1TCPSession-members.html
new file mode 100644
index 0000000..c097af0
--- /dev/null
+++ b/html/classcore_1_1TCPSession-members.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::TCPSession , including all inherited members.
+
+
+
+
+
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 >
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
+
+virtual void output (std::stringstream &data)
+
+void send ()
+
+void sendToAll ()
+
+void sendToAll (SessionFilter filter)
+
+void terminate ()
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+
+ 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 ()
+
+
+
+
+Command * grab = NULL
+
+std::stringstream out
+
+
+TCPServer & server
+
+
+
+IPAddress ipAddress
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
+
◆ onBlockReceived()
+
+
+
+
+
+
+
+
+ void core::TCPSession::onBlockReceived
+ (
+ std::string
+ block )
+
+
+
+
+
+protected virtual
+
+
+
+
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
+ (
+ )
+
+
+
+
+
+protected 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.
+
+
+
+
+
◆ onDataReceived()
+
+
+
+
+
+
+
+
+ void core::TCPSession::onDataReceived
+ (
+ char *
+ data ,
+
+
+
+
+ int
+ len
+
+
+
+ )
+
+
+
+
+
+override protected 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 onLineReceived method instead.
+
+
Reimplemented from core::Socket .
+
+
+
+
+
◆ onLineReceived()
+
+
+
+
+
+
+
+
+ void core::TCPSession::onLineReceived
+ (
+ std::string
+ line )
+
+
+
+
+
+protected virtual
+
+
+
+
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
+ (
+ )
+
+
+
+
+
+override protected virtual
+
+
+
+
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 = ""
)
+
+
+
+
+
+protected 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 '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 .
+
+
+
+
+
+
◆ 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 0000000..5ef707c
Binary files /dev/null and b/html/classcore_1_1TCPSession__coll__graph.png differ
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 0000000..77ca0b1
Binary files /dev/null and b/html/classcore_1_1TCPSession__inherit__graph.png differ
diff --git a/html/classcore_1_1TCPSocket-members.html b/html/classcore_1_1TCPSocket-members.html
new file mode 100644
index 0000000..5fbb1fc
--- /dev/null
+++ b/html/classcore_1_1TCPSocket-members.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::TCPSocket , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <TCPSocket.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+virtual void output (std::stringstream &out)
+
+
+ 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 ()
+
+
+
+
+IPAddress ipAddress
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
+
+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)
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
◆ 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 0000000..3502a16
Binary files /dev/null and b/html/classcore_1_1TCPSocket__coll__graph.png differ
diff --git a/html/classcore_1_1TCPSocket__inherit__graph.map b/html/classcore_1_1TCPSocket__inherit__graph.map
new file mode 100644
index 0000000..808f29b
--- /dev/null
+++ b/html/classcore_1_1TCPSocket__inherit__graph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000..a32bf5c
Binary files /dev/null and b/html/classcore_1_1TCPSocket__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::TLSServer , including all inherited members.
+
+ blackList core::TCPServer
+ check (std::string request)core::Command virtual
+ commands core::TCPServer
+ connect (IPAddress &address) (defined in core::TCPSocket )core::TCPSocket
+ ctx (defined in core::TLSServer )core::TLSServer
+ ePoll (defined in core::Socket )core::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ getDescriptor ()core::Socket
+ getName () (defined in core::Command )core::Command
+ getSocketAccept () (defined in core::TLSServer )core::TLSServer
+ core::TCPServer::getSocketAccept (EPoll &epoll)core::TCPServer virtual
+ 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::TCPServer protected virtual
+ onDataReceived (char *buffer, int len) (defined in core::Socket )core::Socket protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered ()core::Socket virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ output (TCPSession *session)core::TCPServer
+ core::TCPSocket::output (std::stringstream &out)core::TCPSocket virtual
+ core::Command::output (Session *session)core::Command virtual
+ processCommand (std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServer protected virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ 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::TCPServer virtual
+ sessions core::TCPServer
+ setBufferSize (int length) (defined in core::Socket )core::Socket protected
+ setDescriptor (int descriptor)core::Socket
+ setName (std::string name)core::Command
+ shutdown (std::string text="unknown")core::Socket
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+ whiteList core::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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <TLSServer.h >
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+ TLSServer (EPoll &ePoll, IPAddress address)
+
+ ~TLSServer ()
+
+
+TCPSession * getSocketAccept ()
+
+
+ TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
+
+ ~TCPServer ()
+
+
+void removeFromSessionList (TCPSession *session)
+
+
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
+
+virtual TCPSession * getSocketAccept (EPoll &epoll)
+
+
+void output (TCPSession *session)
+ Output the consoles array to the console.
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+virtual void output (std::stringstream &out)
+
+
+ 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 ()
+
+
+
+
+void onDataReceived (std::string data) override
+
+int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
+
+
+
+void setBufferSize (int length)
+
+
+int getBufferSize ()
+
+
+virtual void onDataReceived (char *buffer, int len)
+
+virtual void receiveData (char *buffer, int bufferLength)
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
TLSServer
+
Manage a socket connection as a TLS server type. Connections to the socket are processed through the accept functionality.
+
+
+
◆ TLSServer()
+
+
+
+
+
+ core::TLSServer::TLSServer
+ (
+ EPoll &
+ ePoll ,
+
+
+
+
+ IPAddress
+ address
+
+
+
+ )
+
+
+
+
+
The constructor.
+
Parameters
+
+ ePoll the BMAEPoll instance that manages the socket.
+ url the IP address for the socket to receive connection requests.
+ port the port number that the socket will listen on.
+ commandName the 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 0000000..a772b23
Binary files /dev/null and b/html/classcore_1_1TLSServer__coll__graph.png differ
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 0000000..c2b3873
Binary files /dev/null and b/html/classcore_1_1TLSServer__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::TLSSession , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <TLSSession.h >
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ TLSSession (EPoll &ePoll, TCPServer &server)
+
+virtual void output (std::stringstream &out )
+
+virtual void protocol (std::string data) override
+
+
+
+ TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
+
+void send ()
+
+void sendToAll ()
+
+void sendToAll (SessionFilter filter)
+
+void terminate ()
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+
+ 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 ()
+
+
+
+
+
+Command * grab = NULL
+
+std::stringstream out
+
+
+TCPServer & server
+
+
+
+IPAddress ipAddress
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
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.
+
+
+
◆ onRegister()
+
+
+
+
+
+
+
+
+ void core::TLSSession::onRegister
+ (
+ )
+
+
+
+
+
+protected 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 from core::Socket .
+
+
+
+
+
◆ onRegistered()
+
+
+
+
+
+
+
+
+ void core::TLSSession::onRegistered
+ (
+ )
+
+
+
+
+
+protected virtual
+
+
+
+
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 )
+
+
+
+
+
+override 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 '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
+
+
+
+ )
+
+
+
+
+
+override protected virtual
+
+
+
+
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 0000000..0c9fe79
Binary files /dev/null and b/html/classcore_1_1TLSSession__coll__graph.png differ
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 0000000..37d6c7f
Binary files /dev/null and b/html/classcore_1_1TLSSession__inherit__graph.png differ
diff --git a/html/classcore_1_1TerminalSession-members.html b/html/classcore_1_1TerminalSession-members.html
new file mode 100644
index 0000000..75bd75b
--- /dev/null
+++ b/html/classcore_1_1TerminalSession-members.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ 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::TCPSession protected virtual
+ onConnected ()core::TCPSession protected virtual
+ onDataReceived (char *data, int len) overridecore::TCPSession protected virtual
+ core::TCPSocket::onDataReceived (std::string data)core::Socket protected virtual
+ onLineReceived (std::string line)core::TCPSession protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered () overridecore::TCPSession protected virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ out core::TCPSession
+ output (std::stringstream &data)core::TCPSession virtual
+ PreviousLine (int lines) (defined in core::TerminalSession )core::TerminalSession
+ protocol (std::string data)core::TCPSession protected virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ 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::Socket protected
+ 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::TCPSession protected
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ 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)
+
+
+
+ TCPSession (EPoll &ePoll, TCPServer &server, std::string text="")
+
+virtual void output (std::stringstream &data)
+
+void send ()
+
+void sendToAll ()
+
+void sendToAll (SessionFilter filter)
+
+void terminate ()
+
+
+
+ TCPSocket (EPoll &ePoll)
+
+
+ TCPSocket (EPoll &ePoll, std::string text)
+
+
+void connect (IPAddress &address)
+
+
+ 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 ()
+
+
+
+
+
+Command * grab = NULL
+
+std::stringstream out
+
+
+TCPServer & server
+
+
+
+IPAddress ipAddress
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+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)
+
+
+
+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)
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
+
◆ clear()
+
+
+
+
+
+ void core::TerminalSession::clear
+ (
+ )
+
+
+
+
+
+
+
◆ 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 0000000..5237504
Binary files /dev/null and b/html/classcore_1_1TerminalSession__coll__graph.png differ
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 0000000..bae96c3
Binary files /dev/null and b/html/classcore_1_1TerminalSession__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::Thread , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <Thread.h >
+
+
+
+
+
+
+
+ Thread (EPoll &ePoll)
+
+void start ()
+
+
+void join ()
+
+
+std::string getStatus ()
+
+
+pid_t getThreadId ()
+
+
+int getCount ()
+
+
+void output (std::stringstream &data)
+
+
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
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.
+
+
+
◆ 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 0000000..a87930b
Binary files /dev/null and b/html/classcore_1_1Thread__coll__graph.png differ
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 0000000..a87930b
Binary files /dev/null and b/html/classcore_1_1Thread__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::Timer , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <Timer.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
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.
+
+
+
◆ 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
+ (
+ )
+
+
+
+
+
+protected pure 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
+
+ delay the 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 0000000..40de967
Binary files /dev/null and b/html/classcore_1_1Timer__coll__graph.png differ
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 0000000..c327658
Binary files /dev/null and b/html/classcore_1_1Timer__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::UDPServerSocket , including all inherited members.
+
+ check (std::string request)core::Command virtual
+ ePoll (defined in core::Socket )core::Socket protected
+ eventReceived (struct epoll_event event)core::Socket
+ getBufferSize () (defined in core::Socket )core::Socket protected
+ 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::UDPServerSocket protected virtual
+ onDataReceived (char *buffer, int len) (defined in core::Socket )core::Socket protected virtual
+ onRegister ()core::Socket virtual
+ onRegistered ()core::Socket virtual
+ onUnregister () (defined in core::Socket )core::Socket virtual
+ onUnregistered ()core::Socket virtual
+ output (std::stringstream &out) (defined in core::Socket )core::Socket
+ core::Command::output (Session *session)core::Command virtual
+ processCommand (std::string request, std::stringstream &data) (defined in core::UDPServerSocket )core::UDPServerSocket protected
+ core::Command::processCommand (std::string request, TCPSession *session, std::stringstream &data)core::Command virtual
+ receiveData (char *buffer, int bufferLength)core::Socket protected virtual
+ reset (defined in core::Socket )core::Socket
+ sessions (defined in core::UDPServerSocket )core::UDPServerSocket protected
+ setBufferSize (int length) (defined in core::Socket )core::Socket protected
+ setDescriptor (int descriptor)core::Socket
+ setName (std::string name)core::Command
+ shutdown (std::string text="unknown")core::Socket
+ shutDown (defined in core::Socket )core::Socket protected
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <UDPServerSocket.h >
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ UDPServerSocket (EPoll &ePoll, std::string url, short int port, std::string commandName)
+
+
+
+ UDPSocket (EPoll &ePoll)
+
+
+ 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 ()
+
+
+
+void onDataReceived (std::string data) override
+ Called when data is received from the socket. More...
+
+
+int processCommand (std::string request, std::stringstream &data)
+
+
+
+void setBufferSize (int length)
+
+
+int getBufferSize ()
+
+
+virtual void onDataReceived (char *buffer, int len)
+
+virtual void receiveData (char *buffer, int bufferLength)
+
+
+
+
+std::vector< Session * > sessions
+
+
+
+EPoll & ePoll
+
+
+bool shutDown = false
+
+
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+
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.
+
+
+
◆ onDataReceived()
+
+
+
+
+
+
+
+
+ void core::UDPServerSocket::onDataReceived
+ (
+ std::string
+ data )
+
+
+
+
+
+override protected virtual
+
+
+
+
+
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
+
+ data the 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 0000000..d9f1891
Binary files /dev/null and b/html/classcore_1_1UDPServerSocket__coll__graph.png differ
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 0000000..3b295d6
Binary files /dev/null and b/html/classcore_1_1UDPServerSocket__inherit__graph.png differ
diff --git a/html/classcore_1_1UDPSocket-members.html b/html/classcore_1_1UDPSocket-members.html
new file mode 100644
index 0000000..bebe9b5
--- /dev/null
+++ b/html/classcore_1_1UDPSocket-members.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+My Project: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for core::UDPSocket , including all inherited members.
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+ UDPSocket (EPoll &ePoll)
+
+
+ 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 ()
+
+
+
+
+
+bool reset = false
+
+
+
+std::string name
+
+
+std::string tag
+
+
+
+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)
+
+
+
+EPoll & ePoll
+
+
+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 0000000..ec31c20
Binary files /dev/null and b/html/classcore_1_1UDPSocket__coll__graph.png differ
diff --git a/html/classcore_1_1UDPSocket__inherit__graph.map b/html/classcore_1_1UDPSocket__inherit__graph.map
new file mode 100644
index 0000000..fd57100
--- /dev/null
+++ b/html/classcore_1_1UDPSocket__inherit__graph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
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 0000000..0763d06
Binary files /dev/null and b/html/classcore_1_1UDPSocket__inherit__graph.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/html/closed.png b/html/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/html/closed.png differ
diff --git a/html/doc.png b/html/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/html/doc.png differ
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 0000000..3ff17d8
Binary files /dev/null and b/html/doxygen.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000..bb8ab35
Binary files /dev/null and b/html/folderclosed.png differ
diff --git a/html/folderopen.png b/html/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/html/folderopen.png differ
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 -
+onBlockReceived()
+: core::TCPSession
+
+onConnected()
+: core::TCPSession
+
+onDataReceived()
+: core::Socket
+, core::TCPServer
+, core::TCPSession
+, core::UDPServerSocket
+
+onLineReceived()
+: core::TCPSession
+
+onRegister()
+: core::Socket
+, core::TLSSession
+
+onRegistered()
+: core::Socket
+, core::TCPSession
+, core::TLSSession
+
+onTimeout()
+: core::Timer
+
+onUnregistered()
+: core::Socket
+
+out
+: core::TCPSession
+
+output()
+: core::Command
+, core::TCPServer
+, core::TCPSession
+, core::TCPSocket
+, core::TLSSession
+
+
+
+
+
- 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 -
+onBlockReceived()
+: core::TCPSession
+
+onConnected()
+: core::TCPSession
+
+onDataReceived()
+: core::Socket
+, core::TCPServer
+, core::TCPSession
+, core::UDPServerSocket
+
+onLineReceived()
+: core::TCPSession
+
+onRegister()
+: core::Socket
+, core::TLSSession
+
+onRegistered()
+: core::Socket
+, core::TCPSession
+, core::TLSSession
+
+onTimeout()
+: core::Timer
+
+onUnregistered()
+: core::Socket
+
+output()
+: core::Command
+, core::TCPServer
+, core::TCPSession
+, core::TCPSocket
+, core::TLSSession
+
+
+
+
+
- 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This page explains how to interpret the graphs that are generated by doxygen.
+
Consider the following example:
+
class Invisible { };
+
+
+
class Truncated : public Invisible { };
+
+
+
class Undocumented { };
+
+
+
class PublicBase : public Truncated { };
+
+
+
template <class T> class Templ { };
+
+
+
class ProtectedBase { };
+
+
+
class PrivateBase { };
+
+
+
class Used { };
+
+
+
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 0000000..58209e0
Binary files /dev/null and b/html/graph_legend.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the graphical class hierarchy
+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+
+
+
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..6473b4e
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+My Project: Main Page
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000..8d04063
Binary files /dev/null and b/html/inherit_graph_0.png differ
diff --git a/html/inherit_graph_1.map b/html/inherit_graph_1.map
new file mode 100644
index 0000000..d6546c2
--- /dev/null
+++ b/html/inherit_graph_1.map
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000..964edfc
Binary files /dev/null and b/html/inherit_graph_1.png differ
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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=/
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+